Skip to content

Commit 88801ca

Browse files
zifeihanRealFYang
authored andcommittedSep 24, 2024
8340590: RISC-V: C2: Small improvement to vector gather load and scatter store
Reviewed-by: fyang, dzhang
1 parent 1dd60b6 commit 88801ca

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed
 

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

+4-8
Original file line numberDiff line numberDiff line change
@@ -4895,11 +4895,10 @@ instruct gather_loadS(vReg dst, indirect mem, vReg idx) %{
48954895
effect(TEMP_DEF dst);
48964896
format %{ "gather_loadS $dst, $mem, $idx" %}
48974897
ins_encode %{
4898-
__ vmv1r_v(as_VectorRegister($dst$$reg), as_VectorRegister($idx$$reg));
48994898
BasicType bt = Matcher::vector_element_basic_type(this);
49004899
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
49014900
__ vsetvli_helper(bt, Matcher::vector_length(this));
4902-
__ vsll_vi(as_VectorRegister($dst$$reg), as_VectorRegister($dst$$reg), (int)sew);
4901+
__ vsll_vi(as_VectorRegister($dst$$reg), as_VectorRegister($idx$$reg), (int)sew);
49034902
__ vluxei32_v(as_VectorRegister($dst$$reg), as_Register($mem$$base),
49044903
as_VectorRegister($dst$$reg));
49054904
%}
@@ -4929,11 +4928,10 @@ instruct gather_loadS_masked(vReg dst, indirect mem, vReg idx, vRegMask_V0 v0, v
49294928
effect(TEMP_DEF dst, TEMP tmp);
49304929
format %{ "gather_loadS_masked $dst, $mem, $idx, $v0\t# KILL $tmp" %}
49314930
ins_encode %{
4932-
__ vmv1r_v(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg));
49334931
BasicType bt = Matcher::vector_element_basic_type(this);
49344932
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
49354933
__ vsetvli_helper(bt, Matcher::vector_length(this));
4936-
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($tmp$$reg), (int)sew);
4934+
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg), (int)sew);
49374935
__ vxor_vv(as_VectorRegister($dst$$reg), as_VectorRegister($dst$$reg),
49384936
as_VectorRegister($dst$$reg));
49394937
__ vluxei32_v(as_VectorRegister($dst$$reg), as_Register($mem$$base),
@@ -4969,11 +4967,10 @@ instruct scatter_storeS(indirect mem, vReg src, vReg idx, vReg tmp) %{
49694967
effect(TEMP tmp);
49704968
format %{ "scatter_storeS $mem, $idx, $src\t# KILL $tmp" %}
49714969
ins_encode %{
4972-
__ vmv1r_v(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg));
49734970
BasicType bt = Matcher::vector_element_basic_type(this, $src);
49744971
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
49754972
__ vsetvli_helper(bt, Matcher::vector_length(this, $src));
4976-
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($tmp$$reg), (int)sew);
4973+
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg), (int)sew);
49774974
__ vsuxei32_v(as_VectorRegister($src$$reg), as_Register($mem$$base),
49784975
as_VectorRegister($tmp$$reg));
49794976
%}
@@ -5003,11 +5000,10 @@ instruct scatter_storeS_masked(indirect mem, vReg src, vReg idx, vRegMask_V0 v0,
50035000
effect(TEMP tmp);
50045001
format %{ "scatter_storeS_masked $mem, $idx, $src, $v0\t# KILL $tmp" %}
50055002
ins_encode %{
5006-
__ vmv1r_v(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg));
50075003
BasicType bt = Matcher::vector_element_basic_type(this, $src);
50085004
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
50095005
__ vsetvli_helper(bt, Matcher::vector_length(this, $src));
5010-
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($tmp$$reg), (int)sew);
5006+
__ vsll_vi(as_VectorRegister($tmp$$reg), as_VectorRegister($idx$$reg), (int)sew);
50115007
__ vsuxei32_v(as_VectorRegister($src$$reg), as_Register($mem$$base),
50125008
as_VectorRegister($tmp$$reg), Assembler::v0_t);
50135009
%}

0 commit comments

Comments
 (0)
Please sign in to comment.