Skip to content

Commit 0884e87

Browse files
DingliZhangRealFYang
authored andcommittedApr 13, 2023
8296447: RISC-V: Make the operands order of vrsub_vx/vrsub_vi consistent with RVV 1.0 spec
Reviewed-by: fyang, fjiang Backport-of: 1169dc066c0257da1a237960b8c0cc4782ef8d14
1 parent b5dedfe commit 0884e87

File tree

2 files changed

+9
-19
lines changed

2 files changed

+9
-19
lines changed
 

‎src/hotspot/cpu/riscv/assembler_riscv.hpp

+5-15
Original file line numberDiff line numberDiff line change
@@ -1269,8 +1269,6 @@ enum VectorMask {
12691269
INSN(vnmsac_vx, 0b1010111, 0b110, 0b101111);
12701270
INSN(vmacc_vx, 0b1010111, 0b110, 0b101101);
12711271

1272-
INSN(vrsub_vx, 0b1010111, 0b100, 0b000011);
1273-
12741272
#undef INSN
12751273

12761274
#define INSN(NAME, op, funct3, funct6) \
@@ -1428,8 +1426,9 @@ enum VectorMask {
14281426
INSN(vand_vx, 0b1010111, 0b100, 0b001001);
14291427

14301428
// Vector Single-Width Integer Add and Subtract
1431-
INSN(vsub_vx, 0b1010111, 0b100, 0b000010);
1432-
INSN(vadd_vx, 0b1010111, 0b100, 0b000000);
1429+
INSN(vsub_vx, 0b1010111, 0b100, 0b000010);
1430+
INSN(vadd_vx, 0b1010111, 0b100, 0b000000);
1431+
INSN(vrsub_vx, 0b1010111, 0b100, 0b000011);
14331432

14341433
#undef INSN
14351434

@@ -1470,7 +1469,7 @@ enum VectorMask {
14701469
#define INSN(NAME, op, funct3, funct6) \
14711470
void NAME(VectorRegister Vd, VectorRegister Vs2, int32_t imm, VectorMask vm = unmasked) { \
14721471
guarantee(is_imm_in_range(imm, 5, 0), "imm is invalid"); \
1473-
patch_VArith(op, Vd, funct3, (uint32_t)imm & 0x1f, Vs2, vm, funct6); \
1472+
patch_VArith(op, Vd, funct3, (uint32_t)(imm & 0x1f), Vs2, vm, funct6); \
14741473
}
14751474

14761475
INSN(vmsgt_vi, 0b1010111, 0b011, 0b011111);
@@ -1483,16 +1482,7 @@ enum VectorMask {
14831482
INSN(vor_vi, 0b1010111, 0b011, 0b001010);
14841483
INSN(vand_vi, 0b1010111, 0b011, 0b001001);
14851484
INSN(vadd_vi, 0b1010111, 0b011, 0b000000);
1486-
1487-
#undef INSN
1488-
1489-
#define INSN(NAME, op, funct3, funct6) \
1490-
void NAME(VectorRegister Vd, int32_t imm, VectorRegister Vs2, VectorMask vm = unmasked) { \
1491-
guarantee(is_imm_in_range(imm, 5, 0), "imm is invalid"); \
1492-
patch_VArith(op, Vd, funct3, (uint32_t)(imm & 0x1f), Vs2, vm, funct6); \
1493-
}
1494-
1495-
INSN(vrsub_vi, 0b1010111, 0b011, 0b000011);
1485+
INSN(vrsub_vi, 0b1010111, 0b011, 0b000011);
14961486

14971487
#undef INSN
14981488

‎src/hotspot/cpu/riscv/riscv_v.ad

+4-4
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ instruct vabsB(vReg dst, vReg src, vReg tmp) %{
146146
"vmax.vv $dst, $tmp, $src" %}
147147
ins_encode %{
148148
__ vsetvli(t0, x0, Assembler::e8);
149-
__ vrsub_vi(as_VectorRegister($tmp$$reg), 0, as_VectorRegister($src$$reg));
149+
__ vrsub_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($src$$reg), 0);
150150
__ vmax_vv(as_VectorRegister($dst$$reg), as_VectorRegister($tmp$$reg), as_VectorRegister($src$$reg));
151151
%}
152152
ins_pipe(pipe_slow);
@@ -160,7 +160,7 @@ instruct vabsS(vReg dst, vReg src, vReg tmp) %{
160160
"vmax.vv $dst, $tmp, $src" %}
161161
ins_encode %{
162162
__ vsetvli(t0, x0, Assembler::e16);
163-
__ vrsub_vi(as_VectorRegister($tmp$$reg), 0, as_VectorRegister($src$$reg));
163+
__ vrsub_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($src$$reg), 0);
164164
__ vmax_vv(as_VectorRegister($dst$$reg), as_VectorRegister($tmp$$reg), as_VectorRegister($src$$reg));
165165
%}
166166
ins_pipe(pipe_slow);
@@ -174,7 +174,7 @@ instruct vabsI(vReg dst, vReg src, vReg tmp) %{
174174
"vmax.vv $dst, $tmp, $src" %}
175175
ins_encode %{
176176
__ vsetvli(t0, x0, Assembler::e32);
177-
__ vrsub_vi(as_VectorRegister($tmp$$reg), 0, as_VectorRegister($src$$reg));
177+
__ vrsub_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($src$$reg), 0);
178178
__ vmax_vv(as_VectorRegister($dst$$reg), as_VectorRegister($tmp$$reg), as_VectorRegister($src$$reg));
179179
%}
180180
ins_pipe(pipe_slow);
@@ -188,7 +188,7 @@ instruct vabsL(vReg dst, vReg src, vReg tmp) %{
188188
"vmax.vv $dst, $tmp, $src" %}
189189
ins_encode %{
190190
__ vsetvli(t0, x0, Assembler::e64);
191-
__ vrsub_vi(as_VectorRegister($tmp$$reg), 0, as_VectorRegister($src$$reg));
191+
__ vrsub_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($src$$reg), 0);
192192
__ vmax_vv(as_VectorRegister($dst$$reg), as_VectorRegister($tmp$$reg), as_VectorRegister($src$$reg));
193193
%}
194194
ins_pipe(pipe_slow);

0 commit comments

Comments
 (0)
Please sign in to comment.