summaryrefslogtreecommitdiff
path: root/lldb/test/API/functionalities/scripted_process/TestStackCoreScriptedProcess.py
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2022-10-26 14:23:51 -0700
committerCraig Topper <craig.topper@sifive.com>2022-10-26 14:36:49 -0700
commite94dc58dff1d693912904ba7ff743f67b3348d32 (patch)
tree0c8234a19ecab52f642b73aee01027a69f8b9658 /lldb/test/API/functionalities/scripted_process/TestStackCoreScriptedProcess.py
parent55d08a867056e6ceb62c3a1ce3643345dcfc5dde (diff)
[RISCV] Inline scalar ceil/floor/trunc/rint/round/roundeven.
This avoids the call overhead as well as the the save/restore of fflags and the snan handling in the libm function. The save/restore of fflags and snan handling are needed to be correct for -ftrapping-math. I think we can ignore them in the default environment. The inline sequence will generate an invalid exception for nan and an inexact exception if fractional bits are discarded. I've used a custom inserter to explicitly create the control flow around the float->int->float conversion. We can probably avoid the final fsgnj after the conversion for no signed zeros FMF, but I'll leave that for future work. Note the comparison constant is slightly different than glibc uses. They use 1<<53 for double, I'm using 1<<52. I believe either are valid. Numbers >= 1<<52 can't have any fractional bits. It's ok to do the float->int->float conversion on numbers between 1<<53 and 1<<52 since they will all fit in 64. We only have a problem if the double can't fit in i64 Reviewed By: reames Differential Revision: https://reviews.llvm.org/D136508
Diffstat (limited to 'lldb/test/API/functionalities/scripted_process/TestStackCoreScriptedProcess.py')
0 files changed, 0 insertions, 0 deletions