blob: 7ea9be2c61e69653e76767676ff330077f521487 [file] [log] [blame]
Renato Goline07a22a2014-09-02 22:45:13 +00001; RUN: llc -mtriple=armv6t2-eabi %s -o - | FileCheck %s
Evan Chengc7ea8df2009-06-25 20:59:23 +00002
3define i64 @f1(i64 %a, i64 %b) {
Stephen Lind24ab202013-07-14 06:24:09 +00004; CHECK-LABEL: f1:
Bob Wilson04580c82009-10-27 05:50:28 +00005; CHECK: subs r
6; CHECK: sbc r
Evan Chengc7ea8df2009-06-25 20:59:23 +00007entry:
8 %tmp = sub i64 %a, %b
9 ret i64 %tmp
10}
11
12define i64 @f2(i64 %a, i64 %b) {
Stephen Lind24ab202013-07-14 06:24:09 +000013; CHECK-LABEL: f2:
Bob Wilson04580c82009-10-27 05:50:28 +000014; CHECK: adc r
15; CHECK: subs r
16; CHECK: sbc r
Evan Chengc7ea8df2009-06-25 20:59:23 +000017entry:
18 %tmp1 = shl i64 %a, 1
19 %tmp2 = sub i64 %tmp1, %b
20 ret i64 %tmp2
21}
Andrew Trick0ed57782011-04-23 03:55:32 +000022
23; add with live carry
24define i64 @f3(i32 %al, i32 %bl) {
Stephen Lind24ab202013-07-14 06:24:09 +000025; CHECK-LABEL: f3:
Andrew Trick0ed57782011-04-23 03:55:32 +000026; CHECK: adds r
Andrew Trick0ed57782011-04-23 03:55:32 +000027; CHECK: adc r
28entry:
29 ; unsigned wide add
30 %aw = zext i32 %al to i64
31 %bw = zext i32 %bl to i64
32 %cw = add i64 %aw, %bw
33 ; ch == carry bit
34 %ch = lshr i64 %cw, 32
35 %dw = add i64 %ch, %bw
36 ret i64 %dw
37}
Evan Cheng0b758ed2011-09-06 18:52:20 +000038
39; rdar://10073745
40define i64 @f4(i64 %x) nounwind readnone {
41entry:
Stephen Lind24ab202013-07-14 06:24:09 +000042; CHECK-LABEL: f4:
Evan Cheng0b758ed2011-09-06 18:52:20 +000043; CHECK: rsbs r
44; CHECK: rsc r
45 %0 = sub nsw i64 0, %x
46 ret i64 %0
47}
Evan Cheng59ed7d42012-10-24 19:53:01 +000048
49; rdar://12559385
50define i64 @f5(i32 %vi) {
51entry:
Stephen Lind24ab202013-07-14 06:24:09 +000052; CHECK-LABEL: f5:
Evan Cheng59ed7d42012-10-24 19:53:01 +000053; CHECK: movw [[REG:r[0-9]+]], #36102
54; CHECK: sbc r{{[0-9]+}}, r{{[0-9]+}}, [[REG]]
55 %v0 = zext i32 %vi to i64
56 %v1 = xor i64 %v0, -155057456198619
57 %v4 = add i64 %v1, 155057456198619
58 %v5 = add i64 %v4, %v1
59 ret i64 %v5
60}