1 /* PR target/77476 */ 2 /* { dg-do run } */ 3 /* { dg-options "-O2 -mavx512f" } */ 4 /* { dg-require-effective-target avx512f } */ 5 6 #ifndef PR77476_TEST 7 #include "avx512f-check.h" 8 #define PR77476_TEST avx512f_test 9 #endif 10 11 unsigned short s; 12 unsigned int i; 13 unsigned long long l; 14 15 void f1(void)16f1 (void) 17 { 18 unsigned char a = 0xff; 19 asm volatile ("" : "+Yk" (a)); 20 s = a; 21 } 22 23 void f2(void)24f2 (void) 25 { 26 unsigned char a = 0xff; 27 asm volatile ("" : "+Yk" (a)); 28 i = a; 29 } 30 31 void f3(void)32f3 (void) 33 { 34 unsigned char a = 0xff; 35 asm volatile ("" : "+Yk" (a)); 36 l = a; 37 } 38 39 void f4(void)40f4 (void) 41 { 42 unsigned short a = 0xffff; 43 asm volatile ("" : "+Yk" (a)); 44 i = a; 45 } 46 47 void f5(void)48f5 (void) 49 { 50 unsigned short a = 0xffff; 51 asm volatile ("" : "+Yk" (a)); 52 l = a; 53 } 54 55 #ifdef __AVX512BW__ 56 void f6(void)57f6 (void) 58 { 59 unsigned int a = 0xffffffff; 60 asm volatile ("" : "+Yk" (a)); 61 l = a; 62 } 63 #endif 64 65 static void PR77476_TEST()66PR77476_TEST () 67 { 68 f1 (); if (s != 0xff) __builtin_abort (); s = 0; 69 f2 (); if (i != 0xff) __builtin_abort (); i = 0; 70 f3 (); if (l != 0xff) __builtin_abort (); l = 0; 71 f4 (); if (i != 0xffff) __builtin_abort (); i = 0; 72 f5 (); if (l != 0xffff) __builtin_abort (); l = 0; 73 #ifdef __AVX512BW__ 74 f6 (); if (l != 0xffffffff) __builtin_abort (); l = 0; 75 #endif 76 } 77