code wiki / (root) / _f32_intrin_probe.nx

_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}