From acd452e32c5680b727b39ee9f469825ed210d1ed Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Thu, 3 Jun 2021 23:18:08 +0100 Subject: [PATCH] add c version of double-to-int32 --- openpower/sv/int_fp_mv/appendix.mdwn | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/openpower/sv/int_fp_mv/appendix.mdwn b/openpower/sv/int_fp_mv/appendix.mdwn index 1bcd34e68..2d4ca89c9 100644 --- a/openpower/sv/int_fp_mv/appendix.mdwn +++ b/openpower/sv/int_fp_mv/appendix.mdwn @@ -1,5 +1,29 @@ # Equivalent OpenPower ISA v3.0 Assembly Language for FP -> Integer Conversion Modes +## c (IEEE754 standard compliant) + +``` +int32_t toInt32(double number) +{ + uint32_t result = (int32_t)number; + return result; +} +``` + +### 64-bit float -> 32-bit signed integer + +``` +toInt32(double): + fctiwz 1,1 + addi 9,1,-16 + stfiwx 1,0,9 + lwz 3,-16(1) + extsw 3,3 + blr + .long 0 + .byte 0,9,0,0,0,0,0,0 +``` + ## Rust ```pub fn fcvttgd_rust(v: f64) -> i64 { -- 2.30.2