This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

vmull_p64 failed to compile on armv8


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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]