/* PR target/77476 */ /* { dg-do run } */ /* { dg-options "-O2 -mavx512f" } */ /* { dg-require-effective-target avx512f } */ #ifndef PR77476_TEST #include "avx512f-check.h" #define PR77476_TEST avx512f_test #endif unsigned short s; unsigned int i; unsigned long long l; void f1 (void) { unsigned char a = 0xff; asm volatile ("" : "+Yk" (a)); s = a; } void f2 (void) { unsigned char a = 0xff; asm volatile ("" : "+Yk" (a)); i = a; } void f3 (void) { unsigned char a = 0xff; asm volatile ("" : "+Yk" (a)); l = a; } void f4 (void) { unsigned short a = 0xffff; asm volatile ("" : "+Yk" (a)); i = a; } void f5 (void) { unsigned short a = 0xffff; asm volatile ("" : "+Yk" (a)); l = a; } #ifdef __AVX512BW__ void f6 (void) { unsigned int a = 0xffffffff; asm volatile ("" : "+Yk" (a)); l = a; } #endif static void PR77476_TEST () { f1 (); if (s != 0xff) __builtin_abort (); s = 0; f2 (); if (i != 0xff) __builtin_abort (); i = 0; f3 (); if (l != 0xff) __builtin_abort (); l = 0; f4 (); if (i != 0xffff) __builtin_abort (); i = 0; f5 (); if (l != 0xffff) __builtin_abort (); l = 0; #ifdef __AVX512BW__ f6 (); if (l != 0xffffffff) __builtin_abort (); l = 0; #endif }