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.

Reply via email to