@@ -4446,9 +4446,8 @@ instruct reductionI(rRegI dst, rRegI src1, legVec src2, legVec vtmp1, legVec vtm
4446
4446
// =======================Long Reduction==========================================
4447
4447
4448
4448
#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());
4452
4451
match(Set dst (AddReductionVL src1 src2));
4453
4452
match(Set dst (MulReductionVL src1 src2));
4454
4453
match(Set dst (AndReductionV src1 src2));
@@ -4466,9 +4465,8 @@ instruct reductionL(rRegL dst, rRegL src1, vec src2, vec vtmp1, vec vtmp2) %{
4466
4465
ins_pipe( pipe_slow );
4467
4466
%}
4468
4467
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());
4472
4470
match(Set dst (AddReductionVL src1 src2));
4473
4471
match(Set dst (MulReductionVL src1 src2));
4474
4472
match(Set dst (AndReductionV src1 src2));
@@ -4578,9 +4576,8 @@ instruct reduction8D(regD dst, legVec src, legVec vtmp1, legVec vtmp2) %{
4578
4576
// =======================Byte Reduction==========================================
4579
4577
4580
4578
#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());
4584
4581
match(Set dst (AddReductionVI src1 src2));
4585
4582
match(Set dst (AndReductionV src1 src2));
4586
4583
match(Set dst ( OrReductionV src1 src2));
@@ -4597,9 +4594,8 @@ instruct reductionB(rRegI dst, rRegI src1, vec src2, vec vtmp1, vec vtmp2) %{
4597
4594
ins_pipe( pipe_slow );
4598
4595
%}
4599
4596
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());
4603
4599
match(Set dst (AddReductionVI src1 src2));
4604
4600
match(Set dst (AndReductionV src1 src2));
4605
4601
match(Set dst ( OrReductionV src1 src2));
@@ -5450,7 +5446,7 @@ instruct vmulL_mem(vec dst, vec src, memory mem) %{
5450
5446
ins_pipe( pipe_slow );
5451
5447
%}
5452
5448
5453
- instruct mul2L_reg(vec dst, vec src2, vec tmp) %{
5449
+ instruct mul2L_reg(vec dst, vec src2, legVec tmp) %{
5454
5450
predicate(vector_length(n) == 2 && !VM_Version::supports_avx512dq());
5455
5451
match(Set dst (MulVL dst src2));
5456
5452
effect(TEMP dst, TEMP tmp);
@@ -5476,7 +5472,7 @@ instruct mul2L_reg(vec dst, vec src2, vec tmp) %{
5476
5472
ins_pipe( pipe_slow );
5477
5473
%}
5478
5474
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) %{
5480
5476
predicate(vector_length(n) == 4 && !VM_Version::supports_avx512dq());
5481
5477
match(Set dst (MulVL src1 src2));
5482
5478
effect(TEMP tmp1, TEMP tmp);
0 commit comments