[Bug target/102166] [i386] AMX intrinsics and macros not defined in C++
thiago at kde dot org
gcc-bugzilla@gcc.gnu.org
Wed Sep 1 22:33:23 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102166
Thiago Macieira <thiago at kde dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hjl.tools at gmail dot com
--- Comment #1 from Thiago Macieira <thiago at kde dot org> ---
I don't understand how this compiles in C mode:
$ gcc -O2 -Werror=implicit-function-declaration -c -xc test.cpp
$ gcc -O2 -fno-asynchronous-unwind-tables -S -o - -xc test.cpp
.file "test.cpp"
.text
.p2align 4
.globl avx
.type avx, @function
avx:
vzeroall
ret
.size avx, .-avx
.p2align 4
.globl amx
.type amx, @function
amx:
xorl %eax, %eax
#APP
# 10 "test.cpp" 1
tileloadd (%rax,%rax,1), %tmm0
# 0 "" 2
# 56 "/usr/lib64/gcc/x86_64-generic-linux/11/include/amxtileintrin.h" 1
tilerelease
# 0 "" 2
#NO_APP
ret
.size amx, .-amx
The comments in the assembly output indicate that _tile_loadd is a macro that
was expanded from test.cpp and that _tile_release is a function in
amxtileintrin.h.
But neither is defined.
$ gcc -E -xc test.cpp | grep -e _tile_loadd -e _tile_release
_tile_loadd(0, 0, 0);
_tile_release();
Whatever they are, they are not visible to the preprocessor.
More information about the Gcc-bugs
mailing list