1  /* PR target/88547 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O2 -mavx512vl -mavx512bw -mavx512dq" } */
       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 "vpmovm2\[bwdq\]\[\t ]" 16 } } */
       7  
       8  typedef signed char v64qi __attribute__((vector_size(64)));
       9  typedef unsigned char v64uqi __attribute__((vector_size(64)));
      10  typedef short v32hi __attribute__((vector_size(64)));
      11  typedef unsigned short v32uhi __attribute__((vector_size(64)));
      12  typedef int v16si __attribute__((vector_size(64)));
      13  typedef unsigned v16usi __attribute__((vector_size(64)));
      14  typedef long long v8di __attribute__((vector_size(64)));
      15  typedef unsigned long long v8udi __attribute__((vector_size(64)));
      16  
      17  v64qi
      18  f1 (v64qi x, v64qi y)
      19  {
      20    return x <= y;
      21  }
      22  
      23  v64uqi
      24  f2 (v64uqi x, v64uqi y)
      25  {
      26    return x <= y;
      27  }
      28  
      29  v64qi
      30  f3 (v64qi x, v64qi y)
      31  {
      32    return x >= y;
      33  }
      34  
      35  v64uqi
      36  f4 (v64uqi x, v64uqi y)
      37  {
      38    return x >= y;
      39  }
      40  
      41  v32hi
      42  f5 (v32hi x, v32hi y)
      43  {
      44    return x <= y;
      45  }
      46  
      47  v32uhi
      48  f6 (v32uhi x, v32uhi y)
      49  {
      50    return x <= y;
      51  }
      52  
      53  v32hi
      54  f7 (v32hi x, v32hi y)
      55  {
      56    return x >= y;
      57  }
      58  
      59  v32uhi
      60  f8 (v32uhi x, v32uhi y)
      61  {
      62    return x >= y;
      63  }
      64  
      65  v16si
      66  f9 (v16si x, v16si y)
      67  {
      68    return x <= y;
      69  }
      70  
      71  v16usi
      72  f10 (v16usi x, v16usi y)
      73  {
      74    return x <= y;
      75  }
      76  
      77  v16si
      78  f11 (v16si x, v16si y)
      79  {
      80    return x >= y;
      81  }
      82  
      83  v16usi
      84  f12 (v16usi x, v16usi y)
      85  {
      86    return x >= y;
      87  }
      88  
      89  v8di
      90  f13 (v8di x, v8di y)
      91  {
      92    return x <= y;
      93  }
      94  
      95  v8udi
      96  f14 (v8udi x, v8udi y)
      97  {
      98    return x <= y;
      99  }
     100  
     101  v8di
     102  f15 (v8di x, v8di y)
     103  {
     104    return x >= y;
     105  }
     106  
     107  v8udi
     108  f16 (v8udi x, v8udi y)
     109  {
     110    return x >= y;
     111  }