Saleem Abdulrasool | 905b6d19 | 2014-04-03 23:47:24 +0000 | [diff] [blame] | 1 | ; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s |
Evan Cheng | c7ea8df | 2009-06-25 20:59:23 +0000 | [diff] [blame] | 2 | |
| 3 | define i64 @f1(i64 %a, i64 %b) { |
| 4 | entry: |
Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 5 | ; CHECK-LABEL: f1: |
Evan Cheng | 1e6c2a1 | 2009-08-12 01:49:45 +0000 | [diff] [blame] | 6 | ; CHECK: subs r0, r0, r2 |
| 7 | ; CHECK: sbcs r1, r3 |
Evan Cheng | c7ea8df | 2009-06-25 20:59:23 +0000 | [diff] [blame] | 8 | %tmp = sub i64 %a, %b |
| 9 | ret i64 %tmp |
| 10 | } |
| 11 | |
| 12 | define i64 @f2(i64 %a, i64 %b) { |
| 13 | entry: |
Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 14 | ; CHECK-LABEL: f2: |
David Majnemer | bff6b58 | 2016-01-28 18:59:04 +0000 | [diff] [blame] | 15 | ; CHECK: lsls r1, r1, #1 |
| 16 | ; CHECK: orr.w r1, r1, r0, lsr #31 |
| 17 | ; CHECK: rsbs r0, r2, r0, lsl #1 |
| 18 | ; CHECK: sbcs r1, r3 |
Evan Cheng | c7ea8df | 2009-06-25 20:59:23 +0000 | [diff] [blame] | 19 | %tmp1 = shl i64 %a, 1 |
| 20 | %tmp2 = sub i64 %tmp1, %b |
| 21 | ret i64 %tmp2 |
| 22 | } |
Evan Cheng | 59ed7d4 | 2012-10-24 19:53:01 +0000 | [diff] [blame] | 23 | |
| 24 | ; rdar://12559385 |
| 25 | define i64 @f3(i32 %vi) { |
| 26 | entry: |
Stephen Lin | d24ab20 | 2013-07-14 06:24:09 +0000 | [diff] [blame] | 27 | ; CHECK-LABEL: f3: |
Evan Cheng | 59ed7d4 | 2012-10-24 19:53:01 +0000 | [diff] [blame] | 28 | ; CHECK: movw [[REG:r[0-9]+]], #36102 |
| 29 | ; CHECK: sbcs r{{[0-9]+}}, [[REG]] |
| 30 | %v0 = zext i32 %vi to i64 |
| 31 | %v1 = xor i64 %v0, -155057456198619 |
| 32 | %v4 = add i64 %v1, 155057456198619 |
| 33 | %v5 = add i64 %v4, %v1 |
| 34 | ret i64 %v5 |
| 35 | } |