blob: 74f8d783377d6b86746c14f0df6788755a365d4c [file] [log] [blame]
Bob Wilsonb9350312009-10-27 06:16:45 +00001; RUN: llc < %s -march=arm | FileCheck %s
Rafael Espindola3a02f022006-09-04 19:05:01 +00002
Tanya Lattner6263f942008-02-17 20:02:20 +00003define i64 @f1() {
Bob Wilsonb9350312009-10-27 06:16:45 +00004; CHECK: f1:
Rafael Espindola3a02f022006-09-04 19:05:01 +00005entry:
Tanya Lattner6263f942008-02-17 20:02:20 +00006 ret i64 0
Rafael Espindola3a02f022006-09-04 19:05:01 +00007}
8
Tanya Lattner6263f942008-02-17 20:02:20 +00009define i64 @f2() {
Bob Wilsonb9350312009-10-27 06:16:45 +000010; CHECK: f2:
Rafael Espindola3a02f022006-09-04 19:05:01 +000011entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000012 ret i64 1
Rafael Espindola3a02f022006-09-04 19:05:01 +000013}
14
Tanya Lattner6263f942008-02-17 20:02:20 +000015define i64 @f3() {
Bob Wilsonb9350312009-10-27 06:16:45 +000016; CHECK: f3:
Jim Grosbachc0911c32010-09-17 20:27:26 +000017; CHECK: mvn r0, #2, 2
Rafael Espindola3a02f022006-09-04 19:05:01 +000018entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000019 ret i64 2147483647
Rafael Espindola3a02f022006-09-04 19:05:01 +000020}
21
Tanya Lattner6263f942008-02-17 20:02:20 +000022define i64 @f4() {
Bob Wilsonb9350312009-10-27 06:16:45 +000023; CHECK: f4:
Jim Grosbachc0911c32010-09-17 20:27:26 +000024; CHECK: mov r0, #2, 2
Rafael Espindola3a02f022006-09-04 19:05:01 +000025entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000026 ret i64 2147483648
Rafael Espindola3a02f022006-09-04 19:05:01 +000027}
28
Tanya Lattner6263f942008-02-17 20:02:20 +000029define i64 @f5() {
Bob Wilsonb9350312009-10-27 06:16:45 +000030; CHECK: f5:
Jim Grosbachc0911c32010-09-17 20:27:26 +000031; CHECK: mvn r0, #0
32; CHECK: mvn r1, #2, 2
Rafael Espindola3a02f022006-09-04 19:05:01 +000033entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000034 ret i64 9223372036854775807
Rafael Espindola3a02f022006-09-04 19:05:01 +000035}
Rafael Espindola2d8680a2006-10-09 17:30:15 +000036
Tanya Lattner6263f942008-02-17 20:02:20 +000037define i64 @f6(i64 %x, i64 %y) {
Bob Wilsonb9350312009-10-27 06:16:45 +000038; CHECK: f6:
39; CHECK: adds
40; CHECK: adc
Rafael Espindola2d8680a2006-10-09 17:30:15 +000041entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000042 %tmp1 = add i64 %y, 1 ; <i64> [#uses=1]
43 ret i64 %tmp1
Rafael Espindola2d8680a2006-10-09 17:30:15 +000044}
Rafael Espindola26a76d12006-10-13 16:47:22 +000045
Tanya Lattner6263f942008-02-17 20:02:20 +000046define void @f7() {
Bob Wilsonb9350312009-10-27 06:16:45 +000047; CHECK: f7:
Rafael Espindola26a76d12006-10-13 16:47:22 +000048entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000049 %tmp = call i64 @f8( ) ; <i64> [#uses=0]
50 ret void
Rafael Espindola53955382006-10-13 17:19:20 +000051}
Rafael Espindolabec2e382006-10-16 16:33:29 +000052
Tanya Lattner6263f942008-02-17 20:02:20 +000053declare i64 @f8()
54
55define i64 @f9(i64 %a, i64 %b) {
Bob Wilsonb9350312009-10-27 06:16:45 +000056; CHECK: f9:
57; CHECK: subs r
58; CHECK: sbc
Rafael Espindolabec2e382006-10-16 16:33:29 +000059entry:
Tanya Lattner6263f942008-02-17 20:02:20 +000060 %tmp = sub i64 %a, %b ; <i64> [#uses=1]
61 ret i64 %tmp
Rafael Espindolabec2e382006-10-16 16:33:29 +000062}
63
Tanya Lattner6263f942008-02-17 20:02:20 +000064define i64 @f(i32 %a, i32 %b) {
Bob Wilsonb9350312009-10-27 06:16:45 +000065; CHECK: f:
66; CHECK: smull
Rafael Espindolabec2e382006-10-16 16:33:29 +000067entry:
Tanya Lattner6263f942008-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
Rafael Espindolabec2e382006-10-16 16:33:29 +000072}
Rafael Espindola0d479ec2006-10-17 14:34:02 +000073
Tanya Lattner6263f942008-02-17 20:02:20 +000074define i64 @g(i32 %a, i32 %b) {
Bob Wilsonb9350312009-10-27 06:16:45 +000075; CHECK: g:
76; CHECK: umull
Rafael Espindola0d479ec2006-10-17 14:34:02 +000077entry:
Tanya Lattner6263f942008-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
Rafael Espindola0d479ec2006-10-17 14:34:02 +000082}
Tanya Lattner6263f942008-02-17 20:02:20 +000083
84define i64 @f10() {
Bob Wilsonb9350312009-10-27 06:16:45 +000085; CHECK: f10:
Tanya Lattner6263f942008-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}