1  /* { dg-do compile { target { s390*-*-* } } } */
       2  /* { dg-options "-O3 -mzarch -march=z13 -mzvector --save-temps" } */
       3  
       4  /* { dg-final { scan-assembler-times "vfcedb\t" 1 } } */
       5  /* { dg-final { scan-assembler-times "vfchdb\t" 2 } } */
       6  /* { dg-final { scan-assembler-times "vfchedb\t" 2 } } */
       7  
       8  /* { dg-final { scan-assembler-times "vfcedbs\t" 2 } } */
       9  /* { dg-final { scan-assembler-times "vfchdbs\t" 2 } } */
      10  
      11  
      12  #include <vecintrin.h>
      13  
      14  vector bool long long
      15  cmpeq (vector double a, vector double b)
      16  {
      17    return vec_cmpeq (a, b); /* vfcedb */
      18  }
      19  
      20  vector bool long long
      21  cmpgt (vector double a, vector double b)
      22  {
      23    return vec_cmpgt (a, b); /* vfchdb */
      24  }
      25  
      26  vector bool long long
      27  cmpge (vector double a, vector double b)
      28  {
      29    return vec_cmpge (a, b); /* vfchedb */
      30  }
      31  
      32  vector bool long long
      33  cmplt (vector double a, vector double b)
      34  {
      35    return vec_cmplt (a, b); /* vfchdb */
      36  }
      37  
      38  vector bool long long
      39  cmple (vector double a, vector double b)
      40  {
      41    return vec_cmple (a, b); /* vfchedb */
      42  }
      43  
      44  int
      45  all_eq (vector double a, vector double b)
      46  {
      47    return vec_all_eq (a, b);
      48  }
      49  
      50  int
      51  any_eq (vector double a, vector double b)
      52  {
      53    return vec_any_eq (a, b);
      54  }
      55  
      56  int
      57  all_lt (vector double a, vector double b)
      58  {
      59    return vec_all_lt (a, b);
      60  }
      61  
      62  int
      63  any_lt (vector double a, vector double b)
      64  {
      65    return vec_any_lt (a, b);
      66  }