Skip to content

Commit 3efdcde

Browse files
zifeihanRealFYang
authored andcommitted
8340590: RISC-V: C2: Small improvement to vector gather load and scatter store
Backport-of: 88801caef6ccdc5ba9ade2af830f3b3cd96e1467
1 parent 21fec60 commit 3efdcde

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

src/hotspot/cpu/riscv/riscv_v.ad

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3601,11 +3601,10 @@ instruct gather_loadS(vReg dst, indirect mem, vReg idx) %{
36013601
effect(TEMP_DEF dst);
36023602
format %{ "gather_loadS $dst, $mem, $idx" %}
36033603
ins_encode %{
3604-
__ vmv1r_v(as_VectorRegister($dst$$reg), as_VectorRegister($idx$$reg));
36053604
BasicType bt = Matcher::vector_element_basic_type(this);
36063605
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
36073606
__ vsetvli_helper(bt, Matcher::vector_length(this));
3608-
__ vsll_vi(as_VectorRegister($dst$$reg), as_VectorRegister($dst$$reg), (int)sew);
3607+
__ vsll_vi(as_VectorRegister($dst$$reg), as_VectorRegister($idx$$reg), (int)sew);
36093608
__ vluxei32_v(as_VectorRegister($dst$$reg), as_Register($mem$$base),
36103609
as_VectorRegister($dst$$reg));
36113610
%}
@@ -3635,11 +3634,10 @@ instruct gather_loadS_masked(vReg dst, indirect mem, vReg idx, vRegMask_V0 v0, v
36353634
effect(TEMP_DEF dst, TEMP tmp);
36363635
format %{ "gather_loadS_masked $dst, $mem, $idx, $v0\t# KILL $tmp" %}
36373636
ins_encode %{
3638-
__ vmv1r_v(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg));
36393637
BasicType bt = Matcher::vector_element_basic_type(this);
36403638
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
36413639
__ vsetvli_helper(bt, Matcher::vector_length(this));
3642-
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($tmp$$reg), (int)sew);
3640+
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg), (int)sew);
36433641
__ vxor_vv(as_VectorRegister($dst$$reg), as_VectorRegister($dst$$reg),
36443642
as_VectorRegister($dst$$reg));
36453643
__ vluxei32_v(as_VectorRegister($dst$$reg), as_Register($mem$$base),
@@ -3675,11 +3673,10 @@ instruct scatter_storeS(indirect mem, vReg src, vReg idx, vReg tmp) %{
36753673
effect(TEMP tmp);
36763674
format %{ "scatter_storeS $mem, $idx, $src\t# KILL $tmp" %}
36773675
ins_encode %{
3678-
__ vmv1r_v(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg));
36793676
BasicType bt = Matcher::vector_element_basic_type(this, $src);
36803677
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
36813678
__ vsetvli_helper(bt, Matcher::vector_length(this, $src));
3682-
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($tmp$$reg), (int)sew);
3679+
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg), (int)sew);
36833680
__ vsuxei32_v(as_VectorRegister($src$$reg), as_Register($mem$$base),
36843681
as_VectorRegister($tmp$$reg));
36853682
%}
@@ -3709,11 +3706,10 @@ instruct scatter_storeS_masked(indirect mem, vReg src, vReg idx, vRegMask_V0 v0,
37093706
effect(TEMP tmp);
37103707
format %{ "scatter_storeS_masked $mem, $idx, $src, $v0\t# KILL $tmp" %}
37113708
ins_encode %{
3712-
__ vmv1r_v(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg));
37133709
BasicType bt = Matcher::vector_element_basic_type(this, $src);
37143710
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
37153711
__ vsetvli_helper(bt, Matcher::vector_length(this, $src));
3716-
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($tmp$$reg), (int)sew);
3712+
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg), (int)sew);
37173713
__ vsuxei32_v(as_VectorRegister($src$$reg), as_Register($mem$$base),
37183714
as_VectorRegister($tmp$$reg), Assembler::v0_t);
37193715
%}

0 commit comments

Comments
 (0)