Parabix (parallel bit stream) technology uses the single-instruction multiple-data (SIMD) capabilities of commodity processors for high-performance text processing. LLVM is a widely-used compiler-infrastructure that includes support for SIMD operations on vectors. This thesis investigates the feasibility of modifying LLVM to incorporate all the SIMD processing requirements of Parabix both to increase the portability of applications and to create additional opportunities to optimize those operations in the context of code generation. Our modifications include redefining type legality and lowering for vectors of small elements as well as insertion of logic to recognize and properly handle Parabix-critical operations. Experiments on the X86/SSE2 architecture show a speedup over the unmodified LLVM of about 300 times for some micro-benchmarks and demonstrate Parabix application performance substantially better than with the unmodified LLVM. We also demonstrate performance scaling in switching from X86/SSE2 to X86/AVX2 without any change in source code.
Copyright is held by the author.
The author granted permission for the file to be printed and for the text to be copied and pasted.
Supervisor or Senior Supervisor
Thesis advisor: Cameron, Robert
Member of collection