mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
Add a note about EFLAGS optimization.
llvm-svn: 66508
This commit is contained in:
parent
54b17d998a
commit
995c3dd344
@ -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…
x
Reference in New Issue
Block a user