mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 23:25:24 +02:00
x86: Fix shift-gf2p8affine-2.c failure on non-AVX512 CPU
Enabling AVX512 via command line may cause the compiler to generate
AVX512 instructions even before the runtime CPU feature check, causing
the test to SIGILL if the CPU lacks AVX512. Extract tests to do_test
and change main to call only if __builtin_cpu_supports ("gfni") returns
true to avoid any AVX512 instructions in main:
main:
movq __cpu_features2@GOTPCREL(%rip), %rax
testb $1, (%rax)
jne .L1577
xorl %eax, %eax
ret
.L1577:
pushq %rax
call do_test
xorl %eax, %eax
popq %rdx
ret
* gcc.target/i386/shift-gf2p8affine-2.c (do_test): New function.
Extracted from main.
(main): Drop __builtin_cpu_init. Call do_test only if
__builtin_cpu_supports ("gfni") returns true.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
This commit is contained in:
@@ -151,12 +151,10 @@ FUNC (N5)
|
||||
func##N##ref (array2, len); \
|
||||
if (memcmp (array, array2, len)) __builtin_abort ()
|
||||
|
||||
int main ()
|
||||
__attribute__ ((noipa))
|
||||
void
|
||||
do_test (void)
|
||||
{
|
||||
__builtin_cpu_init ();
|
||||
if (!__builtin_cpu_supports ("gfni"))
|
||||
return 0;
|
||||
|
||||
const unsigned long len = 256;
|
||||
char array[len], array2[len];
|
||||
unsigned char filler = FILLER;
|
||||
@@ -195,6 +193,11 @@ int main ()
|
||||
TEST (N5, sbyteshiftr);
|
||||
TEST (N5, ubyteror);
|
||||
TEST (N5, ubyterol);
|
||||
}
|
||||
|
||||
int main ()
|
||||
{
|
||||
if (__builtin_cpu_supports ("gfni"))
|
||||
do_test ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user