4 changed files with 10 additions and 6 deletions
@ -1,3 +1,4 @@ |
|||
require_extension('P'); |
|||
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_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; |
|||
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; |
|||
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