[Bug target/88353] New: AVX512 instructions on macOS using Xcode Clang's assembler needs extra flags
mcccs at gmx dot com
gcc-bugzilla@gcc.gnu.org
Tue Dec 4 14:52:00 GMT 2018
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.
More information about the Gcc-bugs
mailing list