xref: /llvm-project/llvm/test/CodeGen/Thumb/ldr_frame.ll (revision e6bf3fa05b3706197143414a56be05ce014ebe01)
1; RUN: llc -mtriple=thumb-eabi %s -o - | FileCheck %s
2
3define i32 @f1() {
4; CHECK-LABEL: f1:
5; CHECK: ldr r0
6	%buf = alloca [32 x i32], align 4
7	%tmp1 = load i32, ptr %buf
8	ret i32 %tmp1
9}
10
11define i32 @f2() {
12; CHECK-LABEL: f2:
13; CHECK: mov r0
14; CHECK: ldrb
15	%buf = alloca [32 x i8], align 4
16	%tmp1 = load i8, ptr %buf
17        %tmp2 = zext i8 %tmp1 to i32
18	ret i32 %tmp2
19}
20
21define i32 @f3() {
22; CHECK-LABEL: f3:
23; CHECK: ldr r0
24	%buf = alloca [32 x i32], align 4
25	%tmp = getelementptr [32 x i32], ptr %buf, i32 0, i32 32
26	%tmp1 = load i32, ptr %tmp
27	ret i32 %tmp1
28}
29
30define i32 @f4() {
31; CHECK-LABEL: f4:
32; CHECK: mov r0
33; CHECK: ldrb
34	%buf = alloca [32 x i8], align 4
35	%tmp = getelementptr [32 x i8], ptr %buf, i32 0, i32 2
36	%tmp1 = load i8, ptr %tmp
37        %tmp2 = zext i8 %tmp1 to i32
38	ret i32 %tmp2
39}
40