diff options
author | Evan Cheng <evan.cheng@apple.com> | 2009-08-12 01:49:45 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2009-08-12 01:49:45 +0000 |
commit | 1e6c2a1c179a68836ad3b007f28bc94ec805a80c (patch) | |
tree | 517c9a2af233ca255aaa4d217d9fb41ddfee3033 /llvm/test/CodeGen | |
parent | 9e8b647539ca657cd737a9d4efa8adef5c4d77d4 (diff) | |
download | bcm5719-llvm-1e6c2a1c179a68836ad3b007f28bc94ec805a80c.tar.gz bcm5719-llvm-1e6c2a1c179a68836ad3b007f28bc94ec805a80c.zip |
Shrink ADDS, ADC, RSB, and SUBS.
llvm-svn: 78776
Diffstat (limited to 'llvm/test/CodeGen')
-rw-r--r-- | llvm/test/CodeGen/Thumb2/carry.ll | 12 | ||||
-rw-r--r-- | llvm/test/CodeGen/Thumb2/thumb2-adc.ll | 18 | ||||
-rw-r--r-- | llvm/test/CodeGen/Thumb2/thumb2-adc2.ll | 6 | ||||
-rw-r--r-- | llvm/test/CodeGen/Thumb2/thumb2-add4.ll | 17 | ||||
-rw-r--r-- | llvm/test/CodeGen/Thumb2/thumb2-add6.ll | 5 | ||||
-rw-r--r-- | llvm/test/CodeGen/Thumb2/thumb2-neg.ll | 4 | ||||
-rw-r--r-- | llvm/test/CodeGen/Thumb2/thumb2-sbc.ll | 8 | ||||
-rw-r--r-- | llvm/test/CodeGen/Thumb2/thumb2-sbc2.ll | 6 | ||||
-rw-r--r-- | llvm/test/CodeGen/Thumb2/thumb2-sub5.ll | 5 |
9 files changed, 61 insertions, 20 deletions
diff --git a/llvm/test/CodeGen/Thumb2/carry.ll b/llvm/test/CodeGen/Thumb2/carry.ll index 3388e225497..a55c16f2198 100644 --- a/llvm/test/CodeGen/Thumb2/carry.ll +++ b/llvm/test/CodeGen/Thumb2/carry.ll @@ -1,15 +1,21 @@ -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep "subs\\.w r" | count 2 -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep "adc\\.w r" -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep "sbc\\.w r" | count 2 +; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | FileCheck %s define i64 @f1(i64 %a, i64 %b) { entry: +; CHECK: f1: +; CHECK: subs r0, r0, r2 +; CHECK: sbcs r1, r3 %tmp = sub i64 %a, %b ret i64 %tmp } define i64 @f2(i64 %a, i64 %b) { entry: +; CHECK: f2: +; CHECK: adds r0, r0, r0 +; CHECK: adcs r1, r1 +; CHECK: subs r0, r0, r2 +; CHECK: sbcs r1, r3 %tmp1 = shl i64 %a, 1 %tmp2 = sub i64 %tmp1, %b ret i64 %tmp2 diff --git a/llvm/test/CodeGen/Thumb2/thumb2-adc.ll b/llvm/test/CodeGen/Thumb2/thumb2-adc.ll index c1565b30096..dd1cd1d41a5 100644 --- a/llvm/test/CodeGen/Thumb2/thumb2-adc.ll +++ b/llvm/test/CodeGen/Thumb2/thumb2-adc.ll @@ -1,32 +1,48 @@ -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep {adc\\W*r\[0-9\],\\W*r\[0-9\],\\W*#\[0-9\]*} | grep {#171\\|#1179666\\|#872428544\\|#1448498774\\|#66846720} | count 5 +; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | FileCheck %s ; 734439407618 = 0x000000ab00000002 define i64 @f1(i64 %a) { +; CHECK: f1: +; CHECK: adds r0, #2 %tmp = add i64 %a, 734439407618 ret i64 %tmp } ; 5066626890203138 = 0x0012001200000002 define i64 @f2(i64 %a) { +; CHECK: f2: +; CHECK: adds r0, #2 %tmp = add i64 %a, 5066626890203138 ret i64 %tmp } ; 3747052064576897026 = 0x3400340000000002 define i64 @f3(i64 %a) { +; CHECK: f3: +; CHECK: adds r0, #2 %tmp = add i64 %a, 3747052064576897026 ret i64 %tmp } ; 6221254862626095106 = 0x5656565600000002 define i64 @f4(i64 %a) { +; CHECK: f4: +; CHECK: adds r0, #2 %tmp = add i64 %a, 6221254862626095106 ret i64 %tmp } ; 287104476244869122 = 0x03fc000000000002 define i64 @f5(i64 %a) { +; CHECK: f5: +; CHECK: adds r0, #2 %tmp = add i64 %a, 287104476244869122 ret i64 %tmp } +define i64 @f6(i64 %a, i64 %b) { +; CHECK: f6: +; CHECK: adds r0, r0, r2 + %tmp = add i64 %a, %b + ret i64 %tmp +} diff --git a/llvm/test/CodeGen/Thumb2/thumb2-adc2.ll b/llvm/test/CodeGen/Thumb2/thumb2-adc2.ll deleted file mode 100644 index 1c1d609e053..00000000000 --- a/llvm/test/CodeGen/Thumb2/thumb2-adc2.ll +++ /dev/null @@ -1,6 +0,0 @@ -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep {adc\\.w\\W*r\[0-9\],\\W*r\[0-9\],\\W*r\[0-9\]*} | count 1 - -define i64 @f1(i64 %a, i64 %b) { - %tmp = add i64 %a, %b - ret i64 %tmp -} diff --git a/llvm/test/CodeGen/Thumb2/thumb2-add4.ll b/llvm/test/CodeGen/Thumb2/thumb2-add4.ll index 1cc35913637..34620bcc5dc 100644 --- a/llvm/test/CodeGen/Thumb2/thumb2-add4.ll +++ b/llvm/test/CodeGen/Thumb2/thumb2-add4.ll @@ -1,31 +1,46 @@ -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep {adds\\.w\\W*r\[0-9\],\\W*r\[0-9\],\\W*#\[0-9\]*} | grep {#171\\|#1179666\\|#872428544\\|#1448498774\\|#66846720} | count 5 +; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | FileCheck %s ; 171 = 0x000000ab define i64 @f1(i64 %a) { +; CHECK: f1: +; CHECK: adds r0, #171 +; CHECK: adc r1, r1, #0 %tmp = add i64 %a, 171 ret i64 %tmp } ; 1179666 = 0x00120012 define i64 @f2(i64 %a) { +; CHECK: f2: +; CHECK: adds.w r0, r0, #1179666 +; CHECK: adc r1, r1, #0 %tmp = add i64 %a, 1179666 ret i64 %tmp } ; 872428544 = 0x34003400 define i64 @f3(i64 %a) { +; CHECK: f3: +; CHECK: adds.w r0, r0, #872428544 +; CHECK: adc r1, r1, #0 %tmp = add i64 %a, 872428544 ret i64 %tmp } ; 1448498774 = 0x56565656 define i64 @f4(i64 %a) { +; CHECK: f4: +; CHECK: adds.w r0, r0, #1448498774 +; CHECK: adc r1, r1, #0 %tmp = add i64 %a, 1448498774 ret i64 %tmp } ; 66846720 = 0x03fc0000 define i64 @f5(i64 %a) { +; CHECK: f5: +; CHECK: adds.w r0, r0, #66846720 +; CHECK: adc r1, r1, #0 %tmp = add i64 %a, 66846720 ret i64 %tmp } diff --git a/llvm/test/CodeGen/Thumb2/thumb2-add6.ll b/llvm/test/CodeGen/Thumb2/thumb2-add6.ll index 628232f9daa..ca6df050e6d 100644 --- a/llvm/test/CodeGen/Thumb2/thumb2-add6.ll +++ b/llvm/test/CodeGen/Thumb2/thumb2-add6.ll @@ -1,6 +1,9 @@ -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep {adds\\.w\\W*r\[0-9\],\\W*r\[0-9\],\\W*r\[0-9\]} | count 1 +; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | FileCheck %s define i64 @f1(i64 %a, i64 %b) { +; CHECK: f1: +; CHECK: adds r0, r0, r2 +; CHECK: adcs r1, r3 %tmp = add i64 %a, %b ret i64 %tmp } diff --git a/llvm/test/CodeGen/Thumb2/thumb2-neg.ll b/llvm/test/CodeGen/Thumb2/thumb2-neg.ll index 894c5287397..7a26c58e8ca 100644 --- a/llvm/test/CodeGen/Thumb2/thumb2-neg.ll +++ b/llvm/test/CodeGen/Thumb2/thumb2-neg.ll @@ -1,6 +1,8 @@ -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep {rsb\\.w\\W*r\[0-9\],\\W*r\[0-9\],\\W*#0} | count 1 +; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | FileCheck %s define i32 @f1(i32 %a) { +; CHECK: f1: +; CHECK: rsbs r0, r0, #0 %tmp = sub i32 0, %a ret i32 %tmp } diff --git a/llvm/test/CodeGen/Thumb2/thumb2-sbc.ll b/llvm/test/CodeGen/Thumb2/thumb2-sbc.ll new file mode 100644 index 00000000000..78d6d33aa7e --- /dev/null +++ b/llvm/test/CodeGen/Thumb2/thumb2-sbc.ll @@ -0,0 +1,8 @@ +; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | FileCheck %s + +define i64 @f1(i64 %a, i64 %b) { +; CHECK: f1: +; CHECK: subs r0, r0, r2 + %tmp = sub i64 %a, %b + ret i64 %tmp +} diff --git a/llvm/test/CodeGen/Thumb2/thumb2-sbc2.ll b/llvm/test/CodeGen/Thumb2/thumb2-sbc2.ll deleted file mode 100644 index 2bf02f8c1bd..00000000000 --- a/llvm/test/CodeGen/Thumb2/thumb2-sbc2.ll +++ /dev/null @@ -1,6 +0,0 @@ -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep {sbc\\.w\\W*r\[0-9\],\\W*r\[0-9\],\\W*r\[0-9\]*} | count 1 - -define i64 @f1(i64 %a, i64 %b) { - %tmp = sub i64 %a, %b - ret i64 %tmp -} diff --git a/llvm/test/CodeGen/Thumb2/thumb2-sub5.ll b/llvm/test/CodeGen/Thumb2/thumb2-sub5.ll index 8fab55ad712..1110dad06b4 100644 --- a/llvm/test/CodeGen/Thumb2/thumb2-sub5.ll +++ b/llvm/test/CodeGen/Thumb2/thumb2-sub5.ll @@ -1,6 +1,9 @@ -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep {subs\\.w\\W*r\[0-9\],\\W*r\[0-9\],\\W*r\[0-9\]} | count 1 +; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | FileCheck %s define i64 @f1(i64 %a, i64 %b) { +; CHECK: f1: +; CHECK: subs r0, r0, r2 +; CHECK: sbcs r1, r3 %tmp = sub i64 %a, %b ret i64 %tmp } |