Browse Source
The previous routines always stored the low-order bits into the low-order doubleword, which is only correct on little-endian targets.pull/2176/head
3 changed files with 5 additions and 24 deletions
@ -1,3 +1,5 @@ |
|||||
require_extension('Q'); |
require_extension('Q'); |
||||
require_fp; |
require_fp; |
||||
WRITE_FRD(MMU.load_float128(RS1 + insn.i_imm())); |
uint128_t v = MMU.load<uint128_t>(RS1 + insn.i_imm()); |
||||
|
float128_t f = { uint64_t(v), uint64_t(v >> 64) }; |
||||
|
WRITE_FRD(f); |
||||
|
|||||
@ -1,3 +1,4 @@ |
|||||
require_extension('Q'); |
require_extension('Q'); |
||||
require_fp; |
require_fp; |
||||
MMU.store_float128(RS1 + insn.s_imm(), FRS2); |
uint128_t v = FRS2.v[0] | (uint128_t(FRS2.v[1]) << 64); |
||||
|
MMU.store<uint128_t>(RS1 + insn.s_imm(), v); |
||||
|
|||||
Loading…
Reference in new issue