> This program below compiles and executes successfully. It does not > generate an "illegal instruction" like I thought would happen. > > $ cat test.cc > #include <arm_neon.h> > int main(int argc, char* argv[]) > { > __asm__ __volatile__ > ( > ".code 32" > > // CRC using word > ".byte 0x1a, 0xc1, 0x58, 0x00;\n" > // CRC using half word > ".byte 0x1a, 0xc1, 0x54, 0x00;\n" > // CRC using byte > ".byte 0x1a, 0xc1, 0x50, 0x00;\n" > // PMULL > ".byte 0x0e, 0xe1, 0xe0, 0x00;\n" > // PMULL2 > ".byte 0x4e, 0xe1, 0xe0, 0x00;\n" > // AES (aese) > ".byte 0x4e, 0x28, 0x48, 0x20;\n" > // AES (aesd) > ".byte 0x4e, 0x28, 0x58, 0x20;\n" > // SHA1 (sha1c) > ".byte 0x5e, 0x02, 0x00, 0x20;\n" > // SHA1 (sha1m) > ".byte 0x5e, 0x02, 0x20, 0x20;\n" > // SHA1 (sha1p) > ".byte 0x5e, 0x02, 0x30, 0x20;\n" > : > : > : "cc", "d0", "d1", "d2", "q0", "q1", "q2" > ); > > return 0; > } > > $ gcc -g3 -O0 -march=armv7-a -mfpu=neon test.cc -o test.exe > $ ./test.exe > $ > All that silliness was not needed. All that was needed was: gcc -march=armv8-a+crc -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 ... I can't believe I could not piece that together from the man pages.... (Thanks to the GCC and SO folks). Jeff