141602807SJoseph Myers /* Test pseudo-denormal operations. */ 241602807SJoseph Myers 341602807SJoseph Myers #include <stdint.h> 441602807SJoseph Myers #include <stdio.h> 541602807SJoseph Myers 641602807SJoseph Myers union u { 741602807SJoseph Myers struct { uint64_t sig; uint16_t sign_exp; } s; 841602807SJoseph Myers long double ld; 941602807SJoseph Myers }; 1041602807SJoseph Myers 1141602807SJoseph Myers volatile union u ld_pseudo_m16382 = { .s = { UINT64_C(1) << 63, 0 } }; 1241602807SJoseph Myers 1341602807SJoseph Myers volatile long double ld_res; 1441602807SJoseph Myers 1541602807SJoseph Myers int main(void) 1641602807SJoseph Myers { 1741602807SJoseph Myers int ret = 0; 1841602807SJoseph Myers ld_res = ld_pseudo_m16382.ld + ld_pseudo_m16382.ld; 1941602807SJoseph Myers if (ld_res != 0x1p-16381L) { 2041602807SJoseph Myers printf("FAIL: pseudo-denormal add\n"); 2141602807SJoseph Myers ret = 1; 2241602807SJoseph Myers } 23*be53fa78SJoseph Myers if (ld_pseudo_m16382.ld != 0x1p-16382L) { 24*be53fa78SJoseph Myers printf("FAIL: pseudo-denormal compare\n"); 25*be53fa78SJoseph Myers ret = 1; 26*be53fa78SJoseph Myers } 2741602807SJoseph Myers return ret; 2841602807SJoseph Myers } 29