src/cpu/x86/vm/x86_64.ad
Print this page
*** 9307,9316 ****
--- 9307,9327 ----
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,9536 ****
--- 9538,9558 ----
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);