1*41602807SJoseph Myers /* Test pseudo-denormal operations. */ 2*41602807SJoseph Myers 3*41602807SJoseph Myers #include <stdint.h> 4*41602807SJoseph Myers #include <stdio.h> 5*41602807SJoseph Myers 6*41602807SJoseph Myers union u { 7*41602807SJoseph Myers struct { uint64_t sig; uint16_t sign_exp; } s; 8*41602807SJoseph Myers long double ld; 9*41602807SJoseph Myers }; 10*41602807SJoseph Myers 11*41602807SJoseph Myers volatile union u ld_pseudo_m16382 = { .s = { UINT64_C(1) << 63, 0 } }; 12*41602807SJoseph Myers 13*41602807SJoseph Myers volatile long double ld_res; 14*41602807SJoseph Myers 15*41602807SJoseph Myers int main(void) 16*41602807SJoseph Myers { 17*41602807SJoseph Myers int ret = 0; 18*41602807SJoseph Myers ld_res = ld_pseudo_m16382.ld + ld_pseudo_m16382.ld; 19*41602807SJoseph Myers if (ld_res != 0x1p-16381L) { 20*41602807SJoseph Myers printf("FAIL: pseudo-denormal add\n"); 21*41602807SJoseph Myers ret = 1; 22*41602807SJoseph Myers } 23*41602807SJoseph Myers return ret; 24*41602807SJoseph Myers } 25