(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
avx512bw-pr92686-movcc-1.c
       1  /* PR target/92686 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-Ofast -mavx512bw -mno-avx512dq -mno-avx512vl -mno-xop -mprefer-vector-width=512" } */
       4  /* { dg-final { scan-assembler-times "vpcmp\[bwdq\]\[\t ]" 8 } } */
       5  /* { dg-final { scan-assembler-times "vpcmpu\[bwdq\]\[\t ]" 8 } } */
       6  /* { dg-final { scan-assembler-times "vmovdq\[au\]8\[^\{\n\]*%zmm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
       7  /* { dg-final { scan-assembler-times "vmovdq\[au\]16\[^\{\n\]*%zmm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
       8  /* { dg-final { scan-assembler-times "vmovdq\[au\]32\[^\{\n\]*%zmm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
       9  /* { dg-final { scan-assembler-times "vmovdq\[au\]64\[^\{\n\]*%zmm0+\[^\n\]*\{%k\[1-7\]\}" 4 } } */
      10  
      11  __attribute__((noipa)) void
      12  f1 (char *__restrict dst, char *__restrict src1, char *__restrict src2)
      13  {
      14    for (int i = 0; i != 64; i++)
      15      dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
      16  }
      17  
      18  __attribute__((noipa)) void
      19  f2 (unsigned char *__restrict dst, unsigned char *__restrict src1,
      20      unsigned char *__restrict src2)
      21  {
      22    for (int i = 0; i != 64; i++)
      23      dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
      24  }
      25  
      26  __attribute__((noipa)) void
      27  f3 (char *__restrict dst, char *__restrict src1, char *__restrict src2)
      28  {
      29    for (int i = 0; i != 64; i++)
      30      dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
      31  }
      32  
      33  __attribute__((noipa)) void
      34  f4 (unsigned char *__restrict dst, unsigned char *__restrict src1,
      35      unsigned char *__restrict src2)
      36  {
      37    for (int i = 0; i != 64; i++)
      38      dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
      39  }
      40  
      41  __attribute__((noipa)) void
      42  f5 (short *__restrict dst, short *__restrict src1, short *__restrict src2)
      43  {
      44    for (int i = 0; i != 32; i++)
      45      dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
      46  }
      47  
      48  __attribute__((noipa)) void
      49  f6 (unsigned short *__restrict dst, unsigned short *__restrict src1,
      50      unsigned short *__restrict src2)
      51  {
      52    for (int i = 0; i != 32; i++)
      53      dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
      54  }
      55  
      56  __attribute__((noipa)) void
      57  f7 (short *__restrict dst, short *__restrict src1, short *__restrict src2)
      58  {
      59    for (int i = 0; i != 32; i++)
      60      dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
      61  }
      62  
      63  __attribute__((noipa)) void
      64  f8 (unsigned short *__restrict dst, unsigned short *__restrict src1,
      65      unsigned short *__restrict src2)
      66  {
      67    for (int i = 0; i != 32; i++)
      68      dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
      69  }
      70  
      71  __attribute__((noipa)) void
      72  f9 (int *__restrict dst, int *__restrict src1, int *__restrict src2)
      73  {
      74    for (int i = 0; i != 16; i++)
      75      dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
      76  }
      77  
      78  __attribute__((noipa)) void
      79  f10 (unsigned int *__restrict dst, unsigned int *__restrict src1,
      80       unsigned int *__restrict src2)
      81  {
      82    for (int i = 0; i != 16; i++)
      83      dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
      84  }
      85  
      86  __attribute__((noipa)) void
      87  f11 (int *__restrict dst, int *__restrict src1, int *__restrict src2)
      88  {
      89    for (int i = 0; i != 16; i++)
      90      dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
      91  }
      92  
      93  __attribute__((noipa)) void
      94  f12 (unsigned int *__restrict dst, unsigned int *__restrict src1,
      95       unsigned int *__restrict src2)
      96  {
      97    for (int i = 0; i != 16; i++)
      98      dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
      99  }
     100  
     101  __attribute__((noipa)) void
     102  f13 (long long int *__restrict dst, long long int *__restrict src1,
     103       long long int *__restrict src2)
     104  {
     105    for (int i = 0; i != 8; i++)
     106      dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
     107  }
     108  
     109  __attribute__((noipa)) void
     110  f14 (unsigned long long int *__restrict dst,
     111       unsigned long long int *__restrict src1,
     112       unsigned long long int *__restrict src2)
     113  {
     114    for (int i = 0; i != 8; i++)
     115      dst[i] = src1[i] >= src2[i] ? src1[i] : dst[i];
     116  }
     117  
     118  __attribute__((noipa)) void
     119  f15 (long long int *__restrict dst, long long int *__restrict src1,
     120       long long int *__restrict src2)
     121  {
     122    for (int i = 0; i != 8; i++)
     123      dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
     124  }
     125  
     126  __attribute__((noipa)) void
     127  f16 (unsigned long long int *__restrict dst,
     128       unsigned long long int *__restrict src1,
     129       unsigned long long int *__restrict src2)
     130  {
     131    for (int i = 0; i != 8; i++)
     132      dst[i] = src1[i] <= src2[i] ? src1[i] : dst[i];
     133  }