C2 does not match an instruction with swaped operands of commutative operation. For example, the next instruction will not be matched if a LoadI node is the first operand: instruct addI_rReg_mem(rRegI dst, memory src, rFlagsReg cr) %{ match(Set dst (AddI dst (LoadI src))); So instead of generating one instruction "add reg, mem" C2 will generate 2: "mov reg1, mem" "add reg, reg1"
|