diff options
Diffstat (limited to 'riscv/insns/pmulqr_w.h')
| -rw-r--r-- | riscv/insns/pmulqr_w.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/riscv/insns/pmulqr_w.h b/riscv/insns/pmulqr_w.h new file mode 100644 index 00000000..f52820ca --- /dev/null +++ b/riscv/insns/pmulqr_w.h @@ -0,0 +1,10 @@ +require_rv64; +P_RD_RS1_RS2_LOOP(32,32,32, { + if ((p_rs1 != INT32_MIN) | (p_rs2 != INT32_MIN)) { + p_rd = ((((int64_t)p_rs1 * (int64_t)p_rs2) >> 30) + 1) >> 1; + } else { + p_rd = INT32_MAX; + P.VU.vxsat->write(1); + } +} +) |
