Jim Grosbach | 0ad7efba | 2009-11-17 00:20:26 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -march=thumb -mattr=+thumb2 | FileCheck %s |
Evan Cheng | d0611f9 | 2009-07-07 20:39:03 +0000 | [diff] [blame] | 2 | |
| 3 | define i32 @t1(i32 %a, i32 %b, i32 %c) nounwind { |
Jim Grosbach | 0ad7efba | 2009-11-17 00:20:26 +0000 | [diff] [blame] | 4 | ; CHECK: t1 |
Evan Cheng | 7f8ab6e | 2010-11-17 20:13:28 +0000 | [diff] [blame] | 5 | ; CHECK: mvn r0, #-2147483648 |
| 6 | ; CHECK: add r0, r1 |
Jim Grosbach | 0ad7efba | 2009-11-17 00:20:26 +0000 | [diff] [blame] | 7 | ; CHECK: cmp r2, #10 |
Jim Grosbach | 0ad7efba | 2009-11-17 00:20:26 +0000 | [diff] [blame] | 8 | ; CHECK: it gt |
| 9 | ; CHECK: movgt r0, r1 |
Evan Cheng | d0611f9 | 2009-07-07 20:39:03 +0000 | [diff] [blame] | 10 | %tmp1 = icmp sgt i32 %c, 10 |
| 11 | %tmp2 = select i1 %tmp1, i32 0, i32 2147483647 |
| 12 | %tmp3 = add i32 %tmp2, %b |
| 13 | ret i32 %tmp3 |
| 14 | } |
| 15 | |
| 16 | define i32 @t2(i32 %a, i32 %b, i32 %c) nounwind { |
Jim Grosbach | 0ad7efba | 2009-11-17 00:20:26 +0000 | [diff] [blame] | 17 | ; CHECK: t2 |
| 18 | ; CHECK: add.w r0, r1, #-2147483648 |
| 19 | ; CHECK: cmp r2, #10 |
| 20 | ; CHECK: it gt |
| 21 | ; CHECK: movgt r0, r1 |
| 22 | |
Evan Cheng | d0611f9 | 2009-07-07 20:39:03 +0000 | [diff] [blame] | 23 | %tmp1 = icmp sgt i32 %c, 10 |
| 24 | %tmp2 = select i1 %tmp1, i32 0, i32 2147483648 |
| 25 | %tmp3 = add i32 %tmp2, %b |
| 26 | ret i32 %tmp3 |
| 27 | } |
| 28 | |
| 29 | define i32 @t3(i32 %a, i32 %b, i32 %c, i32 %d) nounwind { |
Jim Grosbach | 0ad7efba | 2009-11-17 00:20:26 +0000 | [diff] [blame] | 30 | ; CHECK: t3 |
| 31 | ; CHECK: sub.w r0, r1, #10 |
| 32 | ; CHECK: cmp r2, #10 |
| 33 | ; CHECK: it gt |
| 34 | ; CHECK: movgt r0, r1 |
Evan Cheng | d0611f9 | 2009-07-07 20:39:03 +0000 | [diff] [blame] | 35 | %tmp1 = icmp sgt i32 %c, 10 |
| 36 | %tmp2 = select i1 %tmp1, i32 0, i32 10 |
| 37 | %tmp3 = sub i32 %b, %tmp2 |
| 38 | ret i32 %tmp3 |
| 39 | } |