Change the X86 backend to stop using the evil ADDC/ADDE/SUBC/SUBE nodes (which
authorChris Lattner <sabre@nondot.org>
Mon, 20 Dec 2010 00:59:46 +0000 (00:59 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 20 Dec 2010 00:59:46 +0000 (00:59 +0000)
commit5b85654844d673939bd1ceba66cd1f5022fd7c0d
tree1436b025ce82e1fde48ed2c28e110db539d5b4f3
parent4d8455ea4d2950ca3e818c7e9ba14150286c039b
Change the X86 backend to stop using the evil ADDC/ADDE/SUBC/SUBE nodes (which
their carry depenedencies with MVT::Flag operands) and use clean and beautiful
EFLAGS dependences instead.

We do this by changing the modelling of SBB/ADC to have EFLAGS input and outputs
(which is what requires the previous scheduler change) and change X86 ISelLowering
to custom lower ADDC and friends down to X86ISD::ADD/ADC/SUB/SBB nodes.

With the previous series of changes, this causes no changes in the testsuite, woo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122213 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86ISelLowering.h
lib/Target/X86/X86InstrArithmetic.td
lib/Target/X86/X86InstrInfo.td