1*1f21f64aSMarius Strobl 2*1f21f64aSMarius Strobl /* 3*1f21f64aSMarius Strobl =============================================================================== 4*1f21f64aSMarius Strobl 5*1f21f64aSMarius Strobl This C source file is part of TestFloat, Release 2a, a package of programs 6*1f21f64aSMarius Strobl for testing the correctness of floating-point arithmetic complying to the 7*1f21f64aSMarius Strobl IEC/IEEE Standard for Floating-Point. 8*1f21f64aSMarius Strobl 9*1f21f64aSMarius Strobl Written by John R. Hauser. More information is available through the Web 10*1f21f64aSMarius Strobl page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'. 11*1f21f64aSMarius Strobl 12*1f21f64aSMarius Strobl THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort 13*1f21f64aSMarius Strobl has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT 14*1f21f64aSMarius Strobl TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO 15*1f21f64aSMarius Strobl PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY 16*1f21f64aSMarius Strobl AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE. 17*1f21f64aSMarius Strobl 18*1f21f64aSMarius Strobl Derivative works are acceptable, even for commercial purposes, so long as 19*1f21f64aSMarius Strobl (1) they include prominent notice that the work is derivative, and (2) they 20*1f21f64aSMarius Strobl include prominent notice akin to these four paragraphs for those parts of 21*1f21f64aSMarius Strobl this code that are retained. 22*1f21f64aSMarius Strobl 23*1f21f64aSMarius Strobl =============================================================================== 24*1f21f64aSMarius Strobl */ 25*1f21f64aSMarius Strobl 26*1f21f64aSMarius Strobl #include "milieu.h" 27*1f21f64aSMarius Strobl #include "softfloat.h" 28*1f21f64aSMarius Strobl #include "testCases.h" 29*1f21f64aSMarius Strobl #include "testLoops.h" 30*1f21f64aSMarius Strobl #include "systmodes.h" 31*1f21f64aSMarius Strobl #include "systflags.h" 32*1f21f64aSMarius Strobl #include "systfloat.h" 33*1f21f64aSMarius Strobl #include "testFunction.h" 34*1f21f64aSMarius Strobl 35*1f21f64aSMarius Strobl const functionT functions[ NUM_FUNCTIONS ] = { 36*1f21f64aSMarius Strobl { 0, 0, 0, 0 }, 37*1f21f64aSMarius Strobl { "int32_to_float32", 1, FALSE, TRUE }, 38*1f21f64aSMarius Strobl { "int32_to_float64", 1, FALSE, FALSE }, 39*1f21f64aSMarius Strobl { "int32_to_floatx80", 1, FALSE, FALSE }, 40*1f21f64aSMarius Strobl { "int32_to_float128", 1, FALSE, FALSE }, 41*1f21f64aSMarius Strobl { "int64_to_float32", 1, FALSE, TRUE }, 42*1f21f64aSMarius Strobl { "int64_to_float64", 1, FALSE, TRUE }, 43*1f21f64aSMarius Strobl { "int64_to_floatx80", 1, FALSE, FALSE }, 44*1f21f64aSMarius Strobl { "int64_to_float128", 1, FALSE, FALSE }, 45*1f21f64aSMarius Strobl { "float32_to_int32", 1, FALSE, TRUE }, 46*1f21f64aSMarius Strobl { "float32_to_int32_round_to_zero", 1, FALSE, FALSE }, 47*1f21f64aSMarius Strobl { "float32_to_int64", 1, FALSE, TRUE }, 48*1f21f64aSMarius Strobl { "float32_to_int64_round_to_zero", 1, FALSE, FALSE }, 49*1f21f64aSMarius Strobl { "float32_to_float64", 1, FALSE, FALSE }, 50*1f21f64aSMarius Strobl { "float32_to_floatx80", 1, FALSE, FALSE }, 51*1f21f64aSMarius Strobl { "float32_to_float128", 1, FALSE, FALSE }, 52*1f21f64aSMarius Strobl { "float32_round_to_int", 1, FALSE, TRUE }, 53*1f21f64aSMarius Strobl { "float32_add", 2, FALSE, TRUE }, 54*1f21f64aSMarius Strobl { "float32_sub", 2, FALSE, TRUE }, 55*1f21f64aSMarius Strobl { "float32_mul", 2, FALSE, TRUE }, 56*1f21f64aSMarius Strobl { "float32_div", 2, FALSE, TRUE }, 57*1f21f64aSMarius Strobl { "float32_rem", 2, FALSE, FALSE }, 58*1f21f64aSMarius Strobl { "float32_sqrt", 1, FALSE, TRUE }, 59*1f21f64aSMarius Strobl { "float32_eq", 2, FALSE, FALSE }, 60*1f21f64aSMarius Strobl { "float32_le", 2, FALSE, FALSE }, 61*1f21f64aSMarius Strobl { "float32_lt", 2, FALSE, FALSE }, 62*1f21f64aSMarius Strobl { "float32_eq_signaling", 2, FALSE, FALSE }, 63*1f21f64aSMarius Strobl { "float32_le_quiet", 2, FALSE, FALSE }, 64*1f21f64aSMarius Strobl { "float32_lt_quiet", 2, FALSE, FALSE }, 65*1f21f64aSMarius Strobl { "float64_to_int32", 1, FALSE, TRUE }, 66*1f21f64aSMarius Strobl { "float64_to_int32_round_to_zero", 1, FALSE, FALSE }, 67*1f21f64aSMarius Strobl { "float64_to_int64", 1, FALSE, TRUE }, 68*1f21f64aSMarius Strobl { "float64_to_int64_round_to_zero", 1, FALSE, FALSE }, 69*1f21f64aSMarius Strobl { "float64_to_float32", 1, FALSE, TRUE }, 70*1f21f64aSMarius Strobl { "float64_to_floatx80", 1, FALSE, FALSE }, 71*1f21f64aSMarius Strobl { "float64_to_float128", 1, FALSE, FALSE }, 72*1f21f64aSMarius Strobl { "float64_round_to_int", 1, FALSE, TRUE }, 73*1f21f64aSMarius Strobl { "float64_add", 2, FALSE, TRUE }, 74*1f21f64aSMarius Strobl { "float64_sub", 2, FALSE, TRUE }, 75*1f21f64aSMarius Strobl { "float64_mul", 2, FALSE, TRUE }, 76*1f21f64aSMarius Strobl { "float64_div", 2, FALSE, TRUE }, 77*1f21f64aSMarius Strobl { "float64_rem", 2, FALSE, FALSE }, 78*1f21f64aSMarius Strobl { "float64_sqrt", 1, FALSE, TRUE }, 79*1f21f64aSMarius Strobl { "float64_eq", 2, FALSE, FALSE }, 80*1f21f64aSMarius Strobl { "float64_le", 2, FALSE, FALSE }, 81*1f21f64aSMarius Strobl { "float64_lt", 2, FALSE, FALSE }, 82*1f21f64aSMarius Strobl { "float64_eq_signaling", 2, FALSE, FALSE }, 83*1f21f64aSMarius Strobl { "float64_le_quiet", 2, FALSE, FALSE }, 84*1f21f64aSMarius Strobl { "float64_lt_quiet", 2, FALSE, FALSE }, 85*1f21f64aSMarius Strobl { "floatx80_to_int32", 1, FALSE, TRUE }, 86*1f21f64aSMarius Strobl { "floatx80_to_int32_round_to_zero", 1, FALSE, FALSE }, 87*1f21f64aSMarius Strobl { "floatx80_to_int64", 1, FALSE, TRUE }, 88*1f21f64aSMarius Strobl { "floatx80_to_int64_round_to_zero", 1, FALSE, FALSE }, 89*1f21f64aSMarius Strobl { "floatx80_to_float32", 1, FALSE, TRUE }, 90*1f21f64aSMarius Strobl { "floatx80_to_float64", 1, FALSE, TRUE }, 91*1f21f64aSMarius Strobl { "floatx80_to_float128", 1, FALSE, FALSE }, 92*1f21f64aSMarius Strobl { "floatx80_round_to_int", 1, FALSE, TRUE }, 93*1f21f64aSMarius Strobl { "floatx80_add", 2, TRUE, TRUE }, 94*1f21f64aSMarius Strobl { "floatx80_sub", 2, TRUE, TRUE }, 95*1f21f64aSMarius Strobl { "floatx80_mul", 2, TRUE, TRUE }, 96*1f21f64aSMarius Strobl { "floatx80_div", 2, TRUE, TRUE }, 97*1f21f64aSMarius Strobl { "floatx80_rem", 2, FALSE, FALSE }, 98*1f21f64aSMarius Strobl { "floatx80_sqrt", 1, TRUE, TRUE }, 99*1f21f64aSMarius Strobl { "floatx80_eq", 2, FALSE, FALSE }, 100*1f21f64aSMarius Strobl { "floatx80_le", 2, FALSE, FALSE }, 101*1f21f64aSMarius Strobl { "floatx80_lt", 2, FALSE, FALSE }, 102*1f21f64aSMarius Strobl { "floatx80_eq_signaling", 2, FALSE, FALSE }, 103*1f21f64aSMarius Strobl { "floatx80_le_quiet", 2, FALSE, FALSE }, 104*1f21f64aSMarius Strobl { "floatx80_lt_quiet", 2, FALSE, FALSE }, 105*1f21f64aSMarius Strobl { "float128_to_int32", 1, FALSE, TRUE }, 106*1f21f64aSMarius Strobl { "float128_to_int32_round_to_zero", 1, FALSE, FALSE }, 107*1f21f64aSMarius Strobl { "float128_to_int64", 1, FALSE, TRUE }, 108*1f21f64aSMarius Strobl { "float128_to_int64_round_to_zero", 1, FALSE, FALSE }, 109*1f21f64aSMarius Strobl { "float128_to_float32", 1, FALSE, TRUE }, 110*1f21f64aSMarius Strobl { "float128_to_float64", 1, FALSE, TRUE }, 111*1f21f64aSMarius Strobl { "float128_to_floatx80", 1, FALSE, TRUE }, 112*1f21f64aSMarius Strobl { "float128_round_to_int", 1, FALSE, TRUE }, 113*1f21f64aSMarius Strobl { "float128_add", 2, FALSE, TRUE }, 114*1f21f64aSMarius Strobl { "float128_sub", 2, FALSE, TRUE }, 115*1f21f64aSMarius Strobl { "float128_mul", 2, FALSE, TRUE }, 116*1f21f64aSMarius Strobl { "float128_div", 2, FALSE, TRUE }, 117*1f21f64aSMarius Strobl { "float128_rem", 2, FALSE, FALSE }, 118*1f21f64aSMarius Strobl { "float128_sqrt", 1, FALSE, TRUE }, 119*1f21f64aSMarius Strobl { "float128_eq", 2, FALSE, FALSE }, 120*1f21f64aSMarius Strobl { "float128_le", 2, FALSE, FALSE }, 121*1f21f64aSMarius Strobl { "float128_lt", 2, FALSE, FALSE }, 122*1f21f64aSMarius Strobl { "float128_eq_signaling", 2, FALSE, FALSE }, 123*1f21f64aSMarius Strobl { "float128_le_quiet", 2, FALSE, FALSE }, 124*1f21f64aSMarius Strobl { "float128_lt_quiet", 2, FALSE, FALSE }, 125*1f21f64aSMarius Strobl }; 126*1f21f64aSMarius Strobl 127*1f21f64aSMarius Strobl const flag functionExists[ NUM_FUNCTIONS ] = { 128*1f21f64aSMarius Strobl 0, 129*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT32 130*1f21f64aSMarius Strobl 1, 131*1f21f64aSMarius Strobl #else 132*1f21f64aSMarius Strobl 0, 133*1f21f64aSMarius Strobl #endif 134*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT64 135*1f21f64aSMarius Strobl 1, 136*1f21f64aSMarius Strobl #else 137*1f21f64aSMarius Strobl 0, 138*1f21f64aSMarius Strobl #endif 139*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOATX80 140*1f21f64aSMarius Strobl 1, 141*1f21f64aSMarius Strobl #else 142*1f21f64aSMarius Strobl 0, 143*1f21f64aSMarius Strobl #endif 144*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT128 145*1f21f64aSMarius Strobl 1, 146*1f21f64aSMarius Strobl #else 147*1f21f64aSMarius Strobl 0, 148*1f21f64aSMarius Strobl #endif 149*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT32 150*1f21f64aSMarius Strobl 1, 151*1f21f64aSMarius Strobl #else 152*1f21f64aSMarius Strobl 0, 153*1f21f64aSMarius Strobl #endif 154*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT64 155*1f21f64aSMarius Strobl 1, 156*1f21f64aSMarius Strobl #else 157*1f21f64aSMarius Strobl 0, 158*1f21f64aSMarius Strobl #endif 159*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOATX80 160*1f21f64aSMarius Strobl 1, 161*1f21f64aSMarius Strobl #else 162*1f21f64aSMarius Strobl 0, 163*1f21f64aSMarius Strobl #endif 164*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT128 165*1f21f64aSMarius Strobl 1, 166*1f21f64aSMarius Strobl #else 167*1f21f64aSMarius Strobl 0, 168*1f21f64aSMarius Strobl #endif 169*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT32 170*1f21f64aSMarius Strobl 1, 171*1f21f64aSMarius Strobl #else 172*1f21f64aSMarius Strobl 0, 173*1f21f64aSMarius Strobl #endif 174*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT32_ROUND_TO_ZERO 175*1f21f64aSMarius Strobl 1, 176*1f21f64aSMarius Strobl #else 177*1f21f64aSMarius Strobl 0, 178*1f21f64aSMarius Strobl #endif 179*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT64 180*1f21f64aSMarius Strobl 1, 181*1f21f64aSMarius Strobl #else 182*1f21f64aSMarius Strobl 0, 183*1f21f64aSMarius Strobl #endif 184*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT64_ROUND_TO_ZERO 185*1f21f64aSMarius Strobl 1, 186*1f21f64aSMarius Strobl #else 187*1f21f64aSMarius Strobl 0, 188*1f21f64aSMarius Strobl #endif 189*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOAT64 190*1f21f64aSMarius Strobl 1, 191*1f21f64aSMarius Strobl #else 192*1f21f64aSMarius Strobl 0, 193*1f21f64aSMarius Strobl #endif 194*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOATX80 195*1f21f64aSMarius Strobl 1, 196*1f21f64aSMarius Strobl #else 197*1f21f64aSMarius Strobl 0, 198*1f21f64aSMarius Strobl #endif 199*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOAT128 200*1f21f64aSMarius Strobl 1, 201*1f21f64aSMarius Strobl #else 202*1f21f64aSMarius Strobl 0, 203*1f21f64aSMarius Strobl #endif 204*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_ROUND_TO_INT 205*1f21f64aSMarius Strobl 1, 206*1f21f64aSMarius Strobl #else 207*1f21f64aSMarius Strobl 0, 208*1f21f64aSMarius Strobl #endif 209*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_ADD 210*1f21f64aSMarius Strobl 1, 211*1f21f64aSMarius Strobl #else 212*1f21f64aSMarius Strobl 0, 213*1f21f64aSMarius Strobl #endif 214*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_SUB 215*1f21f64aSMarius Strobl 1, 216*1f21f64aSMarius Strobl #else 217*1f21f64aSMarius Strobl 0, 218*1f21f64aSMarius Strobl #endif 219*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_MUL 220*1f21f64aSMarius Strobl 1, 221*1f21f64aSMarius Strobl #else 222*1f21f64aSMarius Strobl 0, 223*1f21f64aSMarius Strobl #endif 224*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_DIV 225*1f21f64aSMarius Strobl 1, 226*1f21f64aSMarius Strobl #else 227*1f21f64aSMarius Strobl 0, 228*1f21f64aSMarius Strobl #endif 229*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_REM 230*1f21f64aSMarius Strobl 1, 231*1f21f64aSMarius Strobl #else 232*1f21f64aSMarius Strobl 0, 233*1f21f64aSMarius Strobl #endif 234*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_SQRT 235*1f21f64aSMarius Strobl 1, 236*1f21f64aSMarius Strobl #else 237*1f21f64aSMarius Strobl 0, 238*1f21f64aSMarius Strobl #endif 239*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_EQ 240*1f21f64aSMarius Strobl 1, 241*1f21f64aSMarius Strobl #else 242*1f21f64aSMarius Strobl 0, 243*1f21f64aSMarius Strobl #endif 244*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LE 245*1f21f64aSMarius Strobl 1, 246*1f21f64aSMarius Strobl #else 247*1f21f64aSMarius Strobl 0, 248*1f21f64aSMarius Strobl #endif 249*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LT 250*1f21f64aSMarius Strobl 1, 251*1f21f64aSMarius Strobl #else 252*1f21f64aSMarius Strobl 0, 253*1f21f64aSMarius Strobl #endif 254*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_EQ_SIGNALING 255*1f21f64aSMarius Strobl 1, 256*1f21f64aSMarius Strobl #else 257*1f21f64aSMarius Strobl 0, 258*1f21f64aSMarius Strobl #endif 259*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LE_QUIET 260*1f21f64aSMarius Strobl 1, 261*1f21f64aSMarius Strobl #else 262*1f21f64aSMarius Strobl 0, 263*1f21f64aSMarius Strobl #endif 264*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LT_QUIET 265*1f21f64aSMarius Strobl 1, 266*1f21f64aSMarius Strobl #else 267*1f21f64aSMarius Strobl 0, 268*1f21f64aSMarius Strobl #endif 269*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT32 270*1f21f64aSMarius Strobl 1, 271*1f21f64aSMarius Strobl #else 272*1f21f64aSMarius Strobl 0, 273*1f21f64aSMarius Strobl #endif 274*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT32_ROUND_TO_ZERO 275*1f21f64aSMarius Strobl 1, 276*1f21f64aSMarius Strobl #else 277*1f21f64aSMarius Strobl 0, 278*1f21f64aSMarius Strobl #endif 279*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT64 280*1f21f64aSMarius Strobl 1, 281*1f21f64aSMarius Strobl #else 282*1f21f64aSMarius Strobl 0, 283*1f21f64aSMarius Strobl #endif 284*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT64_ROUND_TO_ZERO 285*1f21f64aSMarius Strobl 1, 286*1f21f64aSMarius Strobl #else 287*1f21f64aSMarius Strobl 0, 288*1f21f64aSMarius Strobl #endif 289*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOAT32 290*1f21f64aSMarius Strobl 1, 291*1f21f64aSMarius Strobl #else 292*1f21f64aSMarius Strobl 0, 293*1f21f64aSMarius Strobl #endif 294*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOATX80 295*1f21f64aSMarius Strobl 1, 296*1f21f64aSMarius Strobl #else 297*1f21f64aSMarius Strobl 0, 298*1f21f64aSMarius Strobl #endif 299*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOAT128 300*1f21f64aSMarius Strobl 1, 301*1f21f64aSMarius Strobl #else 302*1f21f64aSMarius Strobl 0, 303*1f21f64aSMarius Strobl #endif 304*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_ROUND_TO_INT 305*1f21f64aSMarius Strobl 1, 306*1f21f64aSMarius Strobl #else 307*1f21f64aSMarius Strobl 0, 308*1f21f64aSMarius Strobl #endif 309*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_ADD 310*1f21f64aSMarius Strobl 1, 311*1f21f64aSMarius Strobl #else 312*1f21f64aSMarius Strobl 0, 313*1f21f64aSMarius Strobl #endif 314*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_SUB 315*1f21f64aSMarius Strobl 1, 316*1f21f64aSMarius Strobl #else 317*1f21f64aSMarius Strobl 0, 318*1f21f64aSMarius Strobl #endif 319*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_MUL 320*1f21f64aSMarius Strobl 1, 321*1f21f64aSMarius Strobl #else 322*1f21f64aSMarius Strobl 0, 323*1f21f64aSMarius Strobl #endif 324*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_DIV 325*1f21f64aSMarius Strobl 1, 326*1f21f64aSMarius Strobl #else 327*1f21f64aSMarius Strobl 0, 328*1f21f64aSMarius Strobl #endif 329*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_REM 330*1f21f64aSMarius Strobl 1, 331*1f21f64aSMarius Strobl #else 332*1f21f64aSMarius Strobl 0, 333*1f21f64aSMarius Strobl #endif 334*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_SQRT 335*1f21f64aSMarius Strobl 1, 336*1f21f64aSMarius Strobl #else 337*1f21f64aSMarius Strobl 0, 338*1f21f64aSMarius Strobl #endif 339*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_EQ 340*1f21f64aSMarius Strobl 1, 341*1f21f64aSMarius Strobl #else 342*1f21f64aSMarius Strobl 0, 343*1f21f64aSMarius Strobl #endif 344*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LE 345*1f21f64aSMarius Strobl 1, 346*1f21f64aSMarius Strobl #else 347*1f21f64aSMarius Strobl 0, 348*1f21f64aSMarius Strobl #endif 349*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LT 350*1f21f64aSMarius Strobl 1, 351*1f21f64aSMarius Strobl #else 352*1f21f64aSMarius Strobl 0, 353*1f21f64aSMarius Strobl #endif 354*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_EQ_SIGNALING 355*1f21f64aSMarius Strobl 1, 356*1f21f64aSMarius Strobl #else 357*1f21f64aSMarius Strobl 0, 358*1f21f64aSMarius Strobl #endif 359*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LE_QUIET 360*1f21f64aSMarius Strobl 1, 361*1f21f64aSMarius Strobl #else 362*1f21f64aSMarius Strobl 0, 363*1f21f64aSMarius Strobl #endif 364*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LT_QUIET 365*1f21f64aSMarius Strobl 1, 366*1f21f64aSMarius Strobl #else 367*1f21f64aSMarius Strobl 0, 368*1f21f64aSMarius Strobl #endif 369*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT32 370*1f21f64aSMarius Strobl 1, 371*1f21f64aSMarius Strobl #else 372*1f21f64aSMarius Strobl 0, 373*1f21f64aSMarius Strobl #endif 374*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT32_ROUND_TO_ZERO 375*1f21f64aSMarius Strobl 1, 376*1f21f64aSMarius Strobl #else 377*1f21f64aSMarius Strobl 0, 378*1f21f64aSMarius Strobl #endif 379*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT64 380*1f21f64aSMarius Strobl 1, 381*1f21f64aSMarius Strobl #else 382*1f21f64aSMarius Strobl 0, 383*1f21f64aSMarius Strobl #endif 384*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT64_ROUND_TO_ZERO 385*1f21f64aSMarius Strobl 1, 386*1f21f64aSMarius Strobl #else 387*1f21f64aSMarius Strobl 0, 388*1f21f64aSMarius Strobl #endif 389*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT32 390*1f21f64aSMarius Strobl 1, 391*1f21f64aSMarius Strobl #else 392*1f21f64aSMarius Strobl 0, 393*1f21f64aSMarius Strobl #endif 394*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT64 395*1f21f64aSMarius Strobl 1, 396*1f21f64aSMarius Strobl #else 397*1f21f64aSMarius Strobl 0, 398*1f21f64aSMarius Strobl #endif 399*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT128 400*1f21f64aSMarius Strobl 1, 401*1f21f64aSMarius Strobl #else 402*1f21f64aSMarius Strobl 0, 403*1f21f64aSMarius Strobl #endif 404*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_ROUND_TO_INT 405*1f21f64aSMarius Strobl 1, 406*1f21f64aSMarius Strobl #else 407*1f21f64aSMarius Strobl 0, 408*1f21f64aSMarius Strobl #endif 409*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_ADD 410*1f21f64aSMarius Strobl 1, 411*1f21f64aSMarius Strobl #else 412*1f21f64aSMarius Strobl 0, 413*1f21f64aSMarius Strobl #endif 414*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_SUB 415*1f21f64aSMarius Strobl 1, 416*1f21f64aSMarius Strobl #else 417*1f21f64aSMarius Strobl 0, 418*1f21f64aSMarius Strobl #endif 419*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_MUL 420*1f21f64aSMarius Strobl 1, 421*1f21f64aSMarius Strobl #else 422*1f21f64aSMarius Strobl 0, 423*1f21f64aSMarius Strobl #endif 424*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_DIV 425*1f21f64aSMarius Strobl 1, 426*1f21f64aSMarius Strobl #else 427*1f21f64aSMarius Strobl 0, 428*1f21f64aSMarius Strobl #endif 429*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_REM 430*1f21f64aSMarius Strobl 1, 431*1f21f64aSMarius Strobl #else 432*1f21f64aSMarius Strobl 0, 433*1f21f64aSMarius Strobl #endif 434*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_SQRT 435*1f21f64aSMarius Strobl 1, 436*1f21f64aSMarius Strobl #else 437*1f21f64aSMarius Strobl 0, 438*1f21f64aSMarius Strobl #endif 439*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_EQ 440*1f21f64aSMarius Strobl 1, 441*1f21f64aSMarius Strobl #else 442*1f21f64aSMarius Strobl 0, 443*1f21f64aSMarius Strobl #endif 444*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LE 445*1f21f64aSMarius Strobl 1, 446*1f21f64aSMarius Strobl #else 447*1f21f64aSMarius Strobl 0, 448*1f21f64aSMarius Strobl #endif 449*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LT 450*1f21f64aSMarius Strobl 1, 451*1f21f64aSMarius Strobl #else 452*1f21f64aSMarius Strobl 0, 453*1f21f64aSMarius Strobl #endif 454*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_EQ_SIGNALING 455*1f21f64aSMarius Strobl 1, 456*1f21f64aSMarius Strobl #else 457*1f21f64aSMarius Strobl 0, 458*1f21f64aSMarius Strobl #endif 459*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LE_QUIET 460*1f21f64aSMarius Strobl 1, 461*1f21f64aSMarius Strobl #else 462*1f21f64aSMarius Strobl 0, 463*1f21f64aSMarius Strobl #endif 464*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LT_QUIET 465*1f21f64aSMarius Strobl 1, 466*1f21f64aSMarius Strobl #else 467*1f21f64aSMarius Strobl 0, 468*1f21f64aSMarius Strobl #endif 469*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT32 470*1f21f64aSMarius Strobl 1, 471*1f21f64aSMarius Strobl #else 472*1f21f64aSMarius Strobl 0, 473*1f21f64aSMarius Strobl #endif 474*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT32_ROUND_TO_ZERO 475*1f21f64aSMarius Strobl 1, 476*1f21f64aSMarius Strobl #else 477*1f21f64aSMarius Strobl 0, 478*1f21f64aSMarius Strobl #endif 479*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT64 480*1f21f64aSMarius Strobl 1, 481*1f21f64aSMarius Strobl #else 482*1f21f64aSMarius Strobl 0, 483*1f21f64aSMarius Strobl #endif 484*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT64_ROUND_TO_ZERO 485*1f21f64aSMarius Strobl 1, 486*1f21f64aSMarius Strobl #else 487*1f21f64aSMarius Strobl 0, 488*1f21f64aSMarius Strobl #endif 489*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOAT32 490*1f21f64aSMarius Strobl 1, 491*1f21f64aSMarius Strobl #else 492*1f21f64aSMarius Strobl 0, 493*1f21f64aSMarius Strobl #endif 494*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOAT64 495*1f21f64aSMarius Strobl 1, 496*1f21f64aSMarius Strobl #else 497*1f21f64aSMarius Strobl 0, 498*1f21f64aSMarius Strobl #endif 499*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOATX80 500*1f21f64aSMarius Strobl 1, 501*1f21f64aSMarius Strobl #else 502*1f21f64aSMarius Strobl 0, 503*1f21f64aSMarius Strobl #endif 504*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_ROUND_TO_INT 505*1f21f64aSMarius Strobl 1, 506*1f21f64aSMarius Strobl #else 507*1f21f64aSMarius Strobl 0, 508*1f21f64aSMarius Strobl #endif 509*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_ADD 510*1f21f64aSMarius Strobl 1, 511*1f21f64aSMarius Strobl #else 512*1f21f64aSMarius Strobl 0, 513*1f21f64aSMarius Strobl #endif 514*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_SUB 515*1f21f64aSMarius Strobl 1, 516*1f21f64aSMarius Strobl #else 517*1f21f64aSMarius Strobl 0, 518*1f21f64aSMarius Strobl #endif 519*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_MUL 520*1f21f64aSMarius Strobl 1, 521*1f21f64aSMarius Strobl #else 522*1f21f64aSMarius Strobl 0, 523*1f21f64aSMarius Strobl #endif 524*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_DIV 525*1f21f64aSMarius Strobl 1, 526*1f21f64aSMarius Strobl #else 527*1f21f64aSMarius Strobl 0, 528*1f21f64aSMarius Strobl #endif 529*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_REM 530*1f21f64aSMarius Strobl 1, 531*1f21f64aSMarius Strobl #else 532*1f21f64aSMarius Strobl 0, 533*1f21f64aSMarius Strobl #endif 534*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_SQRT 535*1f21f64aSMarius Strobl 1, 536*1f21f64aSMarius Strobl #else 537*1f21f64aSMarius Strobl 0, 538*1f21f64aSMarius Strobl #endif 539*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_EQ 540*1f21f64aSMarius Strobl 1, 541*1f21f64aSMarius Strobl #else 542*1f21f64aSMarius Strobl 0, 543*1f21f64aSMarius Strobl #endif 544*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LE 545*1f21f64aSMarius Strobl 1, 546*1f21f64aSMarius Strobl #else 547*1f21f64aSMarius Strobl 0, 548*1f21f64aSMarius Strobl #endif 549*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LT 550*1f21f64aSMarius Strobl 1, 551*1f21f64aSMarius Strobl #else 552*1f21f64aSMarius Strobl 0, 553*1f21f64aSMarius Strobl #endif 554*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_EQ_SIGNALING 555*1f21f64aSMarius Strobl 1, 556*1f21f64aSMarius Strobl #else 557*1f21f64aSMarius Strobl 0, 558*1f21f64aSMarius Strobl #endif 559*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LE_QUIET 560*1f21f64aSMarius Strobl 1, 561*1f21f64aSMarius Strobl #else 562*1f21f64aSMarius Strobl 0, 563*1f21f64aSMarius Strobl #endif 564*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LT_QUIET 565*1f21f64aSMarius Strobl 1, 566*1f21f64aSMarius Strobl #else 567*1f21f64aSMarius Strobl 0, 568*1f21f64aSMarius Strobl #endif 569*1f21f64aSMarius Strobl }; 570*1f21f64aSMarius Strobl 571*1f21f64aSMarius Strobl static void testFunctionVariety(uint8 functionCode,int8 roundingPrecision,int8 roundingMode)572*1f21f64aSMarius Strobl testFunctionVariety( 573*1f21f64aSMarius Strobl uint8 functionCode, int8 roundingPrecision, int8 roundingMode ) 574*1f21f64aSMarius Strobl { 575*1f21f64aSMarius Strobl uint8 roundingCode; 576*1f21f64aSMarius Strobl 577*1f21f64aSMarius Strobl functionName = functions[ functionCode ].name; 578*1f21f64aSMarius Strobl #ifdef FLOATX80 579*1f21f64aSMarius Strobl if ( roundingPrecision == 32 ) { 580*1f21f64aSMarius Strobl roundingPrecisionName = "32"; 581*1f21f64aSMarius Strobl } 582*1f21f64aSMarius Strobl else if ( roundingPrecision == 64 ) { 583*1f21f64aSMarius Strobl roundingPrecisionName = "64"; 584*1f21f64aSMarius Strobl } 585*1f21f64aSMarius Strobl else if ( roundingPrecision == 80 ) { 586*1f21f64aSMarius Strobl roundingPrecisionName = "80"; 587*1f21f64aSMarius Strobl } 588*1f21f64aSMarius Strobl else { 589*1f21f64aSMarius Strobl roundingPrecision = 80; 590*1f21f64aSMarius Strobl roundingPrecisionName = 0; 591*1f21f64aSMarius Strobl } 592*1f21f64aSMarius Strobl floatx80_rounding_precision = roundingPrecision; 593*1f21f64aSMarius Strobl syst_float_set_rounding_precision( roundingPrecision ); 594*1f21f64aSMarius Strobl #endif 595*1f21f64aSMarius Strobl switch ( roundingMode ) { 596*1f21f64aSMarius Strobl case 0: 597*1f21f64aSMarius Strobl roundingModeName = 0; 598*1f21f64aSMarius Strobl roundingCode = float_round_nearest_even; 599*1f21f64aSMarius Strobl break; 600*1f21f64aSMarius Strobl case ROUND_NEAREST_EVEN: 601*1f21f64aSMarius Strobl roundingModeName = "nearest_even"; 602*1f21f64aSMarius Strobl roundingCode = float_round_nearest_even; 603*1f21f64aSMarius Strobl break; 604*1f21f64aSMarius Strobl case ROUND_TO_ZERO: 605*1f21f64aSMarius Strobl roundingModeName = "to_zero"; 606*1f21f64aSMarius Strobl roundingCode = float_round_to_zero; 607*1f21f64aSMarius Strobl break; 608*1f21f64aSMarius Strobl case ROUND_DOWN: 609*1f21f64aSMarius Strobl roundingModeName = "down"; 610*1f21f64aSMarius Strobl roundingCode = float_round_down; 611*1f21f64aSMarius Strobl break; 612*1f21f64aSMarius Strobl case ROUND_UP: 613*1f21f64aSMarius Strobl roundingModeName = "up"; 614*1f21f64aSMarius Strobl roundingCode = float_round_up; 615*1f21f64aSMarius Strobl break; 616*1f21f64aSMarius Strobl } 617*1f21f64aSMarius Strobl float_rounding_mode = roundingCode; 618*1f21f64aSMarius Strobl syst_float_set_rounding_mode( roundingCode ); 619*1f21f64aSMarius Strobl fputs( "Testing ", stderr ); 620*1f21f64aSMarius Strobl writeFunctionName( stderr ); 621*1f21f64aSMarius Strobl fputs( ".\n", stderr ); 622*1f21f64aSMarius Strobl switch ( functionCode ) { 623*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT32 624*1f21f64aSMarius Strobl case INT32_TO_FLOAT32: 625*1f21f64aSMarius Strobl test_a_int32_z_float32( int32_to_float32, syst_int32_to_float32 ); 626*1f21f64aSMarius Strobl break; 627*1f21f64aSMarius Strobl #endif 628*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT64 629*1f21f64aSMarius Strobl case INT32_TO_FLOAT64: 630*1f21f64aSMarius Strobl test_a_int32_z_float64( int32_to_float64, syst_int32_to_float64 ); 631*1f21f64aSMarius Strobl break; 632*1f21f64aSMarius Strobl #endif 633*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOATX80 634*1f21f64aSMarius Strobl case INT32_TO_FLOATX80: 635*1f21f64aSMarius Strobl test_a_int32_z_floatx80( int32_to_floatx80, syst_int32_to_floatx80 ); 636*1f21f64aSMarius Strobl break; 637*1f21f64aSMarius Strobl #endif 638*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT128 639*1f21f64aSMarius Strobl case INT32_TO_FLOAT128: 640*1f21f64aSMarius Strobl test_a_int32_z_float128( int32_to_float128, syst_int32_to_float128 ); 641*1f21f64aSMarius Strobl break; 642*1f21f64aSMarius Strobl #endif 643*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT32 644*1f21f64aSMarius Strobl case INT64_TO_FLOAT32: 645*1f21f64aSMarius Strobl test_a_int64_z_float32( int64_to_float32, syst_int64_to_float32 ); 646*1f21f64aSMarius Strobl break; 647*1f21f64aSMarius Strobl #endif 648*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT64 649*1f21f64aSMarius Strobl case INT64_TO_FLOAT64: 650*1f21f64aSMarius Strobl test_a_int64_z_float64( int64_to_float64, syst_int64_to_float64 ); 651*1f21f64aSMarius Strobl break; 652*1f21f64aSMarius Strobl #endif 653*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOATX80 654*1f21f64aSMarius Strobl case INT64_TO_FLOATX80: 655*1f21f64aSMarius Strobl test_a_int64_z_floatx80( int64_to_floatx80, syst_int64_to_floatx80 ); 656*1f21f64aSMarius Strobl break; 657*1f21f64aSMarius Strobl #endif 658*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT128 659*1f21f64aSMarius Strobl case INT64_TO_FLOAT128: 660*1f21f64aSMarius Strobl test_a_int64_z_float128( int64_to_float128, syst_int64_to_float128 ); 661*1f21f64aSMarius Strobl break; 662*1f21f64aSMarius Strobl #endif 663*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT32 664*1f21f64aSMarius Strobl case FLOAT32_TO_INT32: 665*1f21f64aSMarius Strobl test_a_float32_z_int32( float32_to_int32, syst_float32_to_int32 ); 666*1f21f64aSMarius Strobl break; 667*1f21f64aSMarius Strobl #endif 668*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT32_ROUND_TO_ZERO 669*1f21f64aSMarius Strobl case FLOAT32_TO_INT32_ROUND_TO_ZERO: 670*1f21f64aSMarius Strobl test_a_float32_z_int32( 671*1f21f64aSMarius Strobl float32_to_int32_round_to_zero, 672*1f21f64aSMarius Strobl syst_float32_to_int32_round_to_zero 673*1f21f64aSMarius Strobl ); 674*1f21f64aSMarius Strobl break; 675*1f21f64aSMarius Strobl #endif 676*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT64 677*1f21f64aSMarius Strobl case FLOAT32_TO_INT64: 678*1f21f64aSMarius Strobl test_a_float32_z_int64( float32_to_int64, syst_float32_to_int64 ); 679*1f21f64aSMarius Strobl break; 680*1f21f64aSMarius Strobl #endif 681*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT64_ROUND_TO_ZERO 682*1f21f64aSMarius Strobl case FLOAT32_TO_INT64_ROUND_TO_ZERO: 683*1f21f64aSMarius Strobl test_a_float32_z_int64( 684*1f21f64aSMarius Strobl float32_to_int64_round_to_zero, 685*1f21f64aSMarius Strobl syst_float32_to_int64_round_to_zero 686*1f21f64aSMarius Strobl ); 687*1f21f64aSMarius Strobl break; 688*1f21f64aSMarius Strobl #endif 689*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOAT64 690*1f21f64aSMarius Strobl case FLOAT32_TO_FLOAT64: 691*1f21f64aSMarius Strobl test_a_float32_z_float64( 692*1f21f64aSMarius Strobl float32_to_float64, syst_float32_to_float64 ); 693*1f21f64aSMarius Strobl break; 694*1f21f64aSMarius Strobl #endif 695*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOATX80 696*1f21f64aSMarius Strobl case FLOAT32_TO_FLOATX80: 697*1f21f64aSMarius Strobl test_a_float32_z_floatx80( 698*1f21f64aSMarius Strobl float32_to_floatx80, syst_float32_to_floatx80 ); 699*1f21f64aSMarius Strobl break; 700*1f21f64aSMarius Strobl #endif 701*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOAT128 702*1f21f64aSMarius Strobl case FLOAT32_TO_FLOAT128: 703*1f21f64aSMarius Strobl test_a_float32_z_float128( 704*1f21f64aSMarius Strobl float32_to_float128, syst_float32_to_float128 ); 705*1f21f64aSMarius Strobl break; 706*1f21f64aSMarius Strobl #endif 707*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_ROUND_TO_INT 708*1f21f64aSMarius Strobl case FLOAT32_ROUND_TO_INT: 709*1f21f64aSMarius Strobl test_az_float32( float32_round_to_int, syst_float32_round_to_int ); 710*1f21f64aSMarius Strobl break; 711*1f21f64aSMarius Strobl #endif 712*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_ADD 713*1f21f64aSMarius Strobl case FLOAT32_ADD: 714*1f21f64aSMarius Strobl test_abz_float32( float32_add, syst_float32_add ); 715*1f21f64aSMarius Strobl break; 716*1f21f64aSMarius Strobl #endif 717*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_SUB 718*1f21f64aSMarius Strobl case FLOAT32_SUB: 719*1f21f64aSMarius Strobl test_abz_float32( float32_sub, syst_float32_sub ); 720*1f21f64aSMarius Strobl break; 721*1f21f64aSMarius Strobl #endif 722*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_MUL 723*1f21f64aSMarius Strobl case FLOAT32_MUL: 724*1f21f64aSMarius Strobl test_abz_float32( float32_mul, syst_float32_mul ); 725*1f21f64aSMarius Strobl break; 726*1f21f64aSMarius Strobl #endif 727*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_DIV 728*1f21f64aSMarius Strobl case FLOAT32_DIV: 729*1f21f64aSMarius Strobl test_abz_float32( float32_div, syst_float32_div ); 730*1f21f64aSMarius Strobl break; 731*1f21f64aSMarius Strobl #endif 732*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_REM 733*1f21f64aSMarius Strobl case FLOAT32_REM: 734*1f21f64aSMarius Strobl test_abz_float32( float32_rem, syst_float32_rem ); 735*1f21f64aSMarius Strobl break; 736*1f21f64aSMarius Strobl #endif 737*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_SQRT 738*1f21f64aSMarius Strobl case FLOAT32_SQRT: 739*1f21f64aSMarius Strobl test_az_float32( float32_sqrt, syst_float32_sqrt ); 740*1f21f64aSMarius Strobl break; 741*1f21f64aSMarius Strobl #endif 742*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_EQ 743*1f21f64aSMarius Strobl case FLOAT32_EQ: 744*1f21f64aSMarius Strobl test_ab_float32_z_flag( float32_eq, syst_float32_eq ); 745*1f21f64aSMarius Strobl break; 746*1f21f64aSMarius Strobl #endif 747*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LE 748*1f21f64aSMarius Strobl case FLOAT32_LE: 749*1f21f64aSMarius Strobl test_ab_float32_z_flag( float32_le, syst_float32_le ); 750*1f21f64aSMarius Strobl break; 751*1f21f64aSMarius Strobl #endif 752*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LT 753*1f21f64aSMarius Strobl case FLOAT32_LT: 754*1f21f64aSMarius Strobl test_ab_float32_z_flag( float32_lt, syst_float32_lt ); 755*1f21f64aSMarius Strobl break; 756*1f21f64aSMarius Strobl #endif 757*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_EQ_SIGNALING 758*1f21f64aSMarius Strobl case FLOAT32_EQ_SIGNALING: 759*1f21f64aSMarius Strobl test_ab_float32_z_flag( 760*1f21f64aSMarius Strobl float32_eq_signaling, syst_float32_eq_signaling ); 761*1f21f64aSMarius Strobl break; 762*1f21f64aSMarius Strobl #endif 763*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LE_QUIET 764*1f21f64aSMarius Strobl case FLOAT32_LE_QUIET: 765*1f21f64aSMarius Strobl test_ab_float32_z_flag( float32_le_quiet, syst_float32_le_quiet ); 766*1f21f64aSMarius Strobl break; 767*1f21f64aSMarius Strobl #endif 768*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LT_QUIET 769*1f21f64aSMarius Strobl case FLOAT32_LT_QUIET: 770*1f21f64aSMarius Strobl test_ab_float32_z_flag( float32_lt_quiet, syst_float32_lt_quiet ); 771*1f21f64aSMarius Strobl break; 772*1f21f64aSMarius Strobl #endif 773*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT32 774*1f21f64aSMarius Strobl case FLOAT64_TO_INT32: 775*1f21f64aSMarius Strobl test_a_float64_z_int32( float64_to_int32, syst_float64_to_int32 ); 776*1f21f64aSMarius Strobl break; 777*1f21f64aSMarius Strobl #endif 778*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT32_ROUND_TO_ZERO 779*1f21f64aSMarius Strobl case FLOAT64_TO_INT32_ROUND_TO_ZERO: 780*1f21f64aSMarius Strobl test_a_float64_z_int32( 781*1f21f64aSMarius Strobl float64_to_int32_round_to_zero, 782*1f21f64aSMarius Strobl syst_float64_to_int32_round_to_zero 783*1f21f64aSMarius Strobl ); 784*1f21f64aSMarius Strobl break; 785*1f21f64aSMarius Strobl #endif 786*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT64 787*1f21f64aSMarius Strobl case FLOAT64_TO_INT64: 788*1f21f64aSMarius Strobl test_a_float64_z_int64( float64_to_int64, syst_float64_to_int64 ); 789*1f21f64aSMarius Strobl break; 790*1f21f64aSMarius Strobl #endif 791*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT64_ROUND_TO_ZERO 792*1f21f64aSMarius Strobl case FLOAT64_TO_INT64_ROUND_TO_ZERO: 793*1f21f64aSMarius Strobl test_a_float64_z_int64( 794*1f21f64aSMarius Strobl float64_to_int64_round_to_zero, 795*1f21f64aSMarius Strobl syst_float64_to_int64_round_to_zero 796*1f21f64aSMarius Strobl ); 797*1f21f64aSMarius Strobl break; 798*1f21f64aSMarius Strobl #endif 799*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOAT32 800*1f21f64aSMarius Strobl case FLOAT64_TO_FLOAT32: 801*1f21f64aSMarius Strobl test_a_float64_z_float32( 802*1f21f64aSMarius Strobl float64_to_float32, syst_float64_to_float32 ); 803*1f21f64aSMarius Strobl break; 804*1f21f64aSMarius Strobl #endif 805*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOATX80 806*1f21f64aSMarius Strobl case FLOAT64_TO_FLOATX80: 807*1f21f64aSMarius Strobl test_a_float64_z_floatx80( 808*1f21f64aSMarius Strobl float64_to_floatx80, syst_float64_to_floatx80 ); 809*1f21f64aSMarius Strobl break; 810*1f21f64aSMarius Strobl #endif 811*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOAT128 812*1f21f64aSMarius Strobl case FLOAT64_TO_FLOAT128: 813*1f21f64aSMarius Strobl test_a_float64_z_float128( 814*1f21f64aSMarius Strobl float64_to_float128, syst_float64_to_float128 ); 815*1f21f64aSMarius Strobl break; 816*1f21f64aSMarius Strobl #endif 817*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_ROUND_TO_INT 818*1f21f64aSMarius Strobl case FLOAT64_ROUND_TO_INT: 819*1f21f64aSMarius Strobl test_az_float64( float64_round_to_int, syst_float64_round_to_int ); 820*1f21f64aSMarius Strobl break; 821*1f21f64aSMarius Strobl #endif 822*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_ADD 823*1f21f64aSMarius Strobl case FLOAT64_ADD: 824*1f21f64aSMarius Strobl test_abz_float64( float64_add, syst_float64_add ); 825*1f21f64aSMarius Strobl break; 826*1f21f64aSMarius Strobl #endif 827*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_SUB 828*1f21f64aSMarius Strobl case FLOAT64_SUB: 829*1f21f64aSMarius Strobl test_abz_float64( float64_sub, syst_float64_sub ); 830*1f21f64aSMarius Strobl break; 831*1f21f64aSMarius Strobl #endif 832*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_MUL 833*1f21f64aSMarius Strobl case FLOAT64_MUL: 834*1f21f64aSMarius Strobl test_abz_float64( float64_mul, syst_float64_mul ); 835*1f21f64aSMarius Strobl break; 836*1f21f64aSMarius Strobl #endif 837*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_DIV 838*1f21f64aSMarius Strobl case FLOAT64_DIV: 839*1f21f64aSMarius Strobl test_abz_float64( float64_div, syst_float64_div ); 840*1f21f64aSMarius Strobl break; 841*1f21f64aSMarius Strobl #endif 842*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_REM 843*1f21f64aSMarius Strobl case FLOAT64_REM: 844*1f21f64aSMarius Strobl test_abz_float64( float64_rem, syst_float64_rem ); 845*1f21f64aSMarius Strobl break; 846*1f21f64aSMarius Strobl #endif 847*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_SQRT 848*1f21f64aSMarius Strobl case FLOAT64_SQRT: 849*1f21f64aSMarius Strobl test_az_float64( float64_sqrt, syst_float64_sqrt ); 850*1f21f64aSMarius Strobl break; 851*1f21f64aSMarius Strobl #endif 852*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_EQ 853*1f21f64aSMarius Strobl case FLOAT64_EQ: 854*1f21f64aSMarius Strobl test_ab_float64_z_flag( float64_eq, syst_float64_eq ); 855*1f21f64aSMarius Strobl break; 856*1f21f64aSMarius Strobl #endif 857*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LE 858*1f21f64aSMarius Strobl case FLOAT64_LE: 859*1f21f64aSMarius Strobl test_ab_float64_z_flag( float64_le, syst_float64_le ); 860*1f21f64aSMarius Strobl break; 861*1f21f64aSMarius Strobl #endif 862*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LT 863*1f21f64aSMarius Strobl case FLOAT64_LT: 864*1f21f64aSMarius Strobl test_ab_float64_z_flag( float64_lt, syst_float64_lt ); 865*1f21f64aSMarius Strobl break; 866*1f21f64aSMarius Strobl #endif 867*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_EQ_SIGNALING 868*1f21f64aSMarius Strobl case FLOAT64_EQ_SIGNALING: 869*1f21f64aSMarius Strobl test_ab_float64_z_flag( 870*1f21f64aSMarius Strobl float64_eq_signaling, syst_float64_eq_signaling ); 871*1f21f64aSMarius Strobl break; 872*1f21f64aSMarius Strobl #endif 873*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LE_QUIET 874*1f21f64aSMarius Strobl case FLOAT64_LE_QUIET: 875*1f21f64aSMarius Strobl test_ab_float64_z_flag( float64_le_quiet, syst_float64_le_quiet ); 876*1f21f64aSMarius Strobl break; 877*1f21f64aSMarius Strobl #endif 878*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LT_QUIET 879*1f21f64aSMarius Strobl case FLOAT64_LT_QUIET: 880*1f21f64aSMarius Strobl test_ab_float64_z_flag( float64_lt_quiet, syst_float64_lt_quiet ); 881*1f21f64aSMarius Strobl break; 882*1f21f64aSMarius Strobl #endif 883*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT32 884*1f21f64aSMarius Strobl case FLOATX80_TO_INT32: 885*1f21f64aSMarius Strobl test_a_floatx80_z_int32( floatx80_to_int32, syst_floatx80_to_int32 ); 886*1f21f64aSMarius Strobl break; 887*1f21f64aSMarius Strobl #endif 888*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT32_ROUND_TO_ZERO 889*1f21f64aSMarius Strobl case FLOATX80_TO_INT32_ROUND_TO_ZERO: 890*1f21f64aSMarius Strobl test_a_floatx80_z_int32( 891*1f21f64aSMarius Strobl floatx80_to_int32_round_to_zero, 892*1f21f64aSMarius Strobl syst_floatx80_to_int32_round_to_zero 893*1f21f64aSMarius Strobl ); 894*1f21f64aSMarius Strobl break; 895*1f21f64aSMarius Strobl #endif 896*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT64 897*1f21f64aSMarius Strobl case FLOATX80_TO_INT64: 898*1f21f64aSMarius Strobl test_a_floatx80_z_int64( floatx80_to_int64, syst_floatx80_to_int64 ); 899*1f21f64aSMarius Strobl break; 900*1f21f64aSMarius Strobl #endif 901*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT64_ROUND_TO_ZERO 902*1f21f64aSMarius Strobl case FLOATX80_TO_INT64_ROUND_TO_ZERO: 903*1f21f64aSMarius Strobl test_a_floatx80_z_int64( 904*1f21f64aSMarius Strobl floatx80_to_int64_round_to_zero, 905*1f21f64aSMarius Strobl syst_floatx80_to_int64_round_to_zero 906*1f21f64aSMarius Strobl ); 907*1f21f64aSMarius Strobl break; 908*1f21f64aSMarius Strobl #endif 909*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT32 910*1f21f64aSMarius Strobl case FLOATX80_TO_FLOAT32: 911*1f21f64aSMarius Strobl test_a_floatx80_z_float32( 912*1f21f64aSMarius Strobl floatx80_to_float32, syst_floatx80_to_float32 ); 913*1f21f64aSMarius Strobl break; 914*1f21f64aSMarius Strobl #endif 915*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT64 916*1f21f64aSMarius Strobl case FLOATX80_TO_FLOAT64: 917*1f21f64aSMarius Strobl test_a_floatx80_z_float64( 918*1f21f64aSMarius Strobl floatx80_to_float64, syst_floatx80_to_float64 ); 919*1f21f64aSMarius Strobl break; 920*1f21f64aSMarius Strobl #endif 921*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT128 922*1f21f64aSMarius Strobl case FLOATX80_TO_FLOAT128: 923*1f21f64aSMarius Strobl test_a_floatx80_z_float128( 924*1f21f64aSMarius Strobl floatx80_to_float128, syst_floatx80_to_float128 ); 925*1f21f64aSMarius Strobl break; 926*1f21f64aSMarius Strobl #endif 927*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_ROUND_TO_INT 928*1f21f64aSMarius Strobl case FLOATX80_ROUND_TO_INT: 929*1f21f64aSMarius Strobl test_az_floatx80( floatx80_round_to_int, syst_floatx80_round_to_int ); 930*1f21f64aSMarius Strobl break; 931*1f21f64aSMarius Strobl #endif 932*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_ADD 933*1f21f64aSMarius Strobl case FLOATX80_ADD: 934*1f21f64aSMarius Strobl test_abz_floatx80( floatx80_add, syst_floatx80_add ); 935*1f21f64aSMarius Strobl break; 936*1f21f64aSMarius Strobl #endif 937*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_SUB 938*1f21f64aSMarius Strobl case FLOATX80_SUB: 939*1f21f64aSMarius Strobl test_abz_floatx80( floatx80_sub, syst_floatx80_sub ); 940*1f21f64aSMarius Strobl break; 941*1f21f64aSMarius Strobl #endif 942*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_MUL 943*1f21f64aSMarius Strobl case FLOATX80_MUL: 944*1f21f64aSMarius Strobl test_abz_floatx80( floatx80_mul, syst_floatx80_mul ); 945*1f21f64aSMarius Strobl break; 946*1f21f64aSMarius Strobl #endif 947*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_DIV 948*1f21f64aSMarius Strobl case FLOATX80_DIV: 949*1f21f64aSMarius Strobl test_abz_floatx80( floatx80_div, syst_floatx80_div ); 950*1f21f64aSMarius Strobl break; 951*1f21f64aSMarius Strobl #endif 952*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_REM 953*1f21f64aSMarius Strobl case FLOATX80_REM: 954*1f21f64aSMarius Strobl test_abz_floatx80( floatx80_rem, syst_floatx80_rem ); 955*1f21f64aSMarius Strobl break; 956*1f21f64aSMarius Strobl #endif 957*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_SQRT 958*1f21f64aSMarius Strobl case FLOATX80_SQRT: 959*1f21f64aSMarius Strobl test_az_floatx80( floatx80_sqrt, syst_floatx80_sqrt ); 960*1f21f64aSMarius Strobl break; 961*1f21f64aSMarius Strobl #endif 962*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_EQ 963*1f21f64aSMarius Strobl case FLOATX80_EQ: 964*1f21f64aSMarius Strobl test_ab_floatx80_z_flag( floatx80_eq, syst_floatx80_eq ); 965*1f21f64aSMarius Strobl break; 966*1f21f64aSMarius Strobl #endif 967*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LE 968*1f21f64aSMarius Strobl case FLOATX80_LE: 969*1f21f64aSMarius Strobl test_ab_floatx80_z_flag( floatx80_le, syst_floatx80_le ); 970*1f21f64aSMarius Strobl break; 971*1f21f64aSMarius Strobl #endif 972*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LT 973*1f21f64aSMarius Strobl case FLOATX80_LT: 974*1f21f64aSMarius Strobl test_ab_floatx80_z_flag( floatx80_lt, syst_floatx80_lt ); 975*1f21f64aSMarius Strobl break; 976*1f21f64aSMarius Strobl #endif 977*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_EQ_SIGNALING 978*1f21f64aSMarius Strobl case FLOATX80_EQ_SIGNALING: 979*1f21f64aSMarius Strobl test_ab_floatx80_z_flag( 980*1f21f64aSMarius Strobl floatx80_eq_signaling, syst_floatx80_eq_signaling ); 981*1f21f64aSMarius Strobl break; 982*1f21f64aSMarius Strobl #endif 983*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LE_QUIET 984*1f21f64aSMarius Strobl case FLOATX80_LE_QUIET: 985*1f21f64aSMarius Strobl test_ab_floatx80_z_flag( floatx80_le_quiet, syst_floatx80_le_quiet ); 986*1f21f64aSMarius Strobl break; 987*1f21f64aSMarius Strobl #endif 988*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LT_QUIET 989*1f21f64aSMarius Strobl case FLOATX80_LT_QUIET: 990*1f21f64aSMarius Strobl test_ab_floatx80_z_flag( floatx80_lt_quiet, syst_floatx80_lt_quiet ); 991*1f21f64aSMarius Strobl break; 992*1f21f64aSMarius Strobl #endif 993*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT32 994*1f21f64aSMarius Strobl case FLOAT128_TO_INT32: 995*1f21f64aSMarius Strobl test_a_float128_z_int32( float128_to_int32, syst_float128_to_int32 ); 996*1f21f64aSMarius Strobl break; 997*1f21f64aSMarius Strobl #endif 998*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT32_ROUND_TO_ZERO 999*1f21f64aSMarius Strobl case FLOAT128_TO_INT32_ROUND_TO_ZERO: 1000*1f21f64aSMarius Strobl test_a_float128_z_int32( 1001*1f21f64aSMarius Strobl float128_to_int32_round_to_zero, 1002*1f21f64aSMarius Strobl syst_float128_to_int32_round_to_zero 1003*1f21f64aSMarius Strobl ); 1004*1f21f64aSMarius Strobl break; 1005*1f21f64aSMarius Strobl #endif 1006*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT64 1007*1f21f64aSMarius Strobl case FLOAT128_TO_INT64: 1008*1f21f64aSMarius Strobl test_a_float128_z_int64( float128_to_int64, syst_float128_to_int64 ); 1009*1f21f64aSMarius Strobl break; 1010*1f21f64aSMarius Strobl #endif 1011*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT64_ROUND_TO_ZERO 1012*1f21f64aSMarius Strobl case FLOAT128_TO_INT64_ROUND_TO_ZERO: 1013*1f21f64aSMarius Strobl test_a_float128_z_int64( 1014*1f21f64aSMarius Strobl float128_to_int64_round_to_zero, 1015*1f21f64aSMarius Strobl syst_float128_to_int64_round_to_zero 1016*1f21f64aSMarius Strobl ); 1017*1f21f64aSMarius Strobl break; 1018*1f21f64aSMarius Strobl #endif 1019*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOAT32 1020*1f21f64aSMarius Strobl case FLOAT128_TO_FLOAT32: 1021*1f21f64aSMarius Strobl test_a_float128_z_float32( 1022*1f21f64aSMarius Strobl float128_to_float32, syst_float128_to_float32 ); 1023*1f21f64aSMarius Strobl break; 1024*1f21f64aSMarius Strobl #endif 1025*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOAT64 1026*1f21f64aSMarius Strobl case FLOAT128_TO_FLOAT64: 1027*1f21f64aSMarius Strobl test_a_float128_z_float64( 1028*1f21f64aSMarius Strobl float128_to_float64, syst_float128_to_float64 ); 1029*1f21f64aSMarius Strobl break; 1030*1f21f64aSMarius Strobl #endif 1031*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOATX80 1032*1f21f64aSMarius Strobl case FLOAT128_TO_FLOATX80: 1033*1f21f64aSMarius Strobl test_a_float128_z_floatx80( 1034*1f21f64aSMarius Strobl float128_to_floatx80, syst_float128_to_floatx80 ); 1035*1f21f64aSMarius Strobl break; 1036*1f21f64aSMarius Strobl #endif 1037*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_ROUND_TO_INT 1038*1f21f64aSMarius Strobl case FLOAT128_ROUND_TO_INT: 1039*1f21f64aSMarius Strobl test_az_float128( float128_round_to_int, syst_float128_round_to_int ); 1040*1f21f64aSMarius Strobl break; 1041*1f21f64aSMarius Strobl #endif 1042*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_ADD 1043*1f21f64aSMarius Strobl case FLOAT128_ADD: 1044*1f21f64aSMarius Strobl test_abz_float128( float128_add, syst_float128_add ); 1045*1f21f64aSMarius Strobl break; 1046*1f21f64aSMarius Strobl #endif 1047*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_SUB 1048*1f21f64aSMarius Strobl case FLOAT128_SUB: 1049*1f21f64aSMarius Strobl test_abz_float128( float128_sub, syst_float128_sub ); 1050*1f21f64aSMarius Strobl break; 1051*1f21f64aSMarius Strobl #endif 1052*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_MUL 1053*1f21f64aSMarius Strobl case FLOAT128_MUL: 1054*1f21f64aSMarius Strobl test_abz_float128( float128_mul, syst_float128_mul ); 1055*1f21f64aSMarius Strobl break; 1056*1f21f64aSMarius Strobl #endif 1057*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_DIV 1058*1f21f64aSMarius Strobl case FLOAT128_DIV: 1059*1f21f64aSMarius Strobl test_abz_float128( float128_div, syst_float128_div ); 1060*1f21f64aSMarius Strobl break; 1061*1f21f64aSMarius Strobl #endif 1062*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_REM 1063*1f21f64aSMarius Strobl case FLOAT128_REM: 1064*1f21f64aSMarius Strobl test_abz_float128( float128_rem, syst_float128_rem ); 1065*1f21f64aSMarius Strobl break; 1066*1f21f64aSMarius Strobl #endif 1067*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_SQRT 1068*1f21f64aSMarius Strobl case FLOAT128_SQRT: 1069*1f21f64aSMarius Strobl test_az_float128( float128_sqrt, syst_float128_sqrt ); 1070*1f21f64aSMarius Strobl break; 1071*1f21f64aSMarius Strobl #endif 1072*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_EQ 1073*1f21f64aSMarius Strobl case FLOAT128_EQ: 1074*1f21f64aSMarius Strobl test_ab_float128_z_flag( float128_eq, syst_float128_eq ); 1075*1f21f64aSMarius Strobl break; 1076*1f21f64aSMarius Strobl #endif 1077*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LE 1078*1f21f64aSMarius Strobl case FLOAT128_LE: 1079*1f21f64aSMarius Strobl test_ab_float128_z_flag( float128_le, syst_float128_le ); 1080*1f21f64aSMarius Strobl break; 1081*1f21f64aSMarius Strobl #endif 1082*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LT 1083*1f21f64aSMarius Strobl case FLOAT128_LT: 1084*1f21f64aSMarius Strobl test_ab_float128_z_flag( float128_lt, syst_float128_lt ); 1085*1f21f64aSMarius Strobl break; 1086*1f21f64aSMarius Strobl #endif 1087*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_EQ_SIGNALING 1088*1f21f64aSMarius Strobl case FLOAT128_EQ_SIGNALING: 1089*1f21f64aSMarius Strobl test_ab_float128_z_flag( 1090*1f21f64aSMarius Strobl float128_eq_signaling, syst_float128_eq_signaling ); 1091*1f21f64aSMarius Strobl break; 1092*1f21f64aSMarius Strobl #endif 1093*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LE_QUIET 1094*1f21f64aSMarius Strobl case FLOAT128_LE_QUIET: 1095*1f21f64aSMarius Strobl test_ab_float128_z_flag( float128_le_quiet, syst_float128_le_quiet ); 1096*1f21f64aSMarius Strobl break; 1097*1f21f64aSMarius Strobl #endif 1098*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LT_QUIET 1099*1f21f64aSMarius Strobl case FLOAT128_LT_QUIET: 1100*1f21f64aSMarius Strobl test_ab_float128_z_flag( float128_lt_quiet, syst_float128_lt_quiet ); 1101*1f21f64aSMarius Strobl break; 1102*1f21f64aSMarius Strobl #endif 1103*1f21f64aSMarius Strobl } 1104*1f21f64aSMarius Strobl if ( ( errorStop && anyErrors ) || stop ) exitWithStatus(); 1105*1f21f64aSMarius Strobl 1106*1f21f64aSMarius Strobl } 1107*1f21f64aSMarius Strobl 1108*1f21f64aSMarius Strobl void testFunction(uint8 functionCode,int8 roundingPrecisionIn,int8 roundingModeIn)1109*1f21f64aSMarius Strobl testFunction( 1110*1f21f64aSMarius Strobl uint8 functionCode, int8 roundingPrecisionIn, int8 roundingModeIn ) 1111*1f21f64aSMarius Strobl { 1112*1f21f64aSMarius Strobl int8 roundingPrecision, roundingMode; 1113*1f21f64aSMarius Strobl 1114*1f21f64aSMarius Strobl roundingPrecision = 32; 1115*1f21f64aSMarius Strobl for (;;) { 1116*1f21f64aSMarius Strobl if ( ! functions[ functionCode ].roundingPrecision ) { 1117*1f21f64aSMarius Strobl roundingPrecision = 0; 1118*1f21f64aSMarius Strobl } 1119*1f21f64aSMarius Strobl else if ( roundingPrecisionIn ) { 1120*1f21f64aSMarius Strobl roundingPrecision = roundingPrecisionIn; 1121*1f21f64aSMarius Strobl } 1122*1f21f64aSMarius Strobl for ( roundingMode = 1; 1123*1f21f64aSMarius Strobl roundingMode < NUM_ROUNDINGMODES; 1124*1f21f64aSMarius Strobl ++roundingMode 1125*1f21f64aSMarius Strobl ) { 1126*1f21f64aSMarius Strobl if ( ! functions[ functionCode ].roundingMode ) { 1127*1f21f64aSMarius Strobl roundingMode = 0; 1128*1f21f64aSMarius Strobl } 1129*1f21f64aSMarius Strobl else if ( roundingModeIn ) { 1130*1f21f64aSMarius Strobl roundingMode = roundingModeIn; 1131*1f21f64aSMarius Strobl } 1132*1f21f64aSMarius Strobl testFunctionVariety( 1133*1f21f64aSMarius Strobl functionCode, roundingPrecision, roundingMode ); 1134*1f21f64aSMarius Strobl if ( roundingModeIn || ! roundingMode ) break; 1135*1f21f64aSMarius Strobl } 1136*1f21f64aSMarius Strobl if ( roundingPrecisionIn || ! roundingPrecision ) break; 1137*1f21f64aSMarius Strobl if ( roundingPrecision == 80 ) { 1138*1f21f64aSMarius Strobl break; 1139*1f21f64aSMarius Strobl } 1140*1f21f64aSMarius Strobl else if ( roundingPrecision == 64 ) { 1141*1f21f64aSMarius Strobl roundingPrecision = 80; 1142*1f21f64aSMarius Strobl } 1143*1f21f64aSMarius Strobl else if ( roundingPrecision == 32 ) { 1144*1f21f64aSMarius Strobl roundingPrecision = 64; 1145*1f21f64aSMarius Strobl } 1146*1f21f64aSMarius Strobl } 1147*1f21f64aSMarius Strobl 1148*1f21f64aSMarius Strobl } 1149*1f21f64aSMarius Strobl 1150