/* test data class tests for float, double, long double: TCEB, TCDB, TCXB */ #include #include static int tcxb(long double f, long long num) { int match; asm volatile(" tcxb %1,0(%2)\n" "ipm %0\n" "srl %0,28\n" : "=d" (match) : "f" (f), "a" (num) : "cc"); return match; } static int tcdb(double f, long long num) { int match; asm volatile(" tcdb %1,0(%2)\n" "ipm %0\n" "srl %0,28\n" : "=d" (match) : "f" (f), "a" (num) : "cc"); return match; } static int tceb(float f, long long num) { int match; asm volatile(" tceb %1,0(%2)\n" "ipm %0\n" "srl %0,28\n" : "=d" (match) : "f" (f), "a" (num) : "cc"); return match; } int main() { int i; for (i = 0; i < 64; i++) { if (sizeof (long double) == 16) { /* long double 128 bit */ printf("%d", tcxb(+0.0l, 1UL<