blob: 16ef7cc2cb6c799a9872d9f04b146e8dbeb847d8 [file] [log] [blame]
Bob Wilsone811eeb2009-10-27 06:16:45 +00001; RUN: llc < %s -march=arm | FileCheck %s
Dan Gohmanf17a25c2007-07-18 16:29:46 +00002
Tanya Lattner246a1372008-02-17 20:02:20 +00003define i64 @f1() {
Bob Wilsone811eeb2009-10-27 06:16:45 +00004; CHECK: f1:
Dan Gohmanf17a25c2007-07-18 16:29:46 +00005entry:
Tanya Lattner246a1372008-02-17 20:02:20 +00006 ret i64 0
Dan Gohmanf17a25c2007-07-18 16:29:46 +00007}
8
Tanya Lattner246a1372008-02-17 20:02:20 +00009define i64 @f2() {
Bob Wilsone811eeb2009-10-27 06:16:45 +000010; CHECK: f2:
Dan Gohmanf17a25c2007-07-18 16:29:46 +000011entry:
Tanya Lattner246a1372008-02-17 20:02:20 +000012 ret i64 1
Dan Gohmanf17a25c2007-07-18 16:29:46 +000013}
14
Tanya Lattner246a1372008-02-17 20:02:20 +000015define i64 @f3() {
Bob Wilsone811eeb2009-10-27 06:16:45 +000016; CHECK: f3:
17; CHECK: mvn{{.*}}-2147483648
Dan Gohmanf17a25c2007-07-18 16:29:46 +000018entry:
Tanya Lattner246a1372008-02-17 20:02:20 +000019 ret i64 2147483647
Dan Gohmanf17a25c2007-07-18 16:29:46 +000020}
21
Tanya Lattner246a1372008-02-17 20:02:20 +000022define i64 @f4() {
Bob Wilsone811eeb2009-10-27 06:16:45 +000023; CHECK: f4:
24; CHECK: -2147483648
Dan Gohmanf17a25c2007-07-18 16:29:46 +000025entry:
Tanya Lattner246a1372008-02-17 20:02:20 +000026 ret i64 2147483648
Dan Gohmanf17a25c2007-07-18 16:29:46 +000027}
28
Tanya Lattner246a1372008-02-17 20:02:20 +000029define i64 @f5() {
Bob Wilsone811eeb2009-10-27 06:16:45 +000030; CHECK: f5:
31; CHECK: mvn
32; CHECK: mvn{{.*}}-2147483648
Dan Gohmanf17a25c2007-07-18 16:29:46 +000033entry:
Tanya Lattner246a1372008-02-17 20:02:20 +000034 ret i64 9223372036854775807
Dan Gohmanf17a25c2007-07-18 16:29:46 +000035}
36
Tanya Lattner246a1372008-02-17 20:02:20 +000037define i64 @f6(i64 %x, i64 %y) {
Bob Wilsone811eeb2009-10-27 06:16:45 +000038; CHECK: f6:
39; CHECK: adds
40; CHECK: adc
Dan Gohmanf17a25c2007-07-18 16:29:46 +000041entry:
Tanya Lattner246a1372008-02-17 20:02:20 +000042 %tmp1 = add i64 %y, 1 ; <i64> [#uses=1]
43 ret i64 %tmp1
Dan Gohmanf17a25c2007-07-18 16:29:46 +000044}
45
Tanya Lattner246a1372008-02-17 20:02:20 +000046define void @f7() {
Bob Wilsone811eeb2009-10-27 06:16:45 +000047; CHECK: f7:
Dan Gohmanf17a25c2007-07-18 16:29:46 +000048entry:
Tanya Lattner246a1372008-02-17 20:02:20 +000049 %tmp = call i64 @f8( ) ; <i64> [#uses=0]
50 ret void
Dan Gohmanf17a25c2007-07-18 16:29:46 +000051}
52
Tanya Lattner246a1372008-02-17 20:02:20 +000053declare i64 @f8()
54
55define i64 @f9(i64 %a, i64 %b) {
Bob Wilsone811eeb2009-10-27 06:16:45 +000056; CHECK: f9:
57; CHECK: subs r
58; CHECK: sbc
Dan Gohmanf17a25c2007-07-18 16:29:46 +000059entry:
Tanya Lattner246a1372008-02-17 20:02:20 +000060 %tmp = sub i64 %a, %b ; <i64> [#uses=1]
61 ret i64 %tmp
Dan Gohmanf17a25c2007-07-18 16:29:46 +000062}
63
Tanya Lattner246a1372008-02-17 20:02:20 +000064define i64 @f(i32 %a, i32 %b) {
Bob Wilsone811eeb2009-10-27 06:16:45 +000065; CHECK: f:
66; CHECK: smull
Dan Gohmanf17a25c2007-07-18 16:29:46 +000067entry:
Tanya Lattner246a1372008-02-17 20:02:20 +000068 %tmp = sext i32 %a to i64 ; <i64> [#uses=1]
69 %tmp1 = sext i32 %b to i64 ; <i64> [#uses=1]
70 %tmp2 = mul i64 %tmp1, %tmp ; <i64> [#uses=1]
71 ret i64 %tmp2
Dan Gohmanf17a25c2007-07-18 16:29:46 +000072}
73
Tanya Lattner246a1372008-02-17 20:02:20 +000074define i64 @g(i32 %a, i32 %b) {
Bob Wilsone811eeb2009-10-27 06:16:45 +000075; CHECK: g:
76; CHECK: umull
Dan Gohmanf17a25c2007-07-18 16:29:46 +000077entry:
Tanya Lattner246a1372008-02-17 20:02:20 +000078 %tmp = zext i32 %a to i64 ; <i64> [#uses=1]
79 %tmp1 = zext i32 %b to i64 ; <i64> [#uses=1]
80 %tmp2 = mul i64 %tmp1, %tmp ; <i64> [#uses=1]
81 ret i64 %tmp2
Dan Gohmanf17a25c2007-07-18 16:29:46 +000082}
Tanya Lattner246a1372008-02-17 20:02:20 +000083
84define i64 @f10() {
Bob Wilsone811eeb2009-10-27 06:16:45 +000085; CHECK: f10:
Tanya Lattner246a1372008-02-17 20:02:20 +000086entry:
87 %a = alloca i64, align 8 ; <i64*> [#uses=1]
88 %retval = load i64* %a ; <i64> [#uses=1]
89 ret i64 %retval
90}