mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-02 00:36:36 +00:00
Add a note about EFLAGS optimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66508 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
412a446974
commit
ad93e1e5fc
@ -1819,6 +1819,21 @@ LBB1_1: ## bb1
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
Test instructions can be eliminated by using EFLAGS values from arithmetic
|
||||
instructions. This is currently not done for and, or, xor, neg, shl, sra,
|
||||
srl, shld, shrd, atomic ops, and others. It is also currently not done for
|
||||
read-modify-write instructions.
|
||||
|
||||
The shift operators have the complication that when the shift count is
|
||||
zero, EFLAGS is not set, so they can only subsume a test instruction if
|
||||
the shift count is known to be non-zero.
|
||||
|
||||
In read-modify-write instructions, the root node in the isel match is
|
||||
the store, and isel has no way for the use of the EFLAGS result of the
|
||||
arithmetic to be remapped to the new node.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
test/CodeGen/X86/2009-03-07-FPConstSelect.ll compiles to:
|
||||
|
||||
_f:
|
||||
|
Loading…
Reference in New Issue
Block a user