blob: 6aad92fbc6a436b61f5fc0a3f730ede50b4d749c [file] [log] [blame]
Eli Friedmanc573e2c2011-04-29 22:48:03 +00001; RUN: llc < %s -O0 -fast-isel-abort -mtriple=armv7-apple-darwin | FileCheck %s --check-prefix=ARM
2; RUN: llc < %s -O0 -fast-isel-abort -mtriple=thumbv7-apple-darwin | FileCheck %s --check-prefix=THUMB
Eric Christopherab695882010-07-21 22:26:11 +00003
4; Very basic fast-isel functionality.
Eric Christopherf2605412010-09-08 19:32:34 +00005define i32 @add(i32 %a, i32 %b) nounwind {
Eric Christopherab695882010-07-21 22:26:11 +00006entry:
7 %a.addr = alloca i32, align 4
8 %b.addr = alloca i32, align 4
9 store i32 %a, i32* %a.addr
10 store i32 %b, i32* %b.addr
11 %tmp = load i32* %a.addr
12 %tmp1 = load i32* %b.addr
13 %add = add nsw i32 %tmp, %tmp1
14 ret i32 %add
Eric Christopherbcf26ae2011-04-29 20:02:39 +000015}
16
Eli Friedmanc573e2c2011-04-29 22:48:03 +000017; Check truncate to bool
Eric Christopherbcf26ae2011-04-29 20:02:39 +000018define void @test1(i32 %tmp) nounwind {
19entry:
20%tobool = trunc i32 %tmp to i1
21br i1 %tobool, label %if.then, label %if.end
22
23if.then: ; preds = %entry
24call void @test1(i32 0)
25br label %if.end
26
27if.end: ; preds = %if.then, %entry
28ret void
Eli Friedmanc573e2c2011-04-29 22:48:03 +000029; ARM: test1:
30; ARM: tst r0, #1
31; THUMB: test1:
32; THUMB: tst.w r0, #1
33}
34
35; Check some simple operations with immediates
36define void @test2(i32 %tmp, i32* %ptr) nounwind {
37; THUMB: test2:
38; ARM: test2:
39
40b1:
Eli Friedmanb2b03fc2011-04-29 23:34:52 +000041 %a = add i32 %tmp, 4096
42 store i32 %a, i32* %ptr
Eli Friedmanc573e2c2011-04-29 22:48:03 +000043 br label %b2
44
45; THUMB: add.w {{.*}} #4096
46; ARM: add {{.*}} #1, #20
47
48b2:
Eli Friedmanb2b03fc2011-04-29 23:34:52 +000049 %b = add i32 %tmp, 4095
50 store i32 %b, i32* %ptr
51 br label %b3
52; THUMB: addw {{.*}} #4095
53; ARM: movw {{.*}} #4095
54; ARM: add
55
56b3:
Eli Friedmanc573e2c2011-04-29 22:48:03 +000057 %c = or i32 %tmp, 4
58 store i32 %c, i32* %ptr
59 ret void
60
61; THUMB: orr {{.*}} #4
62; ARM: orr {{.*}} #4
Eric Christopherbcf26ae2011-04-29 20:02:39 +000063}