--- old/src/hotspot/cpu/x86/x86_64.ad 2018-11-07 17:55:35.455959960 +0100 +++ new/src/hotspot/cpu/x86/x86_64.ad 2018-11-07 17:55:35.322960050 +0100 @@ -9263,6 +9263,18 @@ %} // And Memory with Register +instruct andB_mem_rReg(memory dst, rRegI src, rFlagsReg cr) +%{ + match(Set dst (StoreB dst (AndI (LoadB dst) src))); + effect(KILL cr); + + ins_cost(150); + format %{ "andb $dst, $src\t# byte" %} + opcode(0x20); + ins_encode(REX_breg_mem(src, dst), OpcP, reg_mem(src, dst)); + ins_pipe(ialu_mem_reg); +%} + instruct andI_mem_rReg(memory dst, rRegI src, rFlagsReg cr) %{ match(Set dst (StoreI dst (AndI (LoadI dst) src))); @@ -9444,6 +9456,18 @@ %} // Or Memory with Register +instruct orB_mem_rReg(memory dst, rRegI src, rFlagsReg cr) +%{ + match(Set dst (StoreB dst (OrI (LoadB dst) src))); + effect(KILL cr); + + ins_cost(150); + format %{ "orb $dst, $src\t# byte" %} + opcode(0x08); + ins_encode(REX_breg_mem(src, dst), OpcP, reg_mem(src, dst)); + ins_pipe(ialu_mem_reg); +%} + instruct orI_mem_rReg(memory dst, rRegI src, rFlagsReg cr) %{ match(Set dst (StoreI dst (OrI (LoadI dst) src))); @@ -9520,6 +9544,18 @@ %} // Xor Memory with Register +instruct xorB_mem_rReg(memory dst, rRegI src, rFlagsReg cr) +%{ + match(Set dst (StoreB dst (XorI (LoadB dst) src))); + effect(KILL cr); + + ins_cost(150); + format %{ "xorb $dst, $src\t# byte" %} + opcode(0x30); + ins_encode(REX_breg_mem(src, dst), OpcP, reg_mem(src, dst)); + ins_pipe(ialu_mem_reg); +%} + instruct xorI_mem_rReg(memory dst, rRegI src, rFlagsReg cr) %{ match(Set dst (StoreI dst (XorI (LoadI dst) src)));