/* { dg-do run { target { powerpc*-*-* } } } */ /* { dg-require-effective-target p9vector_hw } */ /* { dg-options "-mdejagnu-cpu=power9" } */ #include #include #include bool test_zero (float *p) { float source = *p; /* 0x40 Test for NaN 0x20 Test for +Infinity 0x10 Test for -Infinity 0x08 Test for +Zero 0x04 Test for -Zero 0x02 Test for +Denormal 0x01 Test for -Denormal */ return scalar_test_data_class (source, 12); } int main () { /* A Zero value has a biased exponent value of zero and a zero * fraction value. The sign may be either positive or negative. */ unsigned int zero_plus_image = 0x0; unsigned int zero_minus_image = 0x80000000; unsigned int non_zero_image = 0x60000000; float *zero_plus_p = (float *) &zero_plus_image; float *zero_minus_p = (float *) &zero_minus_image; float *not_zero_p = (float *) &non_zero_image; if (!test_zero (zero_plus_p)) abort (); if (!test_zero (zero_minus_p)) abort (); if (test_zero (not_zero_p)) abort (); return 0; }