(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr85323-2.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 \};" 12 "optimized" } } */
       5  /* { dg-final { scan-tree-dump-times "= \{ 0, 0, 0, 0 \};" 12 "optimized" } } */
       6  /* { dg-final { scan-tree-dump-times "= \{ 0, 0, 0, 0, 0, 0, 0, 0 \};" 12 "optimized" } } */
       7  
       8  #include <x86intrin.h>
       9  
      10  void
      11  foo (__m128i x[12])
      12  {
      13    x[0] = _mm_sll_epi64 (x[0], _mm_set1_epi64x (64));
      14    x[1] = _mm_sll_epi32 (x[1], _mm_set1_epi64x (32));
      15    x[2] = _mm_sll_epi16 (x[2], _mm_set1_epi64x (16));
      16    x[3] = _mm_srl_epi64 (x[3], _mm_set1_epi64x (65));
      17    x[4] = _mm_srl_epi32 (x[4], _mm_set1_epi64x (33));
      18    x[5] = _mm_srl_epi16 (x[5], _mm_set1_epi64x (17));
      19    x[6] = _mm_slli_epi64 (x[6], 66);
      20    x[7] = _mm_slli_epi32 (x[7], 34);
      21    x[8] = _mm_slli_epi16 (x[8], 18);
      22    x[9] = _mm_srli_epi64 (x[9], 67);
      23    x[10] = _mm_srli_epi32 (x[10], 35);
      24    x[11] = _mm_srli_epi16 (x[11], 19);
      25  }
      26  
      27  void
      28  bar (__m256i x[12])
      29  {
      30    x[0] = _mm256_sll_epi64 (x[0], _mm_set1_epi64x (64));
      31    x[1] = _mm256_sll_epi32 (x[1], _mm_set1_epi64x (32));
      32    x[2] = _mm256_sll_epi16 (x[2], _mm_set1_epi64x (16));
      33    x[3] = _mm256_srl_epi64 (x[3], _mm_set1_epi64x (65));
      34    x[4] = _mm256_srl_epi32 (x[4], _mm_set1_epi64x (33));
      35    x[5] = _mm256_srl_epi16 (x[5], _mm_set1_epi64x (17));
      36    x[6] = _mm256_slli_epi64 (x[6], 66);
      37    x[7] = _mm256_slli_epi32 (x[7], 34);
      38    x[8] = _mm256_slli_epi16 (x[8], 18);
      39    x[9] = _mm256_srli_epi64 (x[9], 67);
      40    x[10] = _mm256_srli_epi32 (x[10], 35);
      41    x[11] = _mm256_srli_epi16 (x[11], 19);
      42  }
      43  
      44  void
      45  baz (__m512i x[12])
      46  {
      47    x[0] = _mm512_sll_epi64 (x[0], _mm_set1_epi64x (64));
      48    x[1] = _mm512_sll_epi32 (x[1], _mm_set1_epi64x (32));
      49    x[2] = _mm512_sll_epi16 (x[2], _mm_set1_epi64x (16));
      50    x[3] = _mm512_srl_epi64 (x[3], _mm_set1_epi64x (65));
      51    x[4] = _mm512_srl_epi32 (x[4], _mm_set1_epi64x (33));
      52    x[5] = _mm512_srl_epi16 (x[5], _mm_set1_epi64x (17));
      53    x[6] = _mm512_slli_epi64 (x[6], 66);
      54    x[7] = _mm512_slli_epi32 (x[7], 34);
      55    x[8] = _mm512_slli_epi16 (x[8], 18);
      56    x[9] = _mm512_srli_epi64 (x[9], 67);
      57    x[10] = _mm512_srli_epi32 (x[10], 35);
      58    x[11] = _mm512_srli_epi16 (x[11], 19);
      59  }