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