4 changed files with 10 additions and 6 deletions
@ -1,3 +1,4 @@ |
|||||
require_extension('P'); |
require_extension('P'); |
||||
require_rv32; |
require_rv32; |
||||
WRITE_P_RD_PAIR(P_RD_PAIR + (((sreg_t)RS1*(sreg_t)RS2 + 0x40000000) >> 31)); |
int64_t tmp = (((int128_t)(int32_t)RS1 * (int32_t)RS2) + (1 << 30)) >> 31; |
||||
|
WRITE_P_RD_PAIR(P_RD_PAIR + tmp); |
||||
|
|||||
@ -1,3 +1,4 @@ |
|||||
require_extension('P'); |
require_extension('P'); |
||||
require_rv32; |
require_rv32; |
||||
WRITE_P_RD_PAIR(P_RD_PAIR + (((sreg_t)RS1*(sreg_t)RS2) >> 31)); |
int64_t tmp = (((int128_t)(int32_t)RS1 * (int32_t)RS2)) >> 31; |
||||
|
WRITE_P_RD_PAIR((P_RD_PAIR + tmp)); |
||||
|
|||||
@ -1,4 +1,5 @@ |
|||||
require_rv32; |
require_rv32; |
||||
P_WIDEN_RD_RS1_RS2_LOOP(16, 16, { |
P_WIDEN_RD_RS1_RS2_LOOP(16, 16, { |
||||
p_rd += (p_rs1 * p_rs2 + 0x4000) >> 15; |
int64_t val = ((int64_t)(int16_t)p_rs1 * (int64_t)(int16_t)p_rs2 + 0x4000) >> 15; |
||||
}) |
p_rd += val; |
||||
|
}) |
||||
|
|||||
@ -1,4 +1,5 @@ |
|||||
require_rv32; |
require_rv32; |
||||
P_WIDEN_RD_RS1_RS2_LOOP(16, 16, { |
P_WIDEN_RD_RS1_RS2_LOOP(16, 16, { |
||||
p_rd += (p_rs1 * p_rs2) >> 15; |
int64_t val = ((int64_t)(int16_t)p_rs1 * (int64_t)(int16_t)p_rs2) >> 15; |
||||
}) |
p_rd += val; |
||||
|
}) |
||||
|
|||||
Loading…
Reference in new issue