blob: 03db4e0854fd87d41d99f4e52a11ba93aa33da76 [file] [log] [blame]
/* Check that we use the scalar variants of vector compares. */
/* { dg-do compile { target { s390*-*-* } } } */
/* { dg-options "-O3 -mzarch -march=z13 -fno-asynchronous-unwind-tables" } */
int
eq (double a, double b)
{
asm ("" : : :
"f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
return a == b;
}
/* { dg-final { scan-assembler "eq:\n\[^:\]*\twfcdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochie\t%r2,1" { target { ! lp64 } } } } */
/* { dg-final { scan-assembler "eq:\n\[^:\]*\twfcdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghie\t%r2,1" { target lp64 } } } */
int
ne (double a, double b)
{
asm ("" : : :
"f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
return a != b;
}
/* { dg-final { scan-assembler "ne:\n\[^:\]*\twfcdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochine\t%r2,1" { target { ! lp64 } } } } */
/* { dg-final { scan-assembler "ne:\n\[^:\]*\twfcdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghine\t%r2,1" { target lp64 } } } */
int
gt (double a, double b)
{
asm ("" : : :
"f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
return a > b;
}
/* { dg-final { scan-assembler "gt:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochih\t%r2,1" { target { ! lp64 } } } } */
/* { dg-final { scan-assembler "gt:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghih\t%r2,1" { target lp64 } } } */
int
ge (double a, double b)
{
asm ("" : : :
"f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
return a >= b;
}
/* { dg-final { scan-assembler "ge:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochihe\t%r2,1" { target { ! lp64 } } } } */
/* { dg-final { scan-assembler "ge:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghihe\t%r2,1" { target lp64 } } } */
int
lt (double a, double b)
{
asm ("" : : :
"f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
return a < b;
}
/* { dg-final { scan-assembler "lt:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochil\t%r2,1" { target { ! lp64 } } } } */
/* { dg-final { scan-assembler "lt:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghil\t%r2,1" { target lp64 } } } */
int
le (double a, double b)
{
asm ("" : : :
"f0", "f1", "f2", "f3", "f4" , "f5", "f6", "f7",
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15");
return a <= b;
}
/* { dg-final { scan-assembler "le:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlochile\t%r2,1" { target { ! lp64 } } } } */
/* { dg-final { scan-assembler "le:\n\[^:\]*\twfkdb\t%v\[0-9\]*,%v\[0-9\]*\n\t\[^:\]+\tlocghile\t%r2,1" { target lp64 } } } */