Thumb add / sub with carry.
authorEvan Cheng <evan.cheng@apple.com>
Sat, 27 Jan 2007 00:07:15 +0000 (00:07 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Sat, 27 Jan 2007 00:07:15 +0000 (00:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33562 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrThumb.td

index 01aefb54cc8513ba2175765f920933a69cf745c2..52b8939e24ccc6991807842ff60a4f5dfa335d15 100644 (file)
@@ -266,6 +266,16 @@ def tPUSH : TI<(ops reglist:$src1, variable_ops),
 //  Arithmetic Instructions.
 //
 
+// Add with carry
+def tADC : TIt<(ops GPR:$dst, GPR:$lhs, GPR:$rhs),
+               "adc $dst, $rhs",
+               [(set GPR:$dst, (adde GPR:$lhs, GPR:$rhs))]>;
+
+def tADDS : TI<(ops GPR:$dst, GPR:$lhs, GPR:$rhs),
+               "adds $dst, $lhs, $rhs",
+               [(set GPR:$dst, (addc GPR:$lhs, GPR:$rhs))]>;
+
+
 def tADDi3 : TI<(ops GPR:$dst, GPR:$lhs, i32imm:$rhs),
                 "add $dst, $lhs, $rhs",
                 [(set GPR:$dst, (add GPR:$lhs, imm0_7:$rhs))]>;
@@ -288,7 +298,6 @@ def tADDrSPi : TI<(ops GPR:$dst, GPR:$sp, i32imm:$rhs),
 def tADDspi : TIt<(ops GPR:$dst, GPR:$lhs, i32imm:$rhs),
                   "add $dst, $rhs * 4", []>;
 
-
 def tAND : TIt<(ops GPR:$dst, GPR:$lhs, GPR:$rhs),
                 "and $dst, $rhs",
                 [(set GPR:$dst, (and GPR:$lhs, GPR:$rhs))]>;
@@ -395,10 +404,17 @@ def tROR : TIt<(ops GPR:$dst, GPR:$lhs, GPR:$rhs),
                 "ror $dst, $rhs",
                 [(set GPR:$dst, (rotr GPR:$lhs, GPR:$rhs))]>;
 
+
+// Subtract with carry
 def tSBC : TIt<(ops GPR:$dst, GPR:$lhs, GPR:$rhs),
                 "sbc $dst, $rhs",
                 [(set GPR:$dst, (sube GPR:$lhs, GPR:$rhs))]>;
 
+def tSUBS : TI<(ops GPR:$dst, GPR:$lhs, GPR:$rhs),
+                "subs $dst, $lhs, $rhs",
+               [(set GPR:$dst, (subc GPR:$lhs, GPR:$rhs))]>;
+
+
 // TODO: A7-96: STMIA - store multiple.
 
 def tSUBi3 : TI<(ops GPR:$dst, GPR:$lhs, i32imm:$rhs),