1 /* Check that we use the scalar variants of vector compares. */
2
3 /* { dg-do compile { target { s390*-*-* } } } */
4 /* { dg-options "-O3 -mzarch -march=z13 -fno-asynchronous-unwind-tables" } */
5
6 int
eq(double a,double b)7 eq (double a, double b)
8 {
9 asm ("" : : :
10 "f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
11 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
12 return a == b;
13 }
14
15 /* { dg-final { scan-assembler "eq:\n\[^:\]*\twfcdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochie\t%r2,1" { target { ! lp64 } } } } */
16 /* { dg-final { scan-assembler "eq:\n\[^:\]*\twfcdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghie\t%r2,1" { target lp64 } } } */
17
18 int
ne(double a,double b)19 ne (double a, double b)
20 {
21 asm ("" : : :
22 "f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
23 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
24 return a != b;
25 }
26
27 /* { dg-final { scan-assembler "ne:\n\[^:\]*\twfcdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochine\t%r2,1" { target { ! lp64 } } } } */
28 /* { dg-final { scan-assembler "ne:\n\[^:\]*\twfcdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghine\t%r2,1" { target lp64 } } } */
29
30 int
gt(double a,double b)31 gt (double a, double b)
32 {
33 asm ("" : : :
34 "f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
35 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
36 return a > b;
37 }
38
39 /* { dg-final { scan-assembler "gt:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochih\t%r2,1" { target { ! lp64 } } } } */
40 /* { dg-final { scan-assembler "gt:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghih\t%r2,1" { target lp64 } } } */
41
42 int
ge(double a,double b)43 ge (double a, double b)
44 {
45 asm ("" : : :
46 "f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
47 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
48 return a >= b;
49 }
50
51 /* { dg-final { scan-assembler "ge:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochihe\t%r2,1" { target { ! lp64 } } } } */
52 /* { dg-final { scan-assembler "ge:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghihe\t%r2,1" { target lp64 } } } */
53
54 int
lt(double a,double b)55 lt (double a, double b)
56 {
57 asm ("" : : :
58 "f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
59 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
60 return a < b;
61 }
62
63 /* { dg-final { scan-assembler "lt:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochil\t%r2,1" { target { ! lp64 } } } } */
64 /* { dg-final { scan-assembler "lt:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghil\t%r2,1" { target lp64 } } } */
65
66 int
le(double a,double b)67 le (double a, double b)
68 {
69 asm ("" : : :
70 "f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
71 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
72 return a <= b;
73 }
74
75 /* { dg-final { scan-assembler "le:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochile\t%r2,1" { target { ! lp64 } } } } */
76 /* { dg-final { scan-assembler "le:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghile\t%r2,1" { target lp64 } } } */
77