DescriptionEmit memory operands for cmp and test on ia32 and x64 when it makes sense.
The InstructionSelector now associates an effect level to every node in a block.
The effect level of a node is the number of non-eliminatable nodes encountered from the beginning of the block to the node itself.
With this change, on ia32 and x64, a load from memory into a register can be replaced by a memory operand if all of the following conditions hold:
1. The only use of the load is in a 32 or 64 bit word comparison.
2. The user node and the load node belong to the same block.
3. The values of the operands have the same size (i.e., no need to zero-extend or sign-extend the result of the load).
BUG=
Committed: https://crrev.com/0e43ff5632d38cfb8b0ea0bc6955d6f252cb9ad8
Cr-Commit-Position: refs/heads/master@{#34187}
Patch Set 1 #
Total comments: 10
Patch Set 2 : Update. #
Total comments: 5
Patch Set 3 : x64 update only #
Total comments: 1
Patch Set 4 : Add support for opcode 0x39 in the ia32 disassembler. #
Total comments: 4
Patch Set 5 : Update #Patch Set 6 : Update #Patch Set 7 : Update. #
Total comments: 2
Patch Set 8 : Update. #
Messages
Total messages: 23 (8 generated)
|