This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
vmull_p64 failed to compile on armv8
- From: Lincoln Thurlow <lthurlow at ucsc dot edu>
- To: gcc-help at gcc dot gnu dot org
- Date: Fri, 29 Jul 2016 14:33:44 -0700
- Subject: vmull_p64 failed to compile on armv8
- Authentication-results: sourceware.org; auth=none
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