aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/X86/X86ISelLowering.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-12-20 00:59:46 +0000
committerChris Lattner <sabre@nondot.org>2010-12-20 00:59:46 +0000
commit5b85654844d673939bd1ceba66cd1f5022fd7c0d (patch)
tree1436b025ce82e1fde48ed2c28e110db539d5b4f3 /lib/Target/X86/X86ISelLowering.h
parent4d8455ea4d2950ca3e818c7e9ba14150286c039b (diff)
downloadexternal_llvm-5b85654844d673939bd1ceba66cd1f5022fd7c0d.zip
external_llvm-5b85654844d673939bd1ceba66cd1f5022fd7c0d.tar.gz
external_llvm-5b85654844d673939bd1ceba66cd1f5022fd7c0d.tar.bz2
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
Diffstat (limited to 'lib/Target/X86/X86ISelLowering.h')
-rw-r--r--lib/Target/X86/X86ISelLowering.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/Target/X86/X86ISelLowering.h b/lib/Target/X86/X86ISelLowering.h
index 7566f98..3b59ffa 100644
--- a/lib/Target/X86/X86ISelLowering.h
+++ b/lib/Target/X86/X86ISelLowering.h
@@ -86,8 +86,8 @@ namespace llvm {
/// X86 bit-test instructions.
BT,
- /// X86 SetCC. Operand 0 is condition code, and operand 1 is the flag
- /// operand produced by a CMP instruction.
+ /// X86 SetCC. Operand 0 is condition code, and operand 1 is the EFLAGS
+ /// operand, usually produced by a CMP instruction.
SETCC,
// Same as SETCC except it's materialized with a sbb and the value is all
@@ -207,7 +207,7 @@ namespace llvm {
PCMPGTB, PCMPGTW, PCMPGTD, PCMPGTQ,
// ADD, SUB, SMUL, etc. - Arithmetic operations with FLAGS results.
- ADD, SUB, SMUL,
+ ADD, SUB, ADC, SBB, SMUL,
INC, DEC, OR, XOR, AND,
UMUL, // LOW, HI, FLAGS = umul LHS, RHS