diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2009-08-04 01:41:15 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2009-08-04 01:41:15 +0000 |
| commit | 03eb0e3c3357f09c4b710d43bac04e8f02870341 (patch) | |
| tree | fbf72e267f5f81ecc68fd68f713e362127a1fdfb /llvm/test | |
| parent | 10ff786e1eb8d114a1740db498ec1864a8cc4b2c (diff) | |
| download | bcm5719-llvm-03eb0e3c3357f09c4b710d43bac04e8f02870341.tar.gz bcm5719-llvm-03eb0e3c3357f09c4b710d43bac04e8f02870341.zip | |
Emit sub r, #c instead of transforming it to add r, #-c if c fits in 8-bit. This is a bit of pre-mature optimization. 8-bit variant makes it likely it will be narrowed to a 16-bit instruction.
llvm-svn: 78030
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/Thumb2/thumb2-sub.ll | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/Thumb2/thumb2-sub.ll b/llvm/test/CodeGen/Thumb2/thumb2-sub.ll index a7c9676b978..74accdcb8ea 100644 --- a/llvm/test/CodeGen/Thumb2/thumb2-sub.ll +++ b/llvm/test/CodeGen/Thumb2/thumb2-sub.ll @@ -1,31 +1,49 @@ -; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | grep {sub\\.w\\W*r\[0-9\],\\W*r\[0-9\],\\W*#\[0-9\]*} | grep {#171\\|#1179666\\|#872428544\\|#1448498774\\|#510} | count 5 +; RUN: llvm-as < %s | llc -march=thumb -mattr=+thumb2 | FileCheck %s ; 171 = 0x000000ab define i32 @f1(i32 %a) { +; CHECK: f1: +; CHECK: sub.w r0, r0, #171 %tmp = sub i32 %a, 171 ret i32 %tmp } ; 1179666 = 0x00120012 define i32 @f2(i32 %a) { +; CHECK: f2: +; CHECK: sub.w r0, r0, #1179666 %tmp = sub i32 %a, 1179666 ret i32 %tmp } ; 872428544 = 0x34003400 define i32 @f3(i32 %a) { +; CHECK: f3: +; CHECK: sub.w r0, r0, #872428544 %tmp = sub i32 %a, 872428544 ret i32 %tmp } ; 1448498774 = 0x56565656 define i32 @f4(i32 %a) { +; CHECK: f4: +; CHECK: sub.w r0, r0, #1448498774 %tmp = sub i32 %a, 1448498774 ret i32 %tmp } ; 510 = 0x000001fe define i32 @f5(i32 %a) { +; CHECK: f5: +; CHECK: sub.w r0, r0, #510 %tmp = sub i32 %a, 510 ret i32 %tmp } + +; Don't change this to an add. +define i32 @f6(i32 %a) { +; CHECK: f6: +; CHECK: sub.w r0, r0, #1 + %tmp = sub i32 %a, 1 + ret i32 %tmp +} |

