Skip to content

Commit 1899ad0

Browse files
zifeihanRealFYang
authored andcommitted
8315931: RISC-V: xxxMaxVectorTestsSmokeTest fails when using RVV
Backport-of: 4070829ae589678578a93b2886e02e04cf0a1b01
1 parent b8f0f91 commit 1899ad0

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

src/hotspot/cpu/riscv/riscv_v.ad

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2954,11 +2954,9 @@ instruct vmask_gen_I(vRegMask dst, iRegI src) %{
29542954
format %{ "vmask_gen_I $dst, $src" %}
29552955
ins_encode %{
29562956
BasicType bt = Matcher::vector_element_basic_type(this);
2957-
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
29582957
__ vsetvli_helper(bt, Matcher::vector_length(this));
2959-
__ vmclr_m(as_VectorRegister($dst$$reg));
2960-
__ vsetvli(t0, $src$$Register, sew);
2961-
__ vmset_m(as_VectorRegister($dst$$reg));
2958+
__ vid_v(as_VectorRegister($dst$$reg));
2959+
__ vmsltu_vx(as_VectorRegister($dst$$reg), as_VectorRegister($dst$$reg), $src$$Register);
29622960
%}
29632961
ins_pipe(pipe_slow);
29642962
%}
@@ -2968,26 +2966,30 @@ instruct vmask_gen_L(vRegMask dst, iRegL src) %{
29682966
format %{ "vmask_gen_L $dst, $src" %}
29692967
ins_encode %{
29702968
BasicType bt = Matcher::vector_element_basic_type(this);
2971-
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
29722969
__ vsetvli_helper(bt, Matcher::vector_length(this));
2973-
__ vmclr_m(as_VectorRegister($dst$$reg));
2974-
__ vsetvli(t0, $src$$Register, sew);
2975-
__ vmset_m(as_VectorRegister($dst$$reg));
2970+
__ vid_v(as_VectorRegister($dst$$reg));
2971+
__ vmsltu_vx(as_VectorRegister($dst$$reg), as_VectorRegister($dst$$reg), $src$$Register);
29762972
%}
29772973
ins_pipe(pipe_slow);
29782974
%}
29792975

29802976
instruct vmask_gen_imm(vRegMask dst, immL con) %{
2977+
predicate(n->in(1)->get_long() <= 16 ||
2978+
n->in(1)->get_long() == Matcher::vector_length(n));
29812979
match(Set dst (VectorMaskGen con));
29822980
format %{ "vmask_gen_imm $dst, $con" %}
29832981
ins_encode %{
29842982
BasicType bt = Matcher::vector_element_basic_type(this);
2985-
if ($con$$constant != Matcher::vector_length(this)) {
2986-
__ vsetvli_helper(bt, Matcher::vector_length(this));
2983+
__ vsetvli_helper(bt, Matcher::vector_length(this));
2984+
if ((uint)($con$$constant) == 0) {
29872985
__ vmclr_m(as_VectorRegister($dst$$reg));
2986+
} else if ((uint)($con$$constant) == Matcher::vector_length(this)) {
2987+
__ vmset_m(as_VectorRegister($dst$$reg));
2988+
} else {
2989+
assert((uint)($con$$constant) < Matcher::vector_length(this), "unsupported input lane_cnt");
2990+
__ vid_v(as_VectorRegister($dst$$reg));
2991+
__ vmsleu_vi(as_VectorRegister($dst$$reg), as_VectorRegister($dst$$reg), (uint)($con$$constant) - 1);
29882992
}
2989-
__ vsetvli_helper(bt, (uint)($con$$constant));
2990-
__ vmset_m(as_VectorRegister($dst$$reg));
29912993
%}
29922994
ins_pipe(pipe_slow);
29932995
%}
@@ -3551,18 +3553,16 @@ instruct extractD(fRegD dst, vReg src, immI idx, vReg tmp)
35513553

35523554
// ------------------------------ Compress/Expand Operations -------------------
35533555

3554-
instruct mcompress(vRegMask dst, vRegMask src, iRegLNoSp tmp) %{
3556+
instruct mcompress(vRegMask dst, vRegMask src, vReg tmp) %{
35553557
match(Set dst (CompressM src));
3556-
effect(TEMP_DEF dst, TEMP tmp);
3558+
effect(TEMP tmp);
35573559
format %{ "mcompress $dst, $src\t# KILL $tmp" %}
35583560
ins_encode %{
35593561
BasicType bt = Matcher::vector_element_basic_type(this);
3560-
Assembler::SEW sew = Assembler::elemtype_to_sew(bt);
35613562
__ vsetvli_helper(bt, Matcher::vector_length(this));
3562-
__ vmclr_m(as_VectorRegister($dst$$reg));
3563-
__ vcpop_m($tmp$$Register, as_VectorRegister($src$$reg));
3564-
__ vsetvli(t0, $tmp$$Register, sew);
3565-
__ vmset_m(as_VectorRegister($dst$$reg));
3563+
__ vid_v(as_VectorRegister($tmp$$reg));
3564+
__ vcpop_m(t0, as_VectorRegister($src$$reg));
3565+
__ vmsltu_vx(as_VectorRegister($dst$$reg), as_VectorRegister($tmp$$reg), t0);
35663566
%}
35673567
ins_pipe(pipe_slow);
35683568
%}

0 commit comments

Comments
 (0)