59 lines
1.1 KiB
C
59 lines
1.1 KiB
C
/* { dg-do compile } */
|
|
/* { dg-require-effective-target ppc_float128_hw } */
|
|
/* { dg-require-effective-target power10_ok } */
|
|
/* { dg-options "-mdejagnu-cpu=power10 -O2" } */
|
|
|
|
#ifndef TYPE
|
|
#ifdef __LONG_DOUBLE_IEEE128__
|
|
#define TYPE long double
|
|
|
|
#else
|
|
#define TYPE _Float128
|
|
#endif
|
|
#endif
|
|
|
|
/* Verify that the ISA 3.1 (power10) IEEE 128-bit conditional move instructions
|
|
are generated. */
|
|
|
|
TYPE
|
|
eq (TYPE a, TYPE b, TYPE c, TYPE d)
|
|
{
|
|
return (a == b) ? c : d;
|
|
}
|
|
|
|
TYPE
|
|
ne (TYPE a, TYPE b, TYPE c, TYPE d)
|
|
{
|
|
return (a != b) ? c : d;
|
|
}
|
|
|
|
TYPE
|
|
lt (TYPE a, TYPE b, TYPE c, TYPE d)
|
|
{
|
|
return (a < b) ? c : d;
|
|
}
|
|
|
|
TYPE
|
|
le (TYPE a, TYPE b, TYPE c, TYPE d)
|
|
{
|
|
return (a <= b) ? c : d;
|
|
}
|
|
|
|
TYPE
|
|
gt (TYPE a, TYPE b, TYPE c, TYPE d)
|
|
{
|
|
return (a > b) ? c : d;
|
|
}
|
|
|
|
TYPE
|
|
ge (TYPE a, TYPE b, TYPE c, TYPE d)
|
|
{
|
|
return (a >= b) ? c : d;
|
|
}
|
|
|
|
/* { dg-final { scan-assembler-times {\mxscmpeqqp\M} 2 } } */
|
|
/* { dg-final { scan-assembler-times {\mxscmpgeqp\M} 2 } } */
|
|
/* { dg-final { scan-assembler-times {\mxscmpgtqp\M} 2 } } */
|
|
/* { dg-final { scan-assembler-times {\mxxsel\M} 6 } } */
|
|
/* { dg-final { scan-assembler-not {\mxscmpuqp\M} } } */
|