From 72a5c14248648c5e953e32529aa1b5b71246d238 Mon Sep 17 00:00:00 2001 From: Chih-Min Chao Date: Tue, 19 May 2026 19:32:16 -0700 Subject: [PATCH] rvp: fix the result extraction of multiplication Signed-off-by: Chih-Min Chao --- riscv/insns/pmhacc_h.h | 4 ++-- riscv/insns/pmhacc_h_b0.h | 4 ++-- riscv/insns/pmhacc_h_b1.h | 4 ++-- riscv/insns/pmhacc_w_h0.h | 2 +- riscv/insns/pmhacc_w_h1.h | 2 +- riscv/insns/pmhaccsu_h_b0.h | 4 ++-- riscv/insns/pmhaccsu_h_b1.h | 4 ++-- riscv/insns/pmhaccsu_w_h0.h | 2 +- riscv/insns/pmhaccsu_w_h1.h | 2 +- riscv/insns/pmulh_h_b0.h | 4 ++-- riscv/insns/pmulh_h_b1.h | 4 ++-- riscv/insns/pmulh_w_h0.h | 2 +- riscv/insns/pmulh_w_h1.h | 2 +- riscv/insns/pmulhsu_h_b0.h | 4 ++-- riscv/insns/pmulhsu_h_b1.h | 4 ++-- riscv/insns/pmulhsu_w_h1.h | 2 +- 16 files changed, 25 insertions(+), 25 deletions(-) diff --git a/riscv/insns/pmhacc_h.h b/riscv/insns/pmhacc_h.h index 053c2858..b50bb7ae 100644 --- a/riscv/insns/pmhacc_h.h +++ b/riscv/insns/pmhacc_h.h @@ -1,4 +1,4 @@ P_RD_RS1_RS2_LOOP(16,16,16, { int32_t mres = sext32(p_rs1) * sext32(p_rs2); - p_rd += mres>>16; -}) \ No newline at end of file + p_rd += mres>>16; +}) diff --git a/riscv/insns/pmhacc_h_b0.h b/riscv/insns/pmhacc_h_b0.h index 60a1d5c2..922fcb3b 100644 --- a/riscv/insns/pmhacc_h_b0.h +++ b/riscv/insns/pmhacc_h_b0.h @@ -1,4 +1,4 @@ P_RD_RS1_RS2_E_LOOP(16,16,8, { int32_t mres = sext32(p_rs1) * sext32(p_rs2); - p_rd += mres>>16; -}) \ No newline at end of file + p_rd += mres>>8; +}) diff --git a/riscv/insns/pmhacc_h_b1.h b/riscv/insns/pmhacc_h_b1.h index c7aa4d7a..1ce9863b 100644 --- a/riscv/insns/pmhacc_h_b1.h +++ b/riscv/insns/pmhacc_h_b1.h @@ -1,4 +1,4 @@ P_RD_RS1_RS2_O_LOOP(16,16,8, { int32_t mres = sext32(p_rs1) * sext32(p_rs2); - p_rd += mres>>16; -}) \ No newline at end of file + p_rd += mres>>8; +}) diff --git a/riscv/insns/pmhacc_w_h0.h b/riscv/insns/pmhacc_w_h0.h index 76b33778..5e2d8434 100644 --- a/riscv/insns/pmhacc_w_h0.h +++ b/riscv/insns/pmhacc_w_h0.h @@ -1,6 +1,6 @@ require_rv64; P_RD_RS1_RS2_E_LOOP(32,32,16, { sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64); - p_rd += mres>>32; + p_rd += mres>>16; } ) diff --git a/riscv/insns/pmhacc_w_h1.h b/riscv/insns/pmhacc_w_h1.h index 9f103ad6..95b022f6 100644 --- a/riscv/insns/pmhacc_w_h1.h +++ b/riscv/insns/pmhacc_w_h1.h @@ -1,6 +1,6 @@ require_rv64; P_RD_RS1_RS2_O_LOOP(32,32,16, { sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64); - p_rd += mres>>32; + p_rd += mres>>16; } ) diff --git a/riscv/insns/pmhaccsu_h_b0.h b/riscv/insns/pmhaccsu_h_b0.h index 3d14229b..85c261ad 100644 --- a/riscv/insns/pmhaccsu_h_b0.h +++ b/riscv/insns/pmhaccsu_h_b0.h @@ -1,4 +1,4 @@ P_RD_RS1_RS2_E_SULOOP(16,16,8, { int32_t mres = sext(p_rs1,32) * zext(p_rs2,32); - p_rd += mres>>16; -}) \ No newline at end of file + p_rd += mres>>8; +}) diff --git a/riscv/insns/pmhaccsu_h_b1.h b/riscv/insns/pmhaccsu_h_b1.h index 6a5a478f..9b6453a5 100644 --- a/riscv/insns/pmhaccsu_h_b1.h +++ b/riscv/insns/pmhaccsu_h_b1.h @@ -1,4 +1,4 @@ P_RD_RS1_RS2_O_SULOOP(16,16,8, { int32_t mres = sext(p_rs1,32) * zext(p_rs2,32); - p_rd += mres>>16; -}) \ No newline at end of file + p_rd += mres>>8; +}) diff --git a/riscv/insns/pmhaccsu_w_h0.h b/riscv/insns/pmhaccsu_w_h0.h index 400eaa92..27189cd6 100644 --- a/riscv/insns/pmhaccsu_w_h0.h +++ b/riscv/insns/pmhaccsu_w_h0.h @@ -1,6 +1,6 @@ require_rv64; P_RD_RS1_RS2_E_SULOOP(32,32,16, { sreg_t mres = sext(p_rs1,64) * zext(p_rs2,64); - p_rd += mres>>32; + p_rd += mres>>16; } ) diff --git a/riscv/insns/pmhaccsu_w_h1.h b/riscv/insns/pmhaccsu_w_h1.h index 55b07f20..80794d4a 100644 --- a/riscv/insns/pmhaccsu_w_h1.h +++ b/riscv/insns/pmhaccsu_w_h1.h @@ -1,6 +1,6 @@ require_rv64; P_RD_RS1_RS2_O_SULOOP(32,32,16, { sreg_t mres = sext(p_rs1,64) * zext(p_rs2,64); - p_rd += mres>>32; + p_rd += mres>>16; } ) diff --git a/riscv/insns/pmulh_h_b0.h b/riscv/insns/pmulh_h_b0.h index 5c69a9c6..141fd704 100644 --- a/riscv/insns/pmulh_h_b0.h +++ b/riscv/insns/pmulh_h_b0.h @@ -1,4 +1,4 @@ P_RD_RS1_RS2_E_LOOP(16,16,8, { int32_t mres = sext(p_rs1,32) * sext(p_rs2,32); - p_rd = mres >> 16; -}) \ No newline at end of file + p_rd = mres >> 8; +}) diff --git a/riscv/insns/pmulh_h_b1.h b/riscv/insns/pmulh_h_b1.h index 1cd5d680..caa411e4 100644 --- a/riscv/insns/pmulh_h_b1.h +++ b/riscv/insns/pmulh_h_b1.h @@ -1,4 +1,4 @@ P_RD_RS1_RS2_O_LOOP(16,16,8, { int32_t mres = sext(p_rs1,32) * sext(p_rs2,32); - p_rd = mres >> 16; -}) \ No newline at end of file + p_rd = mres >> 8; +}) diff --git a/riscv/insns/pmulh_w_h0.h b/riscv/insns/pmulh_w_h0.h index bff17442..eb31f71b 100644 --- a/riscv/insns/pmulh_w_h0.h +++ b/riscv/insns/pmulh_w_h0.h @@ -1,6 +1,6 @@ require_rv64; P_RD_RS1_RS2_E_LOOP(32,32,16, { sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64); - p_rd = mres >> 32; + p_rd = mres >> 16; } ) diff --git a/riscv/insns/pmulh_w_h1.h b/riscv/insns/pmulh_w_h1.h index 3a62a4aa..d8246a7b 100644 --- a/riscv/insns/pmulh_w_h1.h +++ b/riscv/insns/pmulh_w_h1.h @@ -1,6 +1,6 @@ require_rv64; P_RD_RS1_RS2_O_LOOP(32,32,16, { sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64); - p_rd = mres >> 32; + p_rd = mres >> 16; } ) diff --git a/riscv/insns/pmulhsu_h_b0.h b/riscv/insns/pmulhsu_h_b0.h index 3cfdd4b4..a18aafd3 100644 --- a/riscv/insns/pmulhsu_h_b0.h +++ b/riscv/insns/pmulhsu_h_b0.h @@ -1,4 +1,4 @@ P_RD_RS1_RS2_E_SULOOP(16,16,8, { int32_t mres = sext(p_rs1,32) * zext(p_rs2,32); - p_rd = mres >> 16; -}) \ No newline at end of file + p_rd = mres >> 8; +}) diff --git a/riscv/insns/pmulhsu_h_b1.h b/riscv/insns/pmulhsu_h_b1.h index 4e6b5bf3..026e5278 100644 --- a/riscv/insns/pmulhsu_h_b1.h +++ b/riscv/insns/pmulhsu_h_b1.h @@ -1,4 +1,4 @@ P_RD_RS1_RS2_O_SULOOP(16,16,8, { int32_t mres = sext(p_rs1,32) * zext(p_rs2,32); - p_rd = mres >> 16; -}) \ No newline at end of file + p_rd = mres >> 8; +}) diff --git a/riscv/insns/pmulhsu_w_h1.h b/riscv/insns/pmulhsu_w_h1.h index fd5f2345..97d11480 100644 --- a/riscv/insns/pmulhsu_w_h1.h +++ b/riscv/insns/pmulhsu_w_h1.h @@ -1,6 +1,6 @@ require_rv64; P_RD_RS1_RS2_O_SULOOP(32,32,16, { sreg_t mres = sext(p_rs1,64) * zext(p_rs2,64); - p_rd = mres >> 32; + p_rd = mres >> 16; } )