_f32_intrin_probe.nx source
↩ module page · 19 lines · 924 B
1// _f32_intrin_probe.nx -- R1b proof: NishiLang computing in HARDWARE f32 via the new
2// __f32_* compiler intrinsics (lowered to SSE scalar-single). Self-checking: exit 0 iff
3// the FPU produced the right answers; 31/32 pinpoint a wrong result. No floats are
4// faked -- every value flows GPR->xmm->GPR through addss/mulss/divss/cvtsi2ss/cvttss2si.
5func main() -> i64 {
6 let a: i64 = __f32_from_i64(3) // 3.0f bits
7 let b: i64 = __f32_from_i64(4) // 4.0f bits
8 let s: i64 = __f32_add(a, b) // 7.0f
9 let five: i64 = __f32_from_i64(5)
10 let p: i64 = __f32_mul(s, five) // 35.0f
11 let r: i64 = __f32_to_i64(p) // 35
12 let seven: i64 = __f32_from_i64(7)
13 let two: i64 = __f32_from_i64(2)
14 let q: i64 = __f32_div(seven, two) // 3.5f
15 let t: i64 = __f32_to_i64(q) // truncate -> 3
16 if r != 35 { return 31 }
17 if t != 3 { return 32 }
18 return 0
19}