(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx-pr82370.c
       1  /* PR target/82370 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mavx -mno-avx2 -masm=att" } */
       4  /* { dg-final { scan-assembler-times "vpslld\[ \t]\+\\\$7, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
       5  /* { dg-final { scan-assembler-times "vpsllq\[ \t]\+\\\$7, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
       6  /* { dg-final { scan-assembler-times "vpsllw\[ \t]\+\\\$7, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
       7  /* { dg-final { scan-assembler-times "vpsrad\[ \t]\+\\\$3, %xmm\[0-9]\+, %xmm\[0-9]\+" 6 } } */
       8  /* { dg-final { scan-assembler-times "vpsraq\[ \t]\+\\\$3, %xmm\[0-9]\+, %xmm\[0-9]\+" 0 } } */
       9  /* { dg-final { scan-assembler-times "vpsraw\[ \t]\+\\\$3, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
      10  /* { dg-final { scan-assembler-times "vpsrld\[ \t]\+\\\$5, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
      11  /* { dg-final { scan-assembler-times "vpsrlq\[ \t]\+\\\$5, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
      12  /* { dg-final { scan-assembler-times "vpsrlw\[ \t]\+\\\$5, %xmm\[0-9]\+, %xmm\[0-9]\+" 3 } } */
      13  
      14  typedef short int v32hi __attribute__((vector_size (64)));
      15  typedef short int v16hi __attribute__((vector_size (32)));
      16  typedef short int v8hi __attribute__((vector_size (16)));
      17  typedef int v16si __attribute__((vector_size (64)));
      18  typedef int v8si __attribute__((vector_size (32)));
      19  typedef int v4si __attribute__((vector_size (16)));
      20  typedef long long int v8di __attribute__((vector_size (64)));
      21  typedef long long int v4di __attribute__((vector_size (32)));
      22  typedef long long int v2di __attribute__((vector_size (16)));
      23  typedef unsigned short int v32uhi __attribute__((vector_size (64)));
      24  typedef unsigned short int v16uhi __attribute__((vector_size (32)));
      25  typedef unsigned short int v8uhi __attribute__((vector_size (16)));
      26  typedef unsigned int v16usi __attribute__((vector_size (64)));
      27  typedef unsigned int v8usi __attribute__((vector_size (32)));
      28  typedef unsigned int v4usi __attribute__((vector_size (16)));
      29  typedef unsigned long long int v8udi __attribute__((vector_size (64)));
      30  typedef unsigned long long int v4udi __attribute__((vector_size (32)));
      31  typedef unsigned long long int v2udi __attribute__((vector_size (16)));
      32  
      33  #ifdef __AVX512F__
      34  v32hi f1 (v32hi *x) { return *x >> 3; }
      35  v32uhi f2 (v32uhi *x) { return *x >> 5; }
      36  v32uhi f3 (v32uhi *x) { return *x << 7; }
      37  #endif
      38  v16hi f4 (v16hi *x) { return *x >> 3; }
      39  v16uhi f5 (v16uhi *x) { return *x >> 5; }
      40  v16uhi f6 (v16uhi *x) { return *x << 7; }
      41  v8hi f7 (v8hi *x) { return *x >> 3; }
      42  v8uhi f8 (v8uhi *x) { return *x >> 5; }
      43  v8uhi f9 (v8uhi *x) { return *x << 7; }
      44  #ifdef __AVX512F__
      45  v16si f10 (v16si *x) { return *x >> 3; }
      46  v16usi f11 (v16usi *x) { return *x >> 5; }
      47  v16usi f12 (v16usi *x) { return *x << 7; }
      48  #endif
      49  v8si f13 (v8si *x) { return *x >> 3; }
      50  v8usi f14 (v8usi *x) { return *x >> 5; }
      51  v8usi f15 (v8usi *x) { return *x << 7; }
      52  v4si f16 (v4si *x) { return *x >> 3; }
      53  v4usi f17 (v4usi *x) { return *x >> 5; }
      54  v4usi f18 (v4usi *x) { return *x << 7; }
      55  #ifdef __AVX512F__
      56  v8di f19 (v8di *x) { return *x >> 3; }
      57  v8udi f20 (v8udi *x) { return *x >> 5; }
      58  v8udi f21 (v8udi *x) { return *x << 7; }
      59  #endif
      60  v4di f22 (v4di *x) { return *x >> 3; }
      61  v4udi f23 (v4udi *x) { return *x >> 5; }
      62  v4udi f24 (v4udi *x) { return *x << 7; }
      63  v2di f25 (v2di *x) { return *x >> 3; }
      64  v2udi f26 (v2udi *x) { return *x >> 5; }
      65  v2udi f27 (v2udi *x) { return *x << 7; }