https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88353
Bug ID: 88353 Summary: AVX512 instructions on macOS using Xcode Clang's assembler needs extra flags Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: mcccs at gmx dot com Target Milestone: --- Note: You can skip to the tldr. #include <x86intrin.h> int main(void) { __m512i a; a = _mm512_conflict_epi32(a); return (int)a[1]; } $ gcc-8 -mavx512cd /Users/usr/Downloads/k.c -v Last login: Tue Dec 4 17:14:01 on ttys000 usr:~ usr$ cd /Users/usr/Downloads usr:Downloads usr$ gcc-8 -mavx512cd /Users/usr/Downloads/k.c -v Using built-in specs. COLLECT_GCC=gcc-8 COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/8.2.0/libexec/gcc/x86_64-apple-darwin18.0.0/8.2.0/lto-wrapper Target: x86_64-apple-darwin18.0.0 Configured with: ../configure --build=x86_64-apple-darwin18.0.0 --prefix=/usr/local/Cellar/gcc/8.2.0 --libdir=/usr/local/Cellar/gcc/8.2.0/lib/gcc/8 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-8 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --enable-checking=release --with-pkgversion='Homebrew GCC 8.2.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-nls --disable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk Thread model: posix gcc version 8.2.0 (Homebrew GCC 8.2.0) COLLECT_GCC_OPTIONS='-mavx512cd' '-v' '-mmacosx-version-min=10.14.0' '-asm_macosx_version_min=10.14' '-mtune=core2' /usr/local/Cellar/gcc/8.2.0/libexec/gcc/x86_64-apple-darwin18.0.0/8.2.0/cc1 -quiet -v -D__DYNAMIC__ /Users/usr/Downloads/k.c -fPIC -quiet -dumpbase k.c -mavx512cd -mmacosx-version-min=10.14.0 -mtune=core2 -auxbase k -version -o /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s GNU C17 (Homebrew GCC 8.2.0) version 8.2.0 (x86_64-apple-darwin18.0.0) compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.20-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/local/include" ignoring nonexistent directory "/usr/local/Cellar/gcc/8.2.0/lib/gcc/8/gcc/x86_64-apple-darwin18.0.0/8.2.0/../../../../../../x86_64-apple-darwin18.0.0/include" ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/Library/Frameworks" #include "..." search starts here: #include <...> search starts here: /usr/local/Cellar/gcc/8.2.0/lib/gcc/8/gcc/x86_64-apple-darwin18.0.0/8.2.0/include /usr/local/Cellar/gcc/8.2.0/lib/gcc/8/gcc/x86_64-apple-darwin18.0.0/8.2.0/include-fixed /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks End of search list. GNU C17 (Homebrew GCC 8.2.0) version 8.2.0 (x86_64-apple-darwin18.0.0) compiled by GNU C version 8.2.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.20-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 66326856387bebccbffed284b95b1664 COLLECT_GCC_OPTIONS='-mavx512cd' '-v' '-mmacosx-version-min=10.14.0' '-mtune=core2' as -arch x86_64 -v -force_cpusubtype_ALL -mmacosx-version-min=10.14 -o /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccZala60.o /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s Apple LLVM version 10.0.0 (clang-1000.11.45.5) Target: x86_64-apple-darwin18.2.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1as -triple x86_64-apple-macosx10.14.0 -filetype obj -main-file-name ccP9tvXX.s -target-cpu penryn -fdebug-compilation-dir /Users/usr/Downloads -dwarf-debug-producer Apple LLVM version 10.0.0 (clang-1000.11.45.5) -dwarf-version=4 -mrelocation-model pic -o /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccZala60.o /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s:11:2: error: instruction requires: AVX-512 ISA vmovdqa64 -120(%rsp), %zmm0 ^ /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s:12:2: error: instruction requires: AVX-512 ISA vmovdqa64 %zmm0, -56(%rsp) ^ /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s:14:2: error: instruction requires: AVX-512 ISA vmovdqa64 %zmm0, %zmm1 ^ /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s:15:2: error: instruction requires: AVX-512 ISA vmovdqa64 -56(%rsp), %zmm0 ^ /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s:17:2: error: instruction requires: AVX-512 ISA kmovw %eax, %k1 ^ /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s:18:26: error: unexpected token in argument list vpconflictd %zmm0, %zmm1{%k1} ^ /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s:19:2: error: instruction requires: AVX-512 ISA vmovdqa64 %zmm1, %zmm0 ^ /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s:20:2: error: instruction requires: AVX-512 ISA vmovdqa64 %zmm0, -120(%rsp) ^ usr:Downloads usr$ Notice the assembler options: COLLECT_GCC_OPTIONS='-mavx512cd' '-v' '-mmacosx-version-min=10.14.0' '-asm_macosx_version_min=10.14' '-mtune=core2' /usr/local/Cellar/gcc/8.2.0/libexec/gcc/x86_64-apple-darwin18.0.0/8.2.0/cc1 -quiet -v -D__DYNAMIC__ /Users/usr/Downloads/k.c -fPIC -quiet -dumpbase k.c -mavx512cd -mmacosx-version-min=10.14.0 -mtune=core2 -auxbase k -version -o /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T//ccP9tvXX.s If I compiled with the same args, but this time with Clang, the assembler args become: "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.14.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name k.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-cpu penryn -target-feature +avx512cd -dwarf-column-info -debugger-tuning=lldb -target-linker-version 409.12 -v -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0 -fdebug-compilation-dir /Users/usr/Downloads -ferror-limit 19 -fmessage-length 86 -stack-protector 1 -fblocks -fencode-extended-block-signature -fobjc-runtime=macosx-10.14.0 -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/rj/2dy816nd25b86ywkrrgv2ms40000gn/T/k-b03152.o -x c /Users/usr/Downloads/k.c Notice the "-target-feature +avx512cd" Tl;DR When calling Xcode's assembler with AVX512 instructions, `-target-feature +avx512smthng` needs to be added too. I have tested this, and it works.