src/cpu/x86/vm/x86_64.ad

Print this page

        

@@ -9307,10 +9307,21 @@
   opcode(0x33);
   ins_encode(REX_reg_reg(dst, src), OpcP, reg_reg(dst, src));
   ins_pipe(ialu_reg_reg);
 %}
 
+// Xor Register with Immediate -1
+instruct xorI_rReg_im1(rRegI dst, immI_M1 imm) %{
+  match(Set dst (XorI dst imm));  
+
+  format %{ "not    $dst" %}  
+  ins_encode %{
+     __ notl($dst$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
 // Xor Register with Immediate
 instruct xorI_rReg_imm(rRegI dst, immI src, rFlagsReg cr)
 %{
   match(Set dst (XorI dst src));
   effect(KILL cr);

@@ -9527,10 +9538,21 @@
   opcode(0x33);
   ins_encode(REX_reg_reg_wide(dst, src), OpcP, reg_reg(dst, src));
   ins_pipe(ialu_reg_reg);
 %}
 
+// Xor Register with Immediate -1
+instruct xorL_rReg_im1(rRegL dst, immL_M1 imm) %{
+  match(Set dst (XorL dst imm));  
+
+  format %{ "notq   $dst" %}  
+  ins_encode %{
+     __ notq($dst$$Register);
+  %}
+  ins_pipe(ialu_reg);
+%}
+
 // Xor Register with Immediate
 instruct xorL_rReg_imm(rRegL dst, immL32 src, rFlagsReg cr)
 %{
   match(Set dst (XorL dst src));
   effect(KILL cr);