1  /* PR target/98911  */
       2  /* { dg-do compile } */
       3  /* { dg-options "-O -mavx2" } */
       4  /* { dg-final { scan-assembler-times "pcmpeqb" 2 } } */
       5  /* { dg-final { scan-assembler-times "pcmpeqw" 2 } } */
       6  /* { dg-final { scan-assembler-times "pcmpeqd" 2 } } */
       7  /* { dg-final { scan-assembler-times "pcmpeqq" 2 } } */
       8  /* { dg-final { scan-assembler-times "pcmpgtb" 2 } } */
       9  /* { dg-final { scan-assembler-times "pcmpgtw" 2 } } */
      10  /* { dg-final { scan-assembler-times "pcmpgtd" 2 } } */
      11  /* { dg-final { scan-assembler-times "pcmpgtq" 2 } } */
      12  
      13  typedef char v16qi __attribute__ ((vector_size (16)));
      14  typedef char v32qi __attribute__ ((vector_size (32)));
      15  typedef short v8hi __attribute__ ((vector_size (16)));
      16  typedef short v16hi __attribute__ ((vector_size (32)));
      17  typedef int v4si __attribute__ ((vector_size (16)));
      18  typedef int v8si __attribute__ ((vector_size (32)));
      19  typedef long long v2di __attribute__ ((vector_size (16)));
      20  typedef long long v4di __attribute__ ((vector_size (32)));
      21  
      22  v16qi
      23  f1 (v16qi a, v16qi b)
      24  {
      25    return __builtin_ia32_pcmpeqb128 (a, b);
      26  }
      27  
      28  v8hi
      29  f2 (v8hi a, v8hi b)
      30  {
      31    return __builtin_ia32_pcmpeqw128 (a, b);
      32  }
      33  
      34  v4si
      35  f3 (v4si a, v4si b)
      36  {
      37    return __builtin_ia32_pcmpeqd128 (a, b);
      38  }
      39  
      40  v2di
      41  f4 (v2di a, v2di b)
      42  {
      43    return __builtin_ia32_pcmpeqq (a, b);
      44  }
      45  
      46  v16qi
      47  f5 (v16qi a, v16qi b)
      48  {
      49    return __builtin_ia32_pcmpgtb128 (a, b);
      50  }
      51  
      52  v8hi
      53  f6 (v8hi a, v8hi b)
      54  {
      55    return __builtin_ia32_pcmpgtw128 (a, b);
      56  }
      57  
      58  v4si
      59  f7 (v4si a, v4si b)
      60  {
      61    return __builtin_ia32_pcmpgtd128 (a, b);
      62  }
      63  
      64  v2di
      65  f8 (v2di a, v2di b)
      66  {
      67    return __builtin_ia32_pcmpgtq (a, b);
      68  }
      69  
      70  v32qi
      71  f9 (v32qi a, v32qi b)
      72  {
      73    return __builtin_ia32_pcmpeqb256 (a, b);
      74  }
      75  
      76  v16hi
      77  f10 (v16hi a, v16hi b)
      78  {
      79    return __builtin_ia32_pcmpeqw256 (a, b);
      80  }
      81  
      82  v8si
      83  f11 (v8si a, v8si b)
      84  {
      85    return __builtin_ia32_pcmpeqd256 (a, b);
      86  }
      87  
      88  v4di
      89  f12 (v4di a, v4di b)
      90  {
      91    return __builtin_ia32_pcmpeqq256 (a, b);
      92  }
      93  
      94  v32qi
      95  f13 (v32qi a, v32qi b)
      96  {
      97    return __builtin_ia32_pcmpgtb256 (a, b);
      98  }
      99  
     100  v16hi
     101  f14 (v16hi a, v16hi b)
     102  {
     103    return __builtin_ia32_pcmpgtw256 (a, b);
     104  }
     105  
     106  v8si
     107  f15 (v8si a, v8si b)
     108  {
     109    return __builtin_ia32_pcmpgtd256 (a, b);
     110  }
     111  
     112  v4di
     113  f16 (v4di a, v4di b)
     114  {
     115    return __builtin_ia32_pcmpgtq256 (a, b);
     116  }