Adding SIMD support to improve performance of Eclipse OpenJ9 on the AArch64 platform

Thumbnail Image



Journal Title

Journal ISSN

Volume Title


University of New Brunswick


Just-in-time (JIT) compilers achieve application portability and improved management of large code-bases by abstracting the architecture specific details from the programmers. A large number of compiler optimization techniques make this a subject undergoing intense study, over the last few decades. Eclipse OMR is a robust language runtime builder, and Eclipse OpenJ9 is a managed language runtime that consumes OMR. The targeted domains of OMR and OpenJ9 include AArch64, a 64-bit extended version of the ARM architecture. AArch64 features compatibility to the user-space, along with the pre-existing 32-bit AArch32 architecture. AArch64 is a popular member of the embedded computing market, where computing infrastructure resources (i.e., CPU, memory) are constrained. This thesis discusses the steps taken to add Single Instruction Multiple Data (SIMD) support to OMR for AArch64, and relevant OMR tril tests to confirm the appropriate functioning of the implemented mechanisms. The implementation of advanced SIMD and floating-point instructions are also discussed, which cover vectorized mathematical operations, including addition, subtraction, multiplication, and division for supported data-types. We present two microbenchmarks VectorizationMicrobenchmark and Sepia Tone Filter and a set of standard benchmarks, which leverage the OpenJ9 autovectorization process in AArch64. The AArch64 vectorized operations are evaluated against non-vectorized, but similar operations using Eclipse OpenJ9. Our microbenchmarks show improvements of up to four times in execution speed of certain vector arithmetic operations.