現時点での最新版は以下のようにしてダウンロードできる。
curl -L https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz | tar xJ
memcpyはデフォルトでSVEを生成できるのだろうか?
void copy_data_scalar(int8_t *dest_data, int8_t *source_data, const int data_num) { memcpy (dest_data, source_data, data_num); }
make memcpy.aarch64 aarch64-none-linux-gnu-gcc -march=armv8-a+sve main.c -o memcpy.aarch64 -static aarch64-none-linux-gnu-objdump -d memcpy.aarch64 > memcpy.aarch64.dmp
どれを使えばSVEが生成されるのだろう?おそらくこのmemcpy_a64fx
だと思われる。
0000000000416ac0 <__memcpy_a64fx>: 416ac0: 0420e3e7 cntb x7 416ac4: eb07045f cmp x2, x7, lsl #1 416ac8: 54000148 b.hi 416af0 <__memcpy_a64fx+0x30> // b.pmore 416acc: 25221ce1 whilelo p1.b, x7, x2 416ad0: 25221fe0 whilelo p0.b, xzr, x2 416ad4: a400a020 ld1b {z0.b}, p0/z, [x1] 416ad8: a401a421 ld1b {z1.b}, p1/z, [x1, #1, mul vl] 416adc: e400e000 st1b {z0.b}, p0, [x0] 416ae0: e401e401 st1b {z1.b}, p1, [x0, #1, mul vl] 416ae4: d65f03c0 ret 416ae8: d503201f nop 416aec: d503201f nop 416af0: eb070c5f cmp x2, x7, lsl #3 416af4: 54000468 b.hi 416b80 <__memcpy_a64fx+0xc0> // b.pmore 416af8: 8b020004 add x4, x0, x2 416afc: 8b020025 add x5, x1, x2