[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / Hexagon / addrmode-indoff.ll
blob274add33898b4443aac26ca81505f597de225b1f
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 ; Bug 6840. Use absolute+index addressing.
5 @ga = common global [1024 x i8] zeroinitializer, align 8
7 ; CHECK-LABEL: test0
8 ; CHECK: memub(r{{[0-9]+}}+##ga)
9 define zeroext i8 @test0(i32 %i) nounwind readonly {
10 entry:
11   %t = getelementptr inbounds [1024 x i8], [1024 x i8]* @ga, i32 0, i32 %i
12   %0 = load i8, i8* %t, align 1
13   ret i8 %0
16 ; CHECK-LABEL: test1
17 ; CHECK: memb(r{{[0-9]+}}+##ga)
18 define signext i8 @test1(i32 %i) nounwind readonly {
19 entry:
20   %t = getelementptr inbounds [1024 x i8], [1024 x i8]* @ga, i32 0, i32 %i
21   %0 = load i8, i8* %t, align 1
22   ret i8 %0
25 ; CHECK-LABEL: test2
26 ; CHECK: memub(r{{[0-9]+}}<<#1+##ga)
27 define zeroext i8 @test2(i32 %i) nounwind readonly {
28 entry:
29   %j = shl nsw i32 %i, 1
30   %t = getelementptr inbounds [1024 x i8], [1024 x i8]* @ga, i32 0, i32 %j
31   %0 = load i8, i8* %t, align 1
32   ret i8 %0
35 ; CHECK-LABEL: test3
36 ; CHECK: memb(r{{[0-9]+}}<<#1+##ga)
37 define signext i8 @test3(i32 %i) nounwind readonly {
38 entry:
39   %j = shl nsw i32 %i, 1
40   %t = getelementptr inbounds [1024 x i8], [1024 x i8]* @ga, i32 0, i32 %j
41   %0 = load i8, i8* %t, align 1
42   ret i8 %0
45 ; CHECK-LABEL: test4
46 ; CHECK: memub(r{{[0-9]+}}<<#2+##ga)
47 define zeroext i8 @test4(i32 %i) nounwind readonly {
48 entry:
49   %j = shl nsw i32 %i, 2
50   %t = getelementptr inbounds [1024 x i8], [1024 x i8]* @ga, i32 0, i32 %j
51   %0 = load i8, i8* %t, align 1
52   ret i8 %0
55 ; CHECK-LABEL: test5
56 ; CHECK: memb(r{{[0-9]+}}<<#2+##ga)
57 define signext i8 @test5(i32 %i) nounwind readonly {
58 entry:
59   %j = shl nsw i32 %i, 2
60   %t = getelementptr inbounds [1024 x i8], [1024 x i8]* @ga, i32 0, i32 %j
61   %0 = load i8, i8* %t, align 1
62   ret i8 %0
65 ; CHECK-LABEL: test10
66 ; CHECK: memb(r{{[0-9]+}}+##ga)
67 define void @test10(i32 %i, i8 zeroext %v) nounwind {
68 entry:
69   %t = getelementptr inbounds [1024 x i8], [1024 x i8]* @ga, i32 0, i32 %i
70   store i8 %v, i8* %t, align 1
71   ret void
74 ; CHECK-LABEL: test11
75 ; CHECK: memb(r{{[0-9]+}}<<#1+##ga)
76 define void @test11(i32 %i, i8 signext %v) nounwind {
77 entry:
78   %j = shl nsw i32 %i, 1
79   %t = getelementptr inbounds [1024 x i8], [1024 x i8]* @ga, i32 0, i32 %j
80   store i8 %v, i8* %t, align 1
81   ret void
84 ; CHECK-LABEL: test12
85 ; CHECK: memb(r{{[0-9]+}}<<#2+##ga)
86 define void @test12(i32 %i, i8 zeroext %v) nounwind {
87 entry:
88   %j = shl nsw i32 %i, 2
89   %t = getelementptr inbounds [1024 x i8], [1024 x i8]* @ga, i32 0, i32 %j
90   store i8 %v, i8* %t, align 1
91   ret void