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
cmpeq(vector double a,vector double b)15 cmpeq (vector double a, vector double b)
16 {
17   return vec_cmpeq (a, b); /* vfcedb */
18 }
19 
20 vector bool long long
cmpgt(vector double a,vector double b)21 cmpgt (vector double a, vector double b)
22 {
23   return vec_cmpgt (a, b); /* vfchdb */
24 }
25 
26 vector bool long long
cmpge(vector double a,vector double b)27 cmpge (vector double a, vector double b)
28 {
29   return vec_cmpge (a, b); /* vfchedb */
30 }
31 
32 vector bool long long
cmplt(vector double a,vector double b)33 cmplt (vector double a, vector double b)
34 {
35   return vec_cmplt (a, b); /* vfchdb */
36 }
37 
38 vector bool long long
cmple(vector double a,vector double b)39 cmple (vector double a, vector double b)
40 {
41   return vec_cmple (a, b); /* vfchedb */
42 }
43 
44 int
all_eq(vector double a,vector double b)45 all_eq (vector double a, vector double b)
46 {
47   return vec_all_eq (a, b);
48 }
49 
50 int
any_eq(vector double a,vector double b)51 any_eq (vector double a, vector double b)
52 {
53   return vec_any_eq (a, b);
54 }
55 
56 int
all_lt(vector double a,vector double b)57 all_lt (vector double a, vector double b)
58 {
59   return vec_all_lt (a, b);
60 }
61 
62 int
any_lt(vector double a,vector double b)63 any_lt (vector double a, vector double b)
64 {
65   return vec_any_lt (a, b);
66 }
67