Browse Source

rvp: fix the result extraction of multiplication

Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
pull/2310/head
Chih-Min Chao 3 months ago
parent
commit
72a5c14248
  1. 4
      riscv/insns/pmhacc_h.h
  2. 4
      riscv/insns/pmhacc_h_b0.h
  3. 4
      riscv/insns/pmhacc_h_b1.h
  4. 2
      riscv/insns/pmhacc_w_h0.h
  5. 2
      riscv/insns/pmhacc_w_h1.h
  6. 4
      riscv/insns/pmhaccsu_h_b0.h
  7. 4
      riscv/insns/pmhaccsu_h_b1.h
  8. 2
      riscv/insns/pmhaccsu_w_h0.h
  9. 2
      riscv/insns/pmhaccsu_w_h1.h
  10. 4
      riscv/insns/pmulh_h_b0.h
  11. 4
      riscv/insns/pmulh_h_b1.h
  12. 2
      riscv/insns/pmulh_w_h0.h
  13. 2
      riscv/insns/pmulh_w_h1.h
  14. 4
      riscv/insns/pmulhsu_h_b0.h
  15. 4
      riscv/insns/pmulhsu_h_b1.h
  16. 2
      riscv/insns/pmulhsu_w_h1.h

4
riscv/insns/pmhacc_h.h

@ -1,4 +1,4 @@
P_RD_RS1_RS2_LOOP(16,16,16, { P_RD_RS1_RS2_LOOP(16,16,16, {
int32_t mres = sext32(p_rs1) * sext32(p_rs2); int32_t mres = sext32(p_rs1) * sext32(p_rs2);
p_rd += mres>>16; p_rd += mres>>16;
}) })

4
riscv/insns/pmhacc_h_b0.h

@ -1,4 +1,4 @@
P_RD_RS1_RS2_E_LOOP(16,16,8, { P_RD_RS1_RS2_E_LOOP(16,16,8, {
int32_t mres = sext32(p_rs1) * sext32(p_rs2); int32_t mres = sext32(p_rs1) * sext32(p_rs2);
p_rd += mres>>16; p_rd += mres>>8;
}) })

4
riscv/insns/pmhacc_h_b1.h

@ -1,4 +1,4 @@
P_RD_RS1_RS2_O_LOOP(16,16,8, { P_RD_RS1_RS2_O_LOOP(16,16,8, {
int32_t mres = sext32(p_rs1) * sext32(p_rs2); int32_t mres = sext32(p_rs1) * sext32(p_rs2);
p_rd += mres>>16; p_rd += mres>>8;
}) })

2
riscv/insns/pmhacc_w_h0.h

@ -1,6 +1,6 @@
require_rv64; require_rv64;
P_RD_RS1_RS2_E_LOOP(32,32,16, { P_RD_RS1_RS2_E_LOOP(32,32,16, {
sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64); sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64);
p_rd += mres>>32; p_rd += mres>>16;
} }
) )

2
riscv/insns/pmhacc_w_h1.h

@ -1,6 +1,6 @@
require_rv64; require_rv64;
P_RD_RS1_RS2_O_LOOP(32,32,16, { P_RD_RS1_RS2_O_LOOP(32,32,16, {
sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64); sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64);
p_rd += mres>>32; p_rd += mres>>16;
} }
) )

4
riscv/insns/pmhaccsu_h_b0.h

@ -1,4 +1,4 @@
P_RD_RS1_RS2_E_SULOOP(16,16,8, { P_RD_RS1_RS2_E_SULOOP(16,16,8, {
int32_t mres = sext(p_rs1,32) * zext(p_rs2,32); int32_t mres = sext(p_rs1,32) * zext(p_rs2,32);
p_rd += mres>>16; p_rd += mres>>8;
}) })

4
riscv/insns/pmhaccsu_h_b1.h

@ -1,4 +1,4 @@
P_RD_RS1_RS2_O_SULOOP(16,16,8, { P_RD_RS1_RS2_O_SULOOP(16,16,8, {
int32_t mres = sext(p_rs1,32) * zext(p_rs2,32); int32_t mres = sext(p_rs1,32) * zext(p_rs2,32);
p_rd += mres>>16; p_rd += mres>>8;
}) })

2
riscv/insns/pmhaccsu_w_h0.h

@ -1,6 +1,6 @@
require_rv64; require_rv64;
P_RD_RS1_RS2_E_SULOOP(32,32,16, { P_RD_RS1_RS2_E_SULOOP(32,32,16, {
sreg_t mres = sext(p_rs1,64) * zext(p_rs2,64); sreg_t mres = sext(p_rs1,64) * zext(p_rs2,64);
p_rd += mres>>32; p_rd += mres>>16;
} }
) )

2
riscv/insns/pmhaccsu_w_h1.h

@ -1,6 +1,6 @@
require_rv64; require_rv64;
P_RD_RS1_RS2_O_SULOOP(32,32,16, { P_RD_RS1_RS2_O_SULOOP(32,32,16, {
sreg_t mres = sext(p_rs1,64) * zext(p_rs2,64); sreg_t mres = sext(p_rs1,64) * zext(p_rs2,64);
p_rd += mres>>32; p_rd += mres>>16;
} }
) )

4
riscv/insns/pmulh_h_b0.h

@ -1,4 +1,4 @@
P_RD_RS1_RS2_E_LOOP(16,16,8, { P_RD_RS1_RS2_E_LOOP(16,16,8, {
int32_t mres = sext(p_rs1,32) * sext(p_rs2,32); int32_t mres = sext(p_rs1,32) * sext(p_rs2,32);
p_rd = mres >> 16; p_rd = mres >> 8;
}) })

4
riscv/insns/pmulh_h_b1.h

@ -1,4 +1,4 @@
P_RD_RS1_RS2_O_LOOP(16,16,8, { P_RD_RS1_RS2_O_LOOP(16,16,8, {
int32_t mres = sext(p_rs1,32) * sext(p_rs2,32); int32_t mres = sext(p_rs1,32) * sext(p_rs2,32);
p_rd = mres >> 16; p_rd = mres >> 8;
}) })

2
riscv/insns/pmulh_w_h0.h

@ -1,6 +1,6 @@
require_rv64; require_rv64;
P_RD_RS1_RS2_E_LOOP(32,32,16, { P_RD_RS1_RS2_E_LOOP(32,32,16, {
sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64); sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64);
p_rd = mres >> 32; p_rd = mres >> 16;
} }
) )

2
riscv/insns/pmulh_w_h1.h

@ -1,6 +1,6 @@
require_rv64; require_rv64;
P_RD_RS1_RS2_O_LOOP(32,32,16, { P_RD_RS1_RS2_O_LOOP(32,32,16, {
sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64); sreg_t mres = sext(p_rs1,64) * sext(p_rs2,64);
p_rd = mres >> 32; p_rd = mres >> 16;
} }
) )

4
riscv/insns/pmulhsu_h_b0.h

@ -1,4 +1,4 @@
P_RD_RS1_RS2_E_SULOOP(16,16,8, { P_RD_RS1_RS2_E_SULOOP(16,16,8, {
int32_t mres = sext(p_rs1,32) * zext(p_rs2,32); int32_t mres = sext(p_rs1,32) * zext(p_rs2,32);
p_rd = mres >> 16; p_rd = mres >> 8;
}) })

4
riscv/insns/pmulhsu_h_b1.h

@ -1,4 +1,4 @@
P_RD_RS1_RS2_O_SULOOP(16,16,8, { P_RD_RS1_RS2_O_SULOOP(16,16,8, {
int32_t mres = sext(p_rs1,32) * zext(p_rs2,32); int32_t mres = sext(p_rs1,32) * zext(p_rs2,32);
p_rd = mres >> 16; p_rd = mres >> 8;
}) })

2
riscv/insns/pmulhsu_w_h1.h

@ -1,6 +1,6 @@
require_rv64; require_rv64;
P_RD_RS1_RS2_O_SULOOP(32,32,16, { P_RD_RS1_RS2_O_SULOOP(32,32,16, {
sreg_t mres = sext(p_rs1,64) * zext(p_rs2,64); sreg_t mres = sext(p_rs1,64) * zext(p_rs2,64);
p_rd = mres >> 32; p_rd = mres >> 16;
} }
) )

Loading…
Cancel
Save