(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr85323-5.c
       1  /* PR target/85323 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mavx512vl -mavx512bw -fdump-tree-optimized" } */
       4  /* { dg-final { scan-tree-dump-times "= \{ 0, 0 \};" 6 "optimized" } } */
       5  /* { dg-final { scan-tree-dump-times "= \{ 0, 0, 0, 0 \};" 6 "optimized" } } */
       6  /* { dg-final { scan-tree-dump-times "= \{ 0, 0, 0, 0, 0, 0, 0, 0 \};" 6 "optimized" } } */
       7  
       8  #include <x86intrin.h>
       9  
      10  void
      11  foo (__m128i x[6])
      12  {
      13    x[0] = _mm_sllv_epi64 (x[0], _mm_set_epi64x (64, 65));
      14    x[1] = _mm_sllv_epi32 (x[1], _mm_set_epi32 (32, 33, 34, 32));
      15    x[2] = _mm_sllv_epi16 (x[2], _mm_set_epi16 (16, 18, -16, -1, 19, 16, 18, 20));
      16    x[3] = _mm_srlv_epi64 (x[3], _mm_set_epi64x (65, -1));
      17    x[4] = _mm_srlv_epi32 (x[4], _mm_set_epi32 (33, 32, 39, -5));
      18    x[5] = _mm_srlv_epi16 (x[5], _mm_set1_epi16 (17));
      19  }
      20  
      21  void
      22  bar (__m256i x[6])
      23  {
      24    x[0] = _mm256_sllv_epi64 (x[0], _mm256_set_epi64x (64, 65, -2, 66));
      25    x[1] = _mm256_sllv_epi32 (x[1], _mm256_set_epi32 (32, 32, 39, -4, -32, 98, 2048, 32));
      26    x[2] = _mm256_sllv_epi16 (x[2], _mm256_set_epi16 (16, 32, 64, 128, 16, 16, 32, -5,
      27  						    -1, -2, -3, 16, 17, 18, 19, 200));
      28    x[3] = _mm256_srlv_epi64 (x[3], _mm256_set_epi64x (65, 64, -5, 64));
      29    x[4] = _mm256_srlv_epi32 (x[4], _mm256_set_epi32 (33, 49, 2048, 32, -1, 32, 37, 16384));
      30    x[5] = _mm256_srlv_epi16 (x[5], _mm256_set1_epi16 (17));
      31  }
      32  
      33  void
      34  baz (__m512i x[6])
      35  {
      36    x[0] = _mm512_sllv_epi64 (x[0], _mm512_set_epi64 (64, 64, 69, -1, 2048, 64, 16348, -64));
      37    x[1] = _mm512_sllv_epi32 (x[1], _mm512_set_epi32 (32, 33, 34, 35, 36, -32, -33, -34,
      38  						    -1, -2, -3, -4, -5, -6, 32, 2048));
      39    x[2] = _mm512_sllv_epi16 (x[2], _mm512_set_epi16 (16, 32, 64, 128, 16, 16, 32, -5,
      40  						    -1, -2, -3, 16, 17, 18, 19, 200,
      41  						    16, 19, 2048, 16, -2, -8, -19, 16,
      42  						    -1, -2, -3, -4, -5, -6, -7, -8));
      43    x[3] = _mm512_srlv_epi64 (x[3], _mm512_set_epi64 (65, 64, 69, 68, 64, 79, 2048, -1));
      44    x[4] = _mm512_srlv_epi32 (x[4], _mm512_set_epi32 (32, 33, 34, 35, 36, -32, -33, -34,
      45  						    -1, -2, -3, -4, -5, -6, 32, 2048));
      46    x[5] = _mm512_srlv_epi16 (x[5], _mm512_set1_epi16 (17));
      47  }