Hi Everyone,
I'm working on a early LeMaker HiKey with GCC 4.9.2. I believe everything is fully patched.
I'm using the builtin's because the intrinsics are missing. I lifted it from https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01976.html.
Any ideas on this issue?
hikey$ g++ -march=armv8-a test.cxx -c test.cxx: In function ‘poly128_t VMULL_P64(poly64_t, poly64_t)’: test.cxx:10:1: error: unrecognizable insn: } ^ (insn 9 8 12 2 (set (reg:TI 73 [ D.17869 ]) (unspec:TI [ (reg:DI 75) (reg:DI 76) ] UNSPEC_PMULL)) test.cxx:9 -1 (nil)) test.cxx:10:1: internal compiler error: in extract_insn, at recog.c:2202 Please submit a full bug report,
Thanks in advance.
Jeff
**********
hikey:cryptopp-fork$ cat test.cxx #include <arm_neon.h> #include <arm_acle.h>
#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#if (GCC_VERSION >= 40800) && (GCC_VERSION < 50000) inline poly128_t VMULL_P64(poly64_t a, poly64_t b) { return __builtin_aarch64_crypto_pmulldi_ppp (a, b); }
inline poly128_t VMULL_HIGH_P64(poly64x2_t a, poly64x2_t b) { return __builtin_aarch64_crypto_pmullv2di_ppp (a, b); } #else # define VMULL_P64(a, b) vmull_p64(a, b) # define VMULL_HIGH_P64(a, b) vmull_high_p64(a, b) #endif
int main(int argc, char* argv[]) { const poly64_t a1={0x9090909090909090}, b1={0xb0b0b0b0b0b0b0b0}; const poly8x16_t a2={0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0},
b2={0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0};
const poly128_t r1 = VMULL_P64(a1, b1); const poly128_t r2 = VMULL_HIGH_P64((poly64x2_t)(a2), (poly64x2_t)(b2));
return 0; }
**********
$ cat /proc/cpuinfo Processor : AArch64 Processor rev 3 (aarch64) processor : 0 processor : 1 processor : 2 processor : 3 processor : 4 processor : 5 processor : 6 processor : 7 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 CPU implementer : 0x41 CPU architecture: AArch64 CPU variant : 0x0 CPU part : 0xd03 CPU revision : 3
Hardware : HiKey Development Board
**********
$ gcc --version gcc (Debian/Linaro 4.9.2-10) 4.9.2 Copyright (C) 2014 Free Software Foundation, Inc.
$ lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 8.9 (jessie) Release: 8.9 Codename: jessie