diff --git a/src/hotspot/cpu/x86/x86.ad b/src/hotspot/cpu/x86/x86.ad index 304315b8279..318345b1ffb 100644 --- a/src/hotspot/cpu/x86/x86.ad +++ b/src/hotspot/cpu/x86/x86.ad @@ -4640,29 +4640,9 @@ instruct reduction64B(rRegI dst, rRegI src1, legVec src2, legVec vtmp1, legVec v // =======================Short Reduction========================================== -instruct reductionS(rRegI dst, rRegI src1, vec src2, vec vtmp1, vec vtmp2) %{ +instruct reductionS(rRegI dst, rRegI src1, legVec src2, legVec vtmp1, legVec vtmp2) %{ predicate(vector_element_basic_type(n->in(2)) == T_SHORT && - vector_length(n->in(2)) <= 16); // src2 - match(Set dst (AddReductionVI src1 src2)); - match(Set dst (MulReductionVI src1 src2)); - match(Set dst (AndReductionV src1 src2)); - match(Set dst ( OrReductionV src1 src2)); - match(Set dst (XorReductionV src1 src2)); - match(Set dst (MinReductionV src1 src2)); - match(Set dst (MaxReductionV src1 src2)); - effect(TEMP vtmp1, TEMP vtmp2); - format %{ "vector_reduction_short $dst,$src1,$src2 ; using $vtmp1, $vtmp2 as TEMP" %} - ins_encode %{ - int opcode = this->ideal_Opcode(); - int vlen = vector_length(this, $src2); - __ reduceS(opcode, vlen, $dst$$Register, $src1$$Register, $src2$$XMMRegister, $vtmp1$$XMMRegister, $vtmp2$$XMMRegister); - %} - ins_pipe( pipe_slow ); -%} - -instruct reduction32S(rRegI dst, rRegI src1, legVec src2, legVec vtmp1, legVec vtmp2) %{ - predicate(vector_element_basic_type(n->in(2)) == T_SHORT && - vector_length(n->in(2)) == 32); // src2 + vector_length(n->in(2)) <= 32); // src2 match(Set dst (AddReductionVI src1 src2)); match(Set dst (MulReductionVI src1 src2)); match(Set dst (AndReductionV src1 src2));