Abstract—Due to disjoint memory references and non-aligned memory references, existing SIMD compilers can’t vectorize loops containing indirect array utilizing SIMD (single instruction multiple data) instructions. However, addressing this problem is inevitable, since many important applications extensively use this program pattern to reduce memory and computation requirement. In this paper, we propose a new efficient code generation technique for indirect array. For an irregular indirect array access, we adopt two separately registers to store the array base and the index address. It significantly contributes to the performance improvement by vectorizing more loops and reducing the overheads. We also developed this method in our auto-vectorization compiler SW-VEC. The experimental results show that the proposed method can translate applications within direct array access into high-performance targeted vectorized codes, thereby advancing the execution efficiency adequately.
Index Terms—Code generation, indirect array, vectorization.
The authors are with State Key Laboratory of Mathematical Engineering and Advanced Computing, China (email: {pengyuan_li, pengyuan_li, strollerlin}@163.com, rczhao126@126.com).
[PDF]
Cite:Pengyuan Li, Rongcai Zhao, Qinghua Zhang, and Lin Han, "An SIMD Code Generation Technology for Indirect Array," International Journal of Computer Theory and Engineering vol. 8, no. 3, pp. 218-222, 2016.