(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr103861-3.c
       1  /* PR target/103861 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -ftree-vectorize -msse4 -fno-vect-cost-model" } */
       4  
       5  char r[2], a[2], b[2];
       6  unsigned char ur[2], ua[2], ub[2];
       7  
       8  void maxs (void)
       9  {
      10    int i;
      11  
      12    for (i = 0; i < 2; i++)
      13      r[i] = a[i] > b[i] ? a[i] : b[i];
      14  }
      15  
      16  /* { dg-final { scan-assembler "pmaxsb" } } */
      17  
      18  void maxu (void)
      19  {
      20    int i;
      21  
      22    for (i = 0; i < 2; i++)
      23      ur[i] = ua[i] > ub[i] ? ua[i] : ub[i];
      24  }
      25  
      26  /* { dg-final { scan-assembler "pmaxub" } } */
      27  
      28  void mins (void)
      29  {
      30    int i;
      31  
      32    for (i = 0; i < 2; i++)
      33      r[i] = a[i] < b[i] ? a[i] : b[i];
      34  }
      35  
      36  /* { dg-final { scan-assembler "pminsb" } } */
      37  
      38  void minu (void)
      39  {
      40    int i;
      41  
      42    for (i = 0; i < 2; i++)
      43      ur[i] = ua[i] < ub[i] ? ua[i] : ub[i];
      44  }
      45  
      46  /* { dg-final { scan-assembler "pminub" } } */
      47  
      48  void _abs (void)
      49  {
      50    int i;
      51  
      52    for (i = 0; i < 2; i++)
      53      r[i] = a[i] < 0 ? -a[i] : a[i];
      54  }
      55  
      56  /* { dg-final { scan-assembler "pabsb" } } */
      57  
      58  void avgu (void)
      59  {
      60    int i;
      61  
      62    for (i = 0; i < 2; i++)
      63      ur[i] = (ua[i] + ub[i] + 1) >> 1;
      64  }
      65  
      66  /* { dg-final { scan-assembler "pavgb" } } */