Skip to content

Commit d82a6dc

Browse files
committed
8255438: [Vector API] More instructs in x86.ad should use legacy mode for code-gen
Reviewed-by: kvn, vlivanov, azeemj
1 parent 1a5e6c9 commit d82a6dc

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

src/hotspot/cpu/x86/x86.ad

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4446,9 +4446,8 @@ instruct reductionI(rRegI dst, rRegI src1, legVec src2, legVec vtmp1, legVec vtm
44464446
// =======================Long Reduction==========================================
44474447

44484448
#ifdef _LP64
4449-
instruct reductionL(rRegL dst, rRegL src1, vec src2, vec vtmp1, vec vtmp2) %{
4450-
predicate(vector_element_basic_type(n->in(2)) == T_LONG &&
4451-
vector_length(n->in(2)) < 8); // src2
4449+
instruct reductionL(rRegL dst, rRegL src1, legVec src2, legVec vtmp1, legVec vtmp2) %{
4450+
predicate(vector_element_basic_type(n->in(2)) == T_LONG && !VM_Version::supports_avx512dq());
44524451
match(Set dst (AddReductionVL src1 src2));
44534452
match(Set dst (MulReductionVL src1 src2));
44544453
match(Set dst (AndReductionV src1 src2));
@@ -4466,9 +4465,8 @@ instruct reductionL(rRegL dst, rRegL src1, vec src2, vec vtmp1, vec vtmp2) %{
44664465
ins_pipe( pipe_slow );
44674466
%}
44684467

4469-
instruct reduction8L(rRegL dst, rRegL src1, legVec src2, legVec vtmp1, legVec vtmp2) %{
4470-
predicate(vector_element_basic_type(n->in(2)) == T_LONG &&
4471-
vector_length(n->in(2)) == 8); // src2
4468+
instruct reductionL_avx512dq(rRegL dst, rRegL src1, vec src2, vec vtmp1, vec vtmp2) %{
4469+
predicate(vector_element_basic_type(n->in(2)) == T_LONG && VM_Version::supports_avx512dq());
44724470
match(Set dst (AddReductionVL src1 src2));
44734471
match(Set dst (MulReductionVL src1 src2));
44744472
match(Set dst (AndReductionV src1 src2));
@@ -4578,9 +4576,8 @@ instruct reduction8D(regD dst, legVec src, legVec vtmp1, legVec vtmp2) %{
45784576
// =======================Byte Reduction==========================================
45794577

45804578
#ifdef _LP64
4581-
instruct reductionB(rRegI dst, rRegI src1, vec src2, vec vtmp1, vec vtmp2) %{
4582-
predicate(vector_element_basic_type(n->in(2)) == T_BYTE &&
4583-
vector_length(n->in(2)) <= 32); // src2
4579+
instruct reductionB(rRegI dst, rRegI src1, legVec src2, legVec vtmp1, legVec vtmp2) %{
4580+
predicate(vector_element_basic_type(n->in(2)) == T_BYTE && !VM_Version::supports_avx512bw());
45844581
match(Set dst (AddReductionVI src1 src2));
45854582
match(Set dst (AndReductionV src1 src2));
45864583
match(Set dst ( OrReductionV src1 src2));
@@ -4597,9 +4594,8 @@ instruct reductionB(rRegI dst, rRegI src1, vec src2, vec vtmp1, vec vtmp2) %{
45974594
ins_pipe( pipe_slow );
45984595
%}
45994596

4600-
instruct reduction64B(rRegI dst, rRegI src1, legVec src2, legVec vtmp1, legVec vtmp2) %{
4601-
predicate(vector_element_basic_type(n->in(2)) == T_BYTE &&
4602-
vector_length(n->in(2)) == 64); // src2
4597+
instruct reductionB_avx512bw(rRegI dst, rRegI src1, vec src2, vec vtmp1, vec vtmp2) %{
4598+
predicate(vector_element_basic_type(n->in(2)) == T_BYTE && VM_Version::supports_avx512bw());
46034599
match(Set dst (AddReductionVI src1 src2));
46044600
match(Set dst (AndReductionV src1 src2));
46054601
match(Set dst ( OrReductionV src1 src2));
@@ -5450,7 +5446,7 @@ instruct vmulL_mem(vec dst, vec src, memory mem) %{
54505446
ins_pipe( pipe_slow );
54515447
%}
54525448

5453-
instruct mul2L_reg(vec dst, vec src2, vec tmp) %{
5449+
instruct mul2L_reg(vec dst, vec src2, legVec tmp) %{
54545450
predicate(vector_length(n) == 2 && !VM_Version::supports_avx512dq());
54555451
match(Set dst (MulVL dst src2));
54565452
effect(TEMP dst, TEMP tmp);
@@ -5476,7 +5472,7 @@ instruct mul2L_reg(vec dst, vec src2, vec tmp) %{
54765472
ins_pipe( pipe_slow );
54775473
%}
54785474

5479-
instruct vmul4L_reg_avx(vec dst, vec src1, vec src2, vec tmp, vec tmp1) %{
5475+
instruct vmul4L_reg_avx(vec dst, vec src1, vec src2, legVec tmp, legVec tmp1) %{
54805476
predicate(vector_length(n) == 4 && !VM_Version::supports_avx512dq());
54815477
match(Set dst (MulVL src1 src2));
54825478
effect(TEMP tmp1, TEMP tmp);

0 commit comments

Comments
 (0)