diff options
| author | Cameron McInally <cameron.mcinally@nyu.edu> | 2014-07-15 15:03:32 +0000 |
|---|---|---|
| committer | Cameron McInally <cameron.mcinally@nyu.edu> | 2014-07-15 15:03:32 +0000 |
| commit | 53bc7a3330513b5b840b860ee4d55a2bae1dc86e (patch) | |
| tree | dde8da7599eea2f45d5ad6b8840841f713f944e4 /llvm/lib | |
| parent | bd5555cc3f1c0d31c96511c6e041a8f1b2f34302 (diff) | |
| download | bcm5719-llvm-53bc7a3330513b5b840b860ee4d55a2bae1dc86e.tar.gz bcm5719-llvm-53bc7a3330513b5b840b860ee4d55a2bae1dc86e.zip | |
Add x86 patterns to match a specific add-with-carry.
llvm-svn: 213070
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrCompiler.td | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86InstrCompiler.td b/llvm/lib/Target/X86/X86InstrCompiler.td index ca4f608a6b8..bbfa59f55f0 100644 --- a/llvm/lib/Target/X86/X86InstrCompiler.td +++ b/llvm/lib/Target/X86/X86InstrCompiler.td @@ -324,10 +324,16 @@ def : Pat<(sub GR64:$op, (and (i64 (X86setcc_c X86_COND_B, EFLAGS)), 1)), (SBB64ri8 GR64:$op, 0)>; // (sub OP, SETCC_CARRY) -> (adc OP, 0) +def : Pat<(sub (add GR8:$op1, GR8:$op2), (i8 (X86setcc_c X86_COND_B, EFLAGS))), + (ADC8ri GR8:$op1, GR8:$op2)>; def : Pat<(sub GR8:$op, (i8 (X86setcc_c X86_COND_B, EFLAGS))), (ADC8ri GR8:$op, 0)>; +def : Pat<(sub (add GR32:$op1, GR32:$op2), (i32 (X86setcc_c X86_COND_B, EFLAGS))), + (ADC32ri8 GR32:$op1, GR32:$op2)>; def : Pat<(sub GR32:$op, (i32 (X86setcc_c X86_COND_B, EFLAGS))), (ADC32ri8 GR32:$op, 0)>; +def : Pat<(sub (add GR64:$op1, GR64:$op2), (i64 (X86setcc_c X86_COND_B, EFLAGS))), + (ADC64ri8 GR64:$op1, GR64:$op2)>; def : Pat<(sub GR64:$op, (i64 (X86setcc_c X86_COND_B, EFLAGS))), (ADC64ri8 GR64:$op, 0)>; |

