1 /* { dg-do assemble { target { avx512bw && { avx512vl && { ! ia32 } } } } } */ 2 /* { dg-options "-O2 -mavx512bw -mavx512vl" } */ 3 4 #include <x86intrin.h> 5 6 void f1(__m128i x,int y)7f1 (__m128i x, int y) 8 { 9 register __m128i a __asm ("xmm16"); 10 a = x; 11 asm volatile ("" : "+v" (a)); 12 a = _mm_srai_epi16 (a, y); 13 asm volatile ("" : "+v" (a)); 14 } 15 16 void f2(__m128i x)17f2 (__m128i x) 18 { 19 register __m128i a __asm ("xmm16"); 20 a = x; 21 asm volatile ("" : "+v" (a)); 22 a = _mm_srai_epi16 (a, 16); 23 asm volatile ("" : "+v" (a)); 24 } 25 26 void f3(__m256i x,int y)27f3 (__m256i x, int y) 28 { 29 register __m256i a __asm ("xmm16"); 30 a = x; 31 asm volatile ("" : "+v" (a)); 32 a = _mm256_srai_epi16 (a, y); 33 asm volatile ("" : "+v" (a)); 34 } 35 36 void f4(__m256i x)37f4 (__m256i x) 38 { 39 register __m256i a __asm ("xmm16"); 40 a = x; 41 asm volatile ("" : "+v" (a)); 42 a = _mm256_srai_epi16 (a, 16); 43 asm volatile ("" : "+v" (a)); 44 } 45