1/* { dg-do compile { target powerpc*-*-* } } */ 2/* { dg-options "-O -mpowerpc-gfxopt -g0 -ffinite-math-only" } */ 3/* { dg-final { scan-assembler-not "^L" } } */ 4 5/* Every single one of these should be compiled into straight-line 6 code using fsel (or, in a few cases, hardwired to 'true' or 7 'false'), no branches anywhere. */ 8 9double 10test_isunordered(double x, double y, double a, double b) 11{ 12 return __builtin_isunordered(x, y) ? a : b; 13} 14 15double 16test_not_isunordered(double x, double y, double a, double b) 17{ 18 return !__builtin_isunordered(x, y) ? a : b; 19} 20 21double 22test_isless(double x, double y, double a, double b) 23{ 24 return __builtin_isless(x, y) ? a : b; 25} 26 27double 28test_not_isless(double x, double y, double a, double b) 29{ 30 return !__builtin_isless(x, y) ? a : b; 31} 32 33double 34test_islessequal(double x, double y, double a, double b) 35{ 36 return __builtin_islessequal(x, y) ? a : b; 37} 38 39double 40test_not_islessequal(double x, double y, double a, double b) 41{ 42 return !__builtin_islessequal(x, y) ? a : b; 43} 44 45double 46test_isgreater(double x, double y, double a, double b) 47{ 48 return __builtin_isgreater(x, y) ? a : b; 49} 50 51double 52test_not_isgreater(double x, double y, double a, double b) 53{ 54 return !__builtin_isgreater(x, y) ? a : b; 55} 56 57double 58test_isgreaterequal(double x, double y, double a, double b) 59{ 60 return __builtin_isgreaterequal(x, y) ? a : b; 61} 62 63double 64test_not_isgreaterequal(double x, double y, double a, double b) 65{ 66 return !__builtin_isgreaterequal(x, y) ? a : b; 67} 68 69double 70test_islessgreater(double x, double y, double a, double b) 71{ 72 return __builtin_islessgreater(x, y) ? a : b; 73} 74 75double 76test_not_islessgreater(double x, double y, double a, double b) 77{ 78 return !__builtin_islessgreater(x, y) ? a : b; 79} 80 81