Eli Friedman | c573e2c | 2011-04-29 22:48:03 +0000 | [diff] [blame] | 1 | ; 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 Christopher | ab69588 | 2010-07-21 22:26:11 +0000 | [diff] [blame] | 3 | |
| 4 | ; Very basic fast-isel functionality. |
Eric Christopher | f260541 | 2010-09-08 19:32:34 +0000 | [diff] [blame] | 5 | define i32 @add(i32 %a, i32 %b) nounwind { |
Eric Christopher | ab69588 | 2010-07-21 22:26:11 +0000 | [diff] [blame] | 6 | entry: |
| 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 Christopher | bcf26ae | 2011-04-29 20:02:39 +0000 | [diff] [blame] | 15 | } |
| 16 | |
Eli Friedman | c573e2c | 2011-04-29 22:48:03 +0000 | [diff] [blame] | 17 | ; Check truncate to bool |
Eric Christopher | bcf26ae | 2011-04-29 20:02:39 +0000 | [diff] [blame] | 18 | define void @test1(i32 %tmp) nounwind { |
| 19 | entry: |
| 20 | %tobool = trunc i32 %tmp to i1 |
| 21 | br i1 %tobool, label %if.then, label %if.end |
| 22 | |
| 23 | if.then: ; preds = %entry |
| 24 | call void @test1(i32 0) |
| 25 | br label %if.end |
| 26 | |
| 27 | if.end: ; preds = %if.then, %entry |
| 28 | ret void |
Eli Friedman | c573e2c | 2011-04-29 22:48:03 +0000 | [diff] [blame] | 29 | ; 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 |
| 36 | define void @test2(i32 %tmp, i32* %ptr) nounwind { |
| 37 | ; THUMB: test2: |
| 38 | ; ARM: test2: |
| 39 | |
| 40 | b1: |
Eli Friedman | b2b03fc | 2011-04-29 23:34:52 +0000 | [diff] [blame^] | 41 | %a = add i32 %tmp, 4096 |
| 42 | store i32 %a, i32* %ptr |
Eli Friedman | c573e2c | 2011-04-29 22:48:03 +0000 | [diff] [blame] | 43 | br label %b2 |
| 44 | |
| 45 | ; THUMB: add.w {{.*}} #4096 |
| 46 | ; ARM: add {{.*}} #1, #20 |
| 47 | |
| 48 | b2: |
Eli Friedman | b2b03fc | 2011-04-29 23:34:52 +0000 | [diff] [blame^] | 49 | %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 | |
| 56 | b3: |
Eli Friedman | c573e2c | 2011-04-29 22:48:03 +0000 | [diff] [blame] | 57 | %c = or i32 %tmp, 4 |
| 58 | store i32 %c, i32* %ptr |
| 59 | ret void |
| 60 | |
| 61 | ; THUMB: orr {{.*}} #4 |
| 62 | ; ARM: orr {{.*}} #4 |
Eric Christopher | bcf26ae | 2011-04-29 20:02:39 +0000 | [diff] [blame] | 63 | } |