1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
/* { dg-require-effective-target ppc_float128_hw } */
/* { dg-require-effective-target power10_ok } */
/* { dg-options "-mdejagnu-cpu=power10 -O2" } */
/* Test whether the LXVKQ instruction is generated to load special IEEE 128-bit
constants. */
_Float128
return_0 (void)
{
return 0.0f128; /* XXSPLTIB 34,0. */
}
_Float128
return_1 (void)
{
return 1.0f128; /* LXVKQ 34,1. */
}
_Float128
return_2 (void)
{
return 2.0f128; /* LXVKQ 34,2. */
}
_Float128
return_3 (void)
{
return 3.0f128; /* LXVKQ 34,3. */
}
_Float128
return_4 (void)
{
return 4.0f128; /* LXVKQ 34,4. */
}
_Float128
return_5 (void)
{
return 5.0f128; /* LXVKQ 34,5. */
}
_Float128
return_6 (void)
{
return 6.0f128; /* LXVKQ 34,6. */
}
_Float128
return_7 (void)
{
return 7.0f128; /* LXVKQ 34,7. */
}
_Float128
return_m0 (void)
{
return -0.0f128; /* LXVKQ 34,16. */
}
_Float128
return_m1 (void)
{
return -1.0f128; /* LXVKQ 34,17. */
}
_Float128
return_m2 (void)
{
return -2.0f128; /* LXVKQ 34,18. */
}
_Float128
return_m3 (void)
{
return -3.0f128; /* LXVKQ 34,19. */
}
_Float128
return_m4 (void)
{
return -4.0f128; /* LXVKQ 34,20. */
}
_Float128
return_m5 (void)
{
return -5.0f128; /* LXVKQ 34,21. */
}
_Float128
return_m6 (void)
{
return -6.0f128; /* LXVKQ 34,22. */
}
_Float128
return_m7 (void)
{
return -7.0f128; /* LXVKQ 34,23. */
}
_Float128
return_inf (void)
{
return __builtin_inff128 (); /* LXVKQ 34,8. */
}
_Float128
return_minf (void)
{
return - __builtin_inff128 (); /* LXVKQ 34,24. */
}
_Float128
return_nan (void)
{
return __builtin_nanf128 (""); /* LXVKQ 34,9. */
}
/* Note, the following NaNs should not generate a LXVKQ instruction. */
_Float128
return_mnan (void)
{
return - __builtin_nanf128 (""); /* PLXV 34,... */
}
_Float128
return_nan2 (void)
{
return __builtin_nanf128 ("1"); /* PLXV 34,... */
}
_Float128
return_nans (void)
{
return __builtin_nansf128 (""); /* PLXV 34,... */
}
vector long long
return_longlong_neg_0 (void)
{
/* This vector is the same pattern as -0.0F128. */
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
#define FIRST 0x8000000000000000
#define SECOND 0x0000000000000000
#else
#define FIRST 0x0000000000000000
#define SECOND 0x8000000000000000
#endif
return (vector long long) { FIRST, SECOND }; /* LXVKQ 34,16. */
}
/* { dg-final { scan-assembler-times {\mlxvkq\M} 19 } } */
/* { dg-final { scan-assembler-times {\mplxv\M} 3 } } */
/* { dg-final { scan-assembler-times {\mxxspltib\M} 1 } } */
|