在aarch64架构下,内置函数一般是通过指令集扩展(Intrinsic)方式实现的,一些内置函数需要对齐要求,由于aarch64架构的特殊性,未对齐访问不一定会崩溃,但可能导致性能下降。
以下是一些对齐要求示例:
int64x2_t a; int64_t *p = ...; // must be aligned on 16-byte boundary a = vld1q_s64(p); // expected to be fast
int16x8_t x, y; int16_t *p1, *p2; // must be aligned on 8-byte boundary x = vld1q_s16(p1); y = vld1q_s16(p2); x = vaddq_s16(x, y);
因此,在使用aarch64内置函数时,应该注意对齐要求并做好对齐措施,以提高性能。