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. 2
      riscv/insns/pmhacc_h_b0.h
  2. 2
      riscv/insns/pmhacc_h_b1.h
  3. 2
      riscv/insns/pmhacc_w_h0.h
  4. 2
      riscv/insns/pmhacc_w_h1.h
  5. 2
      riscv/insns/pmhaccsu_h_b0.h
  6. 2
      riscv/insns/pmhaccsu_h_b1.h
  7. 2
      riscv/insns/pmhaccsu_w_h0.h
  8. 2
      riscv/insns/pmhaccsu_w_h1.h
  9. 2
      riscv/insns/pmulh_h_b0.h
  10. 2
      riscv/insns/pmulh_h_b1.h
  11. 2
      riscv/insns/pmulh_w_h0.h
  12. 2
      riscv/insns/pmulh_w_h1.h
  13. 2
      riscv/insns/pmulhsu_h_b0.h
  14. 2
      riscv/insns/pmulhsu_h_b1.h
  15. 2
      riscv/insns/pmulhsu_w_h1.h

2
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;
p_rd += mres>>8;
})

2
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;
p_rd += mres>>8;
})

2
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;
}
)

2
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;
}
)

2
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;
p_rd += mres>>8;
})

2
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;
p_rd += mres>>8;
})

2
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;
}
)

2
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;
}
)

2
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;
p_rd = mres >> 8;
})

2
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;
p_rd = mres >> 8;
})

2
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;
}
)

2
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;
}
)

2
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;
p_rd = mres >> 8;
})

2
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;
p_rd = mres >> 8;
})

2
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;
}
)

Loading…
Cancel
Save