From c75dd28e637f6f555d5c6116576924812b0b9f9a Mon Sep 17 00:00:00 2001 From: Jacob Lifshay Date: Tue, 16 May 2023 21:53:45 -0700 Subject: [PATCH] fix bug in fcvttg OpenPower and saturating conversion --- .../sv/int_fp_mv/moves_and_conversions.mdwn | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/openpower/sv/int_fp_mv/moves_and_conversions.mdwn b/openpower/sv/int_fp_mv/moves_and_conversions.mdwn index 94fd1f7fc..c735a6944 100644 --- a/openpower/sv/int_fp_mv/moves_and_conversions.mdwn +++ b/openpower/sv/int_fp_mv/moves_and_conversions.mdwn @@ -512,9 +512,9 @@ Section 7.1 of the ECMAScript / JavaScript else if bfp_COMPARE_LT(rnd, range_min) then result <- si64_CONVERT_FROM_BFP(range_min) else if IT[1] = 1 then # Unsigned 32/64-bit - result <- ui64_CONVERT_FROM_BFP(range_max) + result <- ui64_CONVERT_FROM_BFP(rnd) else # Signed 32/64-bit - result <- si64_CONVERT_FROM_BFP(range_max) + result <- si64_CONVERT_FROM_BFP(rnd) case(2, 3): # Java/Saturating semantics if IsNaN(rnd) then result <- [0] * 64 @@ -523,9 +523,9 @@ Section 7.1 of the ECMAScript / JavaScript else if bfp_COMPARE_LT(rnd, range_min) then result <- si64_CONVERT_FROM_BFP(range_min) else if IT[1] = 1 then # Unsigned 32/64-bit - result <- ui64_CONVERT_FROM_BFP(range_max) + result <- ui64_CONVERT_FROM_BFP(rnd) else # Signed 32/64-bit - result <- si64_CONVERT_FROM_BFP(range_max) + result <- si64_CONVERT_FROM_BFP(rnd) default: # JavaScript semantics # CVM = 6, 7 are illegal instructions # using a 128-bit intermediate works here because the largest type @@ -677,9 +677,9 @@ Special Registers altered: else if bfp_COMPARE_LT(rnd, range_min) then result <- si64_CONVERT_FROM_BFP(range_min) else if IT[1] = 1 then # Unsigned 32/64-bit - result <- ui64_CONVERT_FROM_BFP(range_max) + result <- ui64_CONVERT_FROM_BFP(rnd) else # Signed 32/64-bit - result <- si64_CONVERT_FROM_BFP(range_max) + result <- si64_CONVERT_FROM_BFP(rnd) case(2, 3): # Java/Saturating semantics if IsNaN(rnd) then result <- [0] * 64 @@ -688,9 +688,9 @@ Special Registers altered: else if bfp_COMPARE_LT(rnd, range_min) then result <- si64_CONVERT_FROM_BFP(range_min) else if IT[1] = 1 then # Unsigned 32/64-bit - result <- ui64_CONVERT_FROM_BFP(range_max) + result <- ui64_CONVERT_FROM_BFP(rnd) else # Signed 32/64-bit - result <- si64_CONVERT_FROM_BFP(range_max) + result <- si64_CONVERT_FROM_BFP(rnd) default: # JavaScript semantics # CVM = 6, 7 are illegal instructions # using a 128-bit intermediate works here because the largest type -- 2.30.2