1; RUN: llc -mtriple=thumb-eabi %s -o - | FileCheck %s
2; RUN: llc -mtriple=thumb-apple-darwin %s -o - | FileCheck %s -check-prefix CHECK-DARWIN
3
4define i64 @f1() {
5entry:
6        ret i64 0
7}
8
9define i64 @f2() {
10entry:
11        ret i64 1
12}
13
14define i64 @f3() {
15entry:
16        ret i64 2147483647
17}
18
19define i64 @f4() {
20entry:
21        ret i64 2147483648
22}
23
24define i64 @f5() {
25entry:
26        ret i64 9223372036854775807
27}
28
29define i64 @f6(i64 %x, i64 %y) {
30entry:
31        %tmp1 = add i64 %y, 1           ; <i64> [#uses=1]
32        ret i64 %tmp1
33}
34
35define void @f7() {
36entry:
37        %tmp = call i64 @f8( )          ; <i64> [#uses=0]
38        ret void
39}
40
41declare i64 @f8()
42
43define i64 @f9(i64 %a, i64 %b) {
44entry:
45        %tmp = sub i64 %a, %b           ; <i64> [#uses=1]
46        ret i64 %tmp
47}
48
49define i64 @f(i32 %a, i32 %b) {
50entry:
51        %tmp = sext i32 %a to i64               ; <i64> [#uses=1]
52        %tmp1 = sext i32 %b to i64              ; <i64> [#uses=1]
53        %tmp2 = mul i64 %tmp1, %tmp             ; <i64> [#uses=1]
54        ret i64 %tmp2
55}
56
57define i64 @g(i32 %a, i32 %b) {
58entry:
59        %tmp = zext i32 %a to i64               ; <i64> [#uses=1]
60        %tmp1 = zext i32 %b to i64              ; <i64> [#uses=1]
61        %tmp2 = mul i64 %tmp1, %tmp             ; <i64> [#uses=1]
62        ret i64 %tmp2
63}
64
65define i64 @f10() {
66entry:
67        %a = alloca i64, align 8                ; <i64*> [#uses=1]
68        %retval = load i64* %a          ; <i64> [#uses=1]
69        ret i64 %retval
70}
71
72; CHECK: mvn
73; CHECK-NOT: mvn
74
75; CHECK: adc
76; CHECK-NOT: adc
77
78; CHECK: sbc
79; CHECK-NOT: sbc
80
81; CHECK-DARWIN: __muldi3
82
83