Viewing file: float128-cmove.c (1.11 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { 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} } } */
|