| ;Testname=unoptimized; Arguments=-O0 -fbin -ofloatexp.bin; Files=stdout stderr floatexp.bin |
| ;Testname=optimized; Arguments=-Ox -fbin -ofloatexp.bin; Files=stdout stderr floatexp.bin |
| |
| bits 64 |
| ; |
| ; Test of floating-point formats |
| ; |
| |
| ; 8-bit |
| mov al,__float8__(1.0) |
| mov al,__float8__(+1.0) |
| mov al,__float8__(-1.0) |
| mov al,__float8__(0.0) |
| mov al,__float8__(+0.0) |
| mov al,__float8__(-0.0) |
| mov al,__float8__(1.83203125) |
| mov al,__float8__(+1.83203125) |
| mov al,__float8__(-1.83203125) |
| mov al,__float8__(1.83203125e1) |
| mov al,__float8__(+1.83203125e1) |
| mov al,__float8__(-1.83203125e1) |
| mov al,__float8__(1.83203125e-1) |
| mov al,__float8__(+1.83203125e-1) |
| mov al,__float8__(-1.83203125e-1) |
| mov al,__float8__(1.13203125e-2) ; Denormal! |
| mov al,__float8__(+1.13203125e-2) ; Denormal! |
| mov al,__float8__(-1.13203125e-2) ; Denormal! |
| mov al,__float8__(__Infinity__) |
| mov al,__float8__(+__Infinity__) |
| mov al,__float8__(-__Infinity__) |
| mov al,__float8__(__NaN__) |
| mov al,__float8__(__QNaN__) |
| mov al,__float8__(__SNaN__) |
| |
| ; 16-bit |
| mov ax,__float16__(1.0) |
| mov ax,__float16__(+1.0) |
| mov ax,__float16__(-1.0) |
| mov ax,__float16__(0.0) |
| mov ax,__float16__(+0.0) |
| mov ax,__float16__(-0.0) |
| mov ax,__float16__(1.83203125) |
| mov ax,__float16__(+1.83203125) |
| mov ax,__float16__(-1.83203125) |
| mov ax,__float16__(1.83203125e3) |
| mov ax,__float16__(+1.83203125e3) |
| mov ax,__float16__(-1.83203125e3) |
| mov ax,__float16__(1.83203125e-3) |
| mov ax,__float16__(+1.83203125e-3) |
| mov ax,__float16__(-1.83203125e-3) |
| mov ax,__float16__(1.83203125e-6) ; Denormal! |
| mov ax,__float16__(+1.83203125e-6) ; Denormal! |
| mov ax,__float16__(-1.83203125e-6) ; Denormal! |
| mov ax,__float16__(__Infinity__) |
| mov ax,__float16__(+__Infinity__) |
| mov ax,__float16__(-__Infinity__) |
| mov ax,__float16__(__NaN__) |
| mov ax,__float16__(__QNaN__) |
| mov ax,__float16__(__SNaN__) |
| |
| ; 32-bit |
| mov eax,__float32__(1.0) |
| mov eax,__float32__(+1.0) |
| mov eax,__float32__(-1.0) |
| mov eax,__float32__(0.0) |
| mov eax,__float32__(+0.0) |
| mov eax,__float32__(-0.0) |
| mov eax,__float32__(1.83203125) |
| mov eax,__float32__(+1.83203125) |
| mov eax,__float32__(-1.83203125) |
| mov eax,__float32__(1.83203125e15) |
| mov eax,__float32__(+1.83203125e15) |
| mov eax,__float32__(-1.83203125e15) |
| mov eax,__float32__(1.83203125e-15) |
| mov eax,__float32__(+1.83203125e-15) |
| mov eax,__float32__(-1.83203125e-15) |
| mov eax,__float32__(1.83203125e-40) ; Denormal! |
| mov eax,__float32__(+1.83203125e-40) ; Denormal! |
| mov eax,__float32__(-1.83203125e-40) ; Denormal! |
| mov eax,__float32__(__Infinity__) |
| mov eax,__float32__(+__Infinity__) |
| mov eax,__float32__(-__Infinity__) |
| mov eax,__float32__(__NaN__) |
| mov eax,__float32__(__QNaN__) |
| mov eax,__float32__(__SNaN__) |
| |
| ; 64-bit |
| mov rax,__float64__(1.0) |
| mov rax,__float64__(+1.0) |
| mov rax,__float64__(-1.0) |
| mov rax,__float64__(0.0) |
| mov rax,__float64__(+0.0) |
| mov rax,__float64__(-0.0) |
| mov rax,__float64__(1.83203125) |
| mov rax,__float64__(+1.83203125) |
| mov rax,__float64__(-1.83203125) |
| mov rax,__float64__(1.83203125e300) |
| mov rax,__float64__(+1.83203125e300) |
| mov rax,__float64__(-1.83203125e300) |
| mov rax,__float64__(1.83203125e-300) |
| mov rax,__float64__(+1.83203125e-300) |
| mov rax,__float64__(-1.83203125e-300) |
| mov rax,__float64__(1.83203125e-320) ; Denormal! |
| mov rax,__float64__(+1.83203125e-320) ; Denormal! |
| mov rax,__float64__(-1.83203125e-320) ; Denormal! |
| mov rax,__float64__(__Infinity__) |
| mov rax,__float64__(+__Infinity__) |
| mov rax,__float64__(-__Infinity__) |
| mov rax,__float64__(__NaN__) |
| mov rax,__float64__(__QNaN__) |
| mov rax,__float64__(__SNaN__) |
| |
| ; 80-bit |
| mov rax,__float80m__(1.0) |
| mov ax,__float80e__(1.0) |
| mov rax,__float80m__(+1.0) |
| mov ax,__float80e__(+1.0) |
| mov rax,__float80m__(-1.0) |
| mov ax,__float80e__(-1.0) |
| mov rax,__float80m__(0.0) |
| mov ax,__float80e__(0.0) |
| mov rax,__float80m__(+0.0) |
| mov ax,__float80e__(+0.0) |
| mov rax,__float80m__(-0.0) |
| mov ax,__float80e__(-0.0) |
| mov rax,__float80m__(1.83203125) |
| mov ax,__float80e__(1.83203125) |
| mov rax,__float80m__(+1.83203125) |
| mov ax,__float80e__(+1.83203125) |
| mov rax,__float80m__(-1.83203125) |
| mov ax,__float80e__(-1.83203125) |
| mov rax,__float80m__(1.83203125e+4000) |
| mov ax,__float80e__(1.83203125e+4000) |
| mov rax,__float80m__(+1.83203125e+4000) |
| mov ax,__float80e__(+1.83203125e+4000) |
| mov rax,__float80m__(-1.83203125e+4000) |
| mov ax,__float80e__(-1.83203125e+4000) |
| mov rax,__float80m__(1.83203125e-4000) |
| mov ax,__float80e__(1.83203125e-4000) |
| mov rax,__float80m__(+1.83203125e-4000) |
| mov ax,__float80e__(+1.83203125e-4000) |
| mov rax,__float80m__(-1.83203125e-4000) |
| mov ax,__float80e__(-1.83203125e-4000) |
| mov rax,__float80m__(1.83203125e-4940) ; Denormal! |
| mov ax,__float80e__(1.83203125e-4940) ; Denormal! |
| mov rax,__float80m__(+1.83203125e-4940) ; Denormal! |
| mov ax,__float80e__(+1.83203125e-4940) ; Denormal! |
| mov rax,__float80m__(-1.83203125e-4940) ; Denormal! |
| mov ax,__float80e__(-1.83203125e-4940) ; Denormal! |
| mov rax,__float80m__(__Infinity__) |
| mov ax,__float80e__(__Infinity__) |
| mov rax,__float80m__(+__Infinity__) |
| mov ax,__float80e__(+__Infinity__) |
| mov rax,__float80m__(-__Infinity__) |
| mov ax,__float80e__(-__Infinity__) |
| mov rax,__float80m__(__NaN__) |
| mov ax,__float80e__(__NaN__) |
| mov rax,__float80m__(__QNaN__) |
| mov ax,__float80e__(__QNaN__) |
| mov rax,__float80m__(__SNaN__) |
| mov ax,__float80e__(__SNaN__) |
| |
| ; 128-bit |
| mov rax,__float128l__(1.0) |
| mov rax,__float128h__(1.0) |
| mov rax,__float128l__(+1.0) |
| mov rax,__float128h__(+1.0) |
| mov rax,__float128l__(-1.0) |
| mov rax,__float128h__(-1.0) |
| mov rax,__float128l__(0.0) |
| mov rax,__float128h__(0.0) |
| mov rax,__float128l__(+0.0) |
| mov rax,__float128h__(+0.0) |
| mov rax,__float128l__(-0.0) |
| mov rax,__float128h__(-0.0) |
| mov rax,__float128l__(1.83203125) |
| mov rax,__float128h__(1.83203125) |
| mov rax,__float128l__(+1.83203125) |
| mov rax,__float128h__(+1.83203125) |
| mov rax,__float128l__(-1.83203125) |
| mov rax,__float128h__(-1.83203125) |
| mov rax,__float128l__(1.83203125e+4000) |
| mov rax,__float128h__(1.83203125e+4000) |
| mov rax,__float128l__(+1.83203125e+4000) |
| mov rax,__float128h__(+1.83203125e+4000) |
| mov rax,__float128l__(-1.83203125e+4000) |
| mov rax,__float128h__(-1.83203125e+4000) |
| mov rax,__float128l__(1.83203125e-4000) |
| mov rax,__float128h__(1.83203125e-4000) |
| mov rax,__float128l__(+1.83203125e-4000) |
| mov rax,__float128h__(+1.83203125e-4000) |
| mov rax,__float128l__(-1.83203125e-4000) |
| mov rax,__float128h__(-1.83203125e-4000) |
| mov rax,__float128l__(1.83203125e-4940) ; Denormal! |
| mov rax,__float128h__(1.83203125e-4940) ; Denormal! |
| mov rax,__float128l__(+1.83203125e-4940) ; Denormal! |
| mov rax,__float128h__(+1.83203125e-4940) ; Denormal! |
| mov rax,__float128l__(-1.83203125e-4940) ; Denormal! |
| mov rax,__float128h__(-1.83203125e-4940) ; Denormal! |
| mov rax,__float128l__(__Infinity__) |
| mov rax,__float128h__(__Infinity__) |
| mov rax,__float128l__(+__Infinity__) |
| mov rax,__float128h__(+__Infinity__) |
| mov rax,__float128l__(-__Infinity__) |
| mov rax,__float128h__(-__Infinity__) |
| mov rax,__float128l__(__NaN__) |
| mov rax,__float128h__(__NaN__) |
| mov rax,__float128l__(__QNaN__) |
| mov rax,__float128h__(__QNaN__) |
| mov rax,__float128l__(__SNaN__) |
| mov rax,__float128h__(__SNaN__) |
| |
| ; |
| ; Test hexadecimal floating-point numbers |
| ; |
| |
| ; 16-bit |
| mov ax,__float16__(1.0) |
| mov ax,__float16__(0x1.0) |
| mov ax,__float16__(2.0) |
| mov ax,__float16__(0x2.0) |
| mov ax,__float16__(0x1.0p+1) |
| mov ax,__float16__(0x1.0p-1) |
| mov ax,__float16__(0x0.0) |
| mov ax,__float16__(0x1.23456789) |
| mov ax,__float16__(0x0.123456789) |
| mov ax,__float16__(0x0.0000123456789) |
| mov ax,__float16__(0x1.23456789p10) |
| mov ax,__float16__(0x1.23456789p+10) |
| mov ax,__float16__(0x1.23456789p-10) |
| mov ax,__float16__(0x0.123456789p10) |
| mov ax,__float16__(0x0.123456789p+10) |
| mov ax,__float16__(0x0.123456789abcdef0123456789abcdef012345p-10) |
| mov ax,__float16__(0x0.0000123456789) |
| mov ax,__float16__(0x0.0000123456789p+10) |
| mov ax,__float16__(0x0.0000123456789p-10) |
| |
| ; 32-bit |
| mov eax,__float32__(1.0) |
| mov eax,__float32__(0x1.0) |
| mov eax,__float32__(2.0) |
| mov eax,__float32__(0x2.0) |
| mov eax,__float32__(0x1.0p+1) |
| mov eax,__float32__(0x1.0p-1) |
| mov eax,__float32__(0x0.0) |
| mov eax,__float32__(0x1.23456789) |
| mov eax,__float32__(0x0.123456789) |
| mov eax,__float32__(0x0.0000123456789) |
| mov eax,__float32__(0x1.23456789p10) |
| mov eax,__float32__(0x1.23456789p+10) |
| mov eax,__float32__(0x1.23456789p-10) |
| mov eax,__float32__(0x0.123456789p10) |
| mov eax,__float32__(0x0.123456789p+10) |
| mov eax,__float32__(0x0.123456789abcdef0123456789abcdef012345p-10) |
| mov eax,__float32__(0x0.0000123456789) |
| mov eax,__float32__(0x0.0000123456789p+10) |
| mov eax,__float32__(0x0.0000123456789p-10) |
| mov eax,__float32__(0x123456789.0) |
| mov eax,__float32__(0x0000123456789.0) |
| mov eax,__float32__(0x123456789.0p+0) |
| mov eax,__float32__(0x123456789.0p+64) |
| |
| ; 64-bit |
| mov rax,__float64__(1.0) |
| mov rax,__float64__(0x1.0) |
| mov rax,__float64__(2.0) |
| mov rax,__float64__(0x2.0) |
| mov rax,__float64__(0x1.0p+1) |
| mov rax,__float64__(0x1.0p-1) |
| mov rax,__float64__(0x0.0) |
| mov rax,__float64__(0x1.23456789) |
| mov rax,__float64__(0x0.123456789) |
| mov rax,__float64__(0x0.0000123456789) |
| mov rax,__float64__(0x1.23456789p10) |
| mov rax,__float64__(0x1.23456789p+10) |
| mov rax,__float64__(0x1.23456789p-10) |
| mov rax,__float64__(0x0.123456789p10) |
| mov rax,__float64__(0x0.123456789p+10) |
| mov rax,__float64__(0x0.123456789abcdef0123456789abcdef012345p-10) |
| mov rax,__float64__(0x0.0000123456789) |
| mov rax,__float64__(0x0.0000123456789p+10) |
| mov rax,__float64__(0x0.0000123456789p-10) |
| mov rax,__float64__(0x123456789.0) |
| mov rax,__float64__(0x0000123456789.0) |
| mov rax,__float64__(0x123456789.0p+0) |
| mov rax,__float64__(0x123456789.0p+300) |
| |
| ; 80-bit |
| mov rax,__float80m__(1.0) |
| mov ax,__float80e__(1.0) |
| mov rax,__float80m__(0x1.0) |
| mov ax,__float80e__(0x1.0) |
| mov rax,__float80m__(2.0) |
| mov ax,__float80e__(2.0) |
| mov rax,__float80m__(0x2.0) |
| mov ax,__float80e__(0x2.0) |
| mov rax,__float80m__(0x1.0p+1) |
| mov ax,__float80e__(0x1.0p+1) |
| mov rax,__float80m__(0x1.0p-1) |
| mov ax,__float80e__(0x1.0p-1) |
| mov rax,__float80m__(0x0.0) |
| mov ax,__float80e__(0x0.0) |
| mov rax,__float80m__(0x1.23456789) |
| mov ax,__float80e__(0x1.23456789) |
| mov rax,__float80m__(0x0.123456789) |
| mov ax,__float80e__(0x0.123456789) |
| mov rax,__float80m__(0x0.0000123456789) |
| mov ax,__float80e__(0x0.0000123456789) |
| mov rax,__float80m__(0x1.23456789p10) |
| mov ax,__float80e__(0x1.23456789p10) |
| mov rax,__float80m__(0x1.23456789p+10) |
| mov ax,__float80e__(0x1.23456789p+10) |
| mov rax,__float80m__(0x1.23456789p-10) |
| mov ax,__float80e__(0x1.23456789p-10) |
| mov rax,__float80m__(0x0.123456789p10) |
| mov ax,__float80e__(0x0.123456789p10) |
| mov rax,__float80m__(0x0.123456789p+10) |
| mov ax,__float80e__(0x0.123456789p+10) |
| mov rax,__float80m__(0x0.123456789abcdef0123456789abcdef012345p-10) |
| mov ax,__float80e__(0x0.123456789abcdef0123456789abcdef012345p-10) |
| mov rax,__float80m__(0x0.0000123456789) |
| mov ax,__float80e__(0x0.0000123456789) |
| mov rax,__float80m__(0x0.0000123456789p+10) |
| mov ax,__float80e__(0x0.0000123456789p+10) |
| mov rax,__float80m__(0x0.0000123456789p-10) |
| mov ax,__float80e__(0x0.0000123456789p-10) |
| mov rax,__float80m__(0x123456789.0) |
| mov ax,__float80e__(0x123456789.0) |
| mov rax,__float80m__(0x0000123456789.0) |
| mov ax,__float80e__(0x0000123456789.0) |
| mov rax,__float80m__(0x123456789.0p+0) |
| mov ax,__float80e__(0x123456789.0p+0) |
| mov rax,__float80m__(0x123456789.0p+1024) |
| mov ax,__float80e__(0x123456789.0p+1024) |
| |
| ; 128-bit |
| mov rax,__float128l__(1.0) |
| mov rax,__float128h__(1.0) |
| mov rax,__float128l__(0x1.0) |
| mov rax,__float128h__(0x1.0) |
| mov rax,__float128l__(2.0) |
| mov rax,__float128h__(2.0) |
| mov rax,__float128l__(0x2.0) |
| mov rax,__float128h__(0x2.0) |
| mov rax,__float128l__(0x1.0p+1) |
| mov rax,__float128h__(0x1.0p+1) |
| mov rax,__float128l__(0x1.0p-1) |
| mov rax,__float128h__(0x1.0p-1) |
| mov rax,__float128l__(0x0.0) |
| mov rax,__float128h__(0x0.0) |
| mov rax,__float128l__(0x1.23456789) |
| mov rax,__float128h__(0x1.23456789) |
| mov rax,__float128l__(0x0.123456789) |
| mov rax,__float128h__(0x0.123456789) |
| mov rax,__float128l__(0x0.0000123456789) |
| mov rax,__float128h__(0x0.0000123456789) |
| mov rax,__float128l__(0x1.23456789p10) |
| mov rax,__float128h__(0x1.23456789p10) |
| mov rax,__float128l__(0x1.23456789p+10) |
| mov rax,__float128h__(0x1.23456789p+10) |
| mov rax,__float128l__(0x1.23456789p-10) |
| mov rax,__float128h__(0x1.23456789p-10) |
| mov rax,__float128l__(0x0.123456789p10) |
| mov rax,__float128h__(0x0.123456789p10) |
| mov rax,__float128l__(0x0.123456789p+10) |
| mov rax,__float128h__(0x0.123456789p+10) |
| mov rax,__float128l__(0x0.123456789abcdef0123456789abcdef012345p-10) |
| mov rax,__float128h__(0x0.123456789abcdef0123456789abcdef012345p-10) |
| mov rax,__float128l__(0x0.0000123456789) |
| mov rax,__float128h__(0x0.0000123456789) |
| mov rax,__float128l__(0x0.0000123456789p+10) |
| mov rax,__float128h__(0x0.0000123456789p+10) |
| mov rax,__float128l__(0x0.0000123456789p-10) |
| mov rax,__float128h__(0x0.0000123456789p-10) |
| mov rax,__float128l__(0x123456789.0) |
| mov rax,__float128h__(0x123456789.0) |
| mov rax,__float128l__(0x0000123456789.0) |
| mov rax,__float128h__(0x0000123456789.0) |
| mov rax,__float128l__(0x123456789.0p+0) |
| mov rax,__float128h__(0x123456789.0p+0) |
| mov rax,__float128l__(0x123456789.0p+1024) |
| mov rax,__float128h__(0x123456789.0p+1024) |