--- old/src/hotspot/cpu/x86/x86.ad 2020-06-02 21:04:29.720316278 +0000 +++ new/src/hotspot/cpu/x86/x86.ad 2020-06-02 21:04:29.608314933 +0000 @@ -8294,7 +8294,7 @@ match(Set dst (LShiftVB src shift)); match(Set dst (RShiftVB src shift)); match(Set dst (URShiftVB src shift)); - effect(TEMP dst, TEMP tmp, TEMP scratch); + effect(TEMP dst, USE src, USE shift, TEMP tmp, TEMP scratch); format %{"vextendbw $tmp,$src\n\t" "vshiftw $tmp,$shift\n\t" "movdqu $dst,[0x00ff00ff0x00ff00ff]\n\t" @@ -8317,7 +8317,7 @@ match(Set dst (LShiftVB src shift)); match(Set dst (RShiftVB src shift)); match(Set dst (URShiftVB src shift)); - effect(TEMP dst, TEMP tmp, TEMP scratch); + effect(TEMP dst, USE src, USE shift, TEMP tmp, TEMP scratch); format %{"vextendbw $tmp,$src\n\t" "vshiftw $tmp,$shift\n\t" "movdqu $dst,[0x00ff00ff0x00ff00ff]\n\t" @@ -8340,7 +8340,7 @@ match(Set dst (LShiftVB src shift)); match(Set dst (RShiftVB src shift)); match(Set dst (URShiftVB src shift)); - effect(TEMP dst, TEMP tmp1, TEMP tmp2, TEMP scratch); + effect(TEMP dst, USE src, USE shift, TEMP tmp1, TEMP tmp2, TEMP scratch); format %{"vextendbw $tmp1,$src\n\t" "vshiftw $tmp1,$shift\n\t" "pshufd $tmp2,$src\n\t" @@ -8371,7 +8371,7 @@ match(Set dst (LShiftVB src shift)); match(Set dst (RShiftVB src shift)); match(Set dst (URShiftVB src shift)); - effect(TEMP dst, TEMP tmp, TEMP scratch); + effect(TEMP dst, USE src, USE shift, TEMP tmp, TEMP scratch); format %{"vextendbw $tmp,$src\n\t" "vshiftw $tmp,$tmp,$shift\n\t" "vpand $tmp,$tmp,[0x00ff00ff0x00ff00ff]\n\t" @@ -8395,7 +8395,7 @@ match(Set dst (LShiftVB src shift)); match(Set dst (RShiftVB src shift)); match(Set dst (URShiftVB src shift)); - effect(TEMP dst, TEMP tmp, TEMP scratch); + effect(TEMP dst, USE src, USE shift, TEMP tmp, TEMP scratch); format %{"vextracti128_high $tmp,$src\n\t" "vextendbw $tmp,$tmp\n\t" "vextendbw $dst,$src\n\t" @@ -8427,7 +8427,7 @@ match(Set dst (LShiftVB src shift)); match(Set dst (RShiftVB src shift)); match(Set dst (URShiftVB src shift)); - effect(TEMP dst, TEMP tmp1, TEMP tmp2, TEMP scratch); + effect(TEMP dst, USE src, USE shift, TEMP tmp1, TEMP tmp2, TEMP scratch); format %{"vextracti64x4 $tmp1,$src\n\t" "vextendbw $tmp1,$tmp1\n\t" "vextendbw $tmp2,$src\n\t" @@ -8470,6 +8470,7 @@ match(Set dst (LShiftVS src shift)); match(Set dst (RShiftVS src shift)); match(Set dst (URShiftVS src shift)); + effect(TEMP dst, USE src, USE shift); format %{ "vshiftw $dst,$src,$shift\t! shift packed2S" %} ins_encode %{ int opcode = this->as_Mach()->ideal_Opcode(); @@ -8490,6 +8491,7 @@ match(Set dst (LShiftVS src shift)); match(Set dst (RShiftVS src shift)); match(Set dst (URShiftVS src shift)); + effect(TEMP dst, USE src, USE shift); format %{ "vshiftw $dst,$src,$shift\t! shift packed4S" %} ins_encode %{ int opcode = this->as_Mach()->ideal_Opcode(); @@ -8511,6 +8513,7 @@ match(Set dst (LShiftVS src shift)); match(Set dst (RShiftVS src shift)); match(Set dst (URShiftVS src shift)); + effect(TEMP dst, USE src, USE shift); format %{ "vshiftw $dst,$src,$shift\t! shift packed8S" %} ins_encode %{ int opcode = this->as_Mach()->ideal_Opcode(); @@ -8531,6 +8534,7 @@ match(Set dst (LShiftVS src shift)); match(Set dst (RShiftVS src shift)); match(Set dst (URShiftVS src shift)); + effect(DEF dst, USE src, USE shift); format %{ "vshiftw $dst,$src,$shift\t! shift packed16S" %} ins_encode %{ int vector_len = 1; @@ -8545,6 +8549,7 @@ match(Set dst (LShiftVS src shift)); match(Set dst (RShiftVS src shift)); match(Set dst (URShiftVS src shift)); + effect(DEF dst, USE src, USE shift); format %{ "vshiftw $dst,$src,$shift\t! shift packed32S" %} ins_encode %{ int vector_len = 2; @@ -8560,6 +8565,7 @@ match(Set dst (LShiftVI src shift)); match(Set dst (RShiftVI src shift)); match(Set dst (URShiftVI src shift)); + effect(TEMP dst, USE src, USE shift); format %{ "vshiftd $dst,$src,$shift\t! shift packed2I" %} ins_encode %{ int opcode = this->as_Mach()->ideal_Opcode(); @@ -8580,6 +8586,7 @@ match(Set dst (LShiftVI src shift)); match(Set dst (RShiftVI src shift)); match(Set dst (URShiftVI src shift)); + effect(TEMP dst, USE src, USE shift); format %{ "vshiftd $dst,$src,$shift\t! shift packed4I" %} ins_encode %{ int opcode = this->as_Mach()->ideal_Opcode(); @@ -8600,6 +8607,7 @@ match(Set dst (LShiftVI src shift)); match(Set dst (RShiftVI src shift)); match(Set dst (URShiftVI src shift)); + effect(DEF dst, USE src, USE shift); format %{ "vshiftd $dst,$src,$shift\t! shift packed8I" %} ins_encode %{ int vector_len = 1; @@ -8614,6 +8622,7 @@ match(Set dst (LShiftVI src shift)); match(Set dst (RShiftVI src shift)); match(Set dst (URShiftVI src shift)); + effect(DEF dst, USE src, USE shift); format %{ "vshiftd $dst,$src,$shift\t! shift packed16I" %} ins_encode %{ int vector_len = 2; @@ -8628,6 +8637,7 @@ predicate(n->as_Vector()->length() == 2); match(Set dst (LShiftVL src shift)); match(Set dst (URShiftVL src shift)); + effect(TEMP dst, USE src, USE shift); format %{ "vshiftq $dst,$src,$shift\t! shift packed2L" %} ins_encode %{ int opcode = this->as_Mach()->ideal_Opcode(); @@ -8647,6 +8657,7 @@ predicate(UseAVX > 1 && n->as_Vector()->length() == 4); match(Set dst (LShiftVL src shift)); match(Set dst (URShiftVL src shift)); + effect(DEF dst, USE src, USE shift); format %{ "vshiftq $dst,$src,$shift\t! left shift packed4L" %} ins_encode %{ int vector_len = 1; @@ -8661,6 +8672,7 @@ match(Set dst (LShiftVL src shift)); match(Set dst (RShiftVL src shift)); match(Set dst (URShiftVL src shift)); + effect(DEF dst, USE src, USE shift); format %{ "vshiftq $dst,$src,$shift\t! shift packed8L" %} ins_encode %{ int vector_len = 2;