vmull_p64 failed to compile on armv8
Lincoln Thurlow
lthurlow@ucsc.edu
Sat Jul 30 01:49:00 GMT 2016
Hello,
I am trying to use the vmull_p64 instruction. The error I am receiving is:
/usr/lib/gcc/aarch64-linux-gnu/6/include/arm_neon.h: In function ‘__v16u mul128(uint64x1_t, uint64x1_t)’:
/usr/lib/gcc/aarch64-linux-gnu/6/include/arm_neon.h:21892:1: error: inlining failed in call to always_inline ‘poly128_t vmull_p64(poly64_t, poly64_t)’: target specific option mismatch
vmull_p64 (poly64_t a, poly64_t b)
^~~~~~~~~
gf64_vmull.cpp:138:27: note: called from here
res = vmull_p64(a64,b64);
If instead I call __builtin_aarch64_crypto_pmulldi_ppp(a,b) directly from include/arm_neon.h:21933 I’ll get an ICE:
gf64_vmull.cpp:169:1: error: unrecognizable insn:
}
^
(insn 35 34 36 2 (set (reg:TI 93 [ _25 ])
(unspec:TI [
(reg/v:DI 105 [ a64 ])
(reg/v:DI 106 [ b64 ])
] UNSPEC_PMULL)) gf64_vmull.cpp:139 -1
(nil))
gf64_vmull.cpp:169:1: internal compiler error: in extract_insn, at recog.c:2287
I am assuming that this is caused by the fact that the arm device I am using (Odroid-c2) does not support the correct CPU flag (pmull) to execute the instruction vmull_p64 and that is what is meant by gcc’s error: target specific option mismatch, or wether the problem can be solved by using a different flag to pass into gcc.
Output of Odroid-c2’s /proc/cpuinfo
processor : 3
BogoMIPS : 2.00
Features : fp asimd crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
Thank you,
Lincoln
More information about the Gcc-help
mailing list