blob: 538ed24fbc4612e169f033684eee2748ccb320b7 [file] [log] [blame]
Ulrich Weigandd8501672013-03-19 19:52:04 +00001; RUN: llc < %s | FileCheck %s
2
3target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
4target triple = "powerpc64-unknown-linux-gnu"
5
6define i8* @stbu(i8* %base, i8 zeroext %val) nounwind {
7entry:
8 %arrayidx = getelementptr inbounds i8* %base, i64 16
9 store i8 %val, i8* %arrayidx, align 1
10 ret i8* %arrayidx
11}
12; CHECK: @stbu
13; CHECK: %entry
14; CHECK-NEXT: stbu
15; CHECK-NEXT: blr
16
17define i8* @stbux(i8* %base, i8 zeroext %val, i64 %offset) nounwind {
18entry:
19 %arrayidx = getelementptr inbounds i8* %base, i64 %offset
20 store i8 %val, i8* %arrayidx, align 1
21 ret i8* %arrayidx
22}
23; CHECK: @stbux
24; CHECK: %entry
25; CHECK-NEXT: stbux
26; CHECK-NEXT: blr
27
28define i16* @sthu(i16* %base, i16 zeroext %val) nounwind {
29entry:
30 %arrayidx = getelementptr inbounds i16* %base, i64 16
31 store i16 %val, i16* %arrayidx, align 2
32 ret i16* %arrayidx
33}
34; CHECK: @sthu
35; CHECK: %entry
36; CHECK-NEXT: sthu
37; CHECK-NEXT: blr
38
39define i16* @sthux(i16* %base, i16 zeroext %val, i64 %offset) nounwind {
40entry:
41 %arrayidx = getelementptr inbounds i16* %base, i64 %offset
42 store i16 %val, i16* %arrayidx, align 2
43 ret i16* %arrayidx
44}
45; CHECK: @sthux
46; CHECK: %entry
47; CHECK-NEXT: sldi
48; CHECK-NEXT: sthux
49; CHECK-NEXT: blr
50
51define i32* @stwu(i32* %base, i32 zeroext %val) nounwind {
52entry:
53 %arrayidx = getelementptr inbounds i32* %base, i64 16
54 store i32 %val, i32* %arrayidx, align 4
55 ret i32* %arrayidx
56}
57; CHECK: @stwu
58; CHECK: %entry
59; CHECK-NEXT: stwu
60; CHECK-NEXT: blr
61
62define i32* @stwux(i32* %base, i32 zeroext %val, i64 %offset) nounwind {
63entry:
64 %arrayidx = getelementptr inbounds i32* %base, i64 %offset
65 store i32 %val, i32* %arrayidx, align 4
66 ret i32* %arrayidx
67}
68; CHECK: @stwux
69; CHECK: %entry
70; CHECK-NEXT: sldi
71; CHECK-NEXT: stwux
72; CHECK-NEXT: blr
73
74define i8* @stbu8(i8* %base, i64 %val) nounwind {
75entry:
76 %conv = trunc i64 %val to i8
77 %arrayidx = getelementptr inbounds i8* %base, i64 16
78 store i8 %conv, i8* %arrayidx, align 1
79 ret i8* %arrayidx
80}
81; CHECK: @stbu
82; CHECK: %entry
83; CHECK-NEXT: stbu
84; CHECK-NEXT: blr
85
86define i8* @stbux8(i8* %base, i64 %val, i64 %offset) nounwind {
87entry:
88 %conv = trunc i64 %val to i8
89 %arrayidx = getelementptr inbounds i8* %base, i64 %offset
90 store i8 %conv, i8* %arrayidx, align 1
91 ret i8* %arrayidx
92}
93; CHECK: @stbux
94; CHECK: %entry
95; CHECK-NEXT: stbux
96; CHECK-NEXT: blr
97
98define i16* @sthu8(i16* %base, i64 %val) nounwind {
99entry:
100 %conv = trunc i64 %val to i16
101 %arrayidx = getelementptr inbounds i16* %base, i64 16
102 store i16 %conv, i16* %arrayidx, align 2
103 ret i16* %arrayidx
104}
105; CHECK: @sthu
106; CHECK: %entry
107; CHECK-NEXT: sthu
108; CHECK-NEXT: blr
109
110define i16* @sthux8(i16* %base, i64 %val, i64 %offset) nounwind {
111entry:
112 %conv = trunc i64 %val to i16
113 %arrayidx = getelementptr inbounds i16* %base, i64 %offset
114 store i16 %conv, i16* %arrayidx, align 2
115 ret i16* %arrayidx
116}
117; CHECK: @sthux
118; CHECK: %entry
119; CHECK-NEXT: sldi
120; CHECK-NEXT: sthux
121; CHECK-NEXT: blr
122
123define i32* @stwu8(i32* %base, i64 %val) nounwind {
124entry:
125 %conv = trunc i64 %val to i32
126 %arrayidx = getelementptr inbounds i32* %base, i64 16
127 store i32 %conv, i32* %arrayidx, align 4
128 ret i32* %arrayidx
129}
130; CHECK: @stwu
131; CHECK: %entry
132; CHECK-NEXT: stwu
133; CHECK-NEXT: blr
134
135define i32* @stwux8(i32* %base, i64 %val, i64 %offset) nounwind {
136entry:
137 %conv = trunc i64 %val to i32
138 %arrayidx = getelementptr inbounds i32* %base, i64 %offset
139 store i32 %conv, i32* %arrayidx, align 4
140 ret i32* %arrayidx
141}
142; CHECK: @stwux
143; CHECK: %entry
144; CHECK-NEXT: sldi
145; CHECK-NEXT: stwux
146; CHECK-NEXT: blr
147
148define i64* @stdu(i64* %base, i64 %val) nounwind {
149entry:
150 %arrayidx = getelementptr inbounds i64* %base, i64 16
151 store i64 %val, i64* %arrayidx, align 8
152 ret i64* %arrayidx
153}
154; CHECK: @stdu
155; CHECK: %entry
156; CHECK-NEXT: stdu
157; CHECK-NEXT: blr
158
159define i64* @stdux(i64* %base, i64 %val, i64 %offset) nounwind {
160entry:
161 %arrayidx = getelementptr inbounds i64* %base, i64 %offset
162 store i64 %val, i64* %arrayidx, align 8
163 ret i64* %arrayidx
164}
165; CHECK: @stdux
166; CHECK: %entry
167; CHECK-NEXT: sldi
168; CHECK-NEXT: stdux
169; CHECK-NEXT: blr
170