Pseudo CMOV instructions don't clobber EFLAGS.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 2 Sep 2011 23:52:55 +0000 (23:52 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 2 Sep 2011 23:52:55 +0000 (23:52 +0000)
commit5047d7657503dfa8f7d97909c9d5c198646cd0ed
treeaade617964af2fabe3809e8ba4bcc4c6c64cada8
parentb8e052e123a1950adc180b89d8aba0df7765964f
Pseudo CMOV instructions don't clobber EFLAGS.

The explanation about a 0 argument being materialized as xor is no
longer valid.  Rematerialization will check if EFLAGS is live before
clobbering it.

The code produced by X86TargetLowering::EmitLoweredSelect does not
clobber EFLAGS.

This causes one less testb instruction to be generated in the cmov.ll
test case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139057 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86InstrCompiler.td
test/CodeGen/X86/cmov.ll
test/CodeGen/X86/or-address.ll