blob: 6a02028778b20d7152e1c9031ce316195f93edb7 [file] [log] [blame]
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001; RUN: llc -march=hexagon -mcpu=hexagonv5 < %s | FileCheck %s
2; Generate MemOps for V4 and above.
3
4define void @memop_unsigned_char_add5(i8* nocapture %p) nounwind {
5entry:
6; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
Manman Rena2e9a982013-08-21 22:20:53 +00007 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00008 %conv = zext i8 %0 to i32
9 %add = add nsw i32 %conv, 5
10 %conv1 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +000011 store i8 %conv1, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000012 ret void
13}
14
15define void @memop_unsigned_char_add(i8* nocapture %p, i8 zeroext %x) nounwind {
16entry:
17; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
18 %conv = zext i8 %x to i32
Manman Rena2e9a982013-08-21 22:20:53 +000019 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000020 %conv1 = zext i8 %0 to i32
21 %add = add nsw i32 %conv1, %conv
22 %conv2 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +000023 store i8 %conv2, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000024 ret void
25}
26
27define void @memop_unsigned_char_sub(i8* nocapture %p, i8 zeroext %x) nounwind {
28entry:
29; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
30 %conv = zext i8 %x to i32
Manman Rena2e9a982013-08-21 22:20:53 +000031 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000032 %conv1 = zext i8 %0 to i32
33 %sub = sub nsw i32 %conv1, %conv
34 %conv2 = trunc i32 %sub to i8
Manman Rena2e9a982013-08-21 22:20:53 +000035 store i8 %conv2, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000036 ret void
37}
38
39define void @memop_unsigned_char_or(i8* nocapture %p, i8 zeroext %x) nounwind {
40entry:
41; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +000042 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000043 %or3 = or i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +000044 store i8 %or3, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000045 ret void
46}
47
48define void @memop_unsigned_char_and(i8* nocapture %p, i8 zeroext %x) nounwind {
49entry:
50; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +000051 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000052 %and3 = and i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +000053 store i8 %and3, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000054 ret void
55}
56
57define void @memop_unsigned_char_clrbit(i8* nocapture %p) nounwind {
58entry:
59; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +000060 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000061 %conv = zext i8 %0 to i32
62 %and = and i32 %conv, 223
63 %conv1 = trunc i32 %and to i8
Manman Rena2e9a982013-08-21 22:20:53 +000064 store i8 %conv1, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000065 ret void
66}
67
68define void @memop_unsigned_char_setbit(i8* nocapture %p) nounwind {
69entry:
70; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +000071 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000072 %conv = zext i8 %0 to i32
73 %or = or i32 %conv, 128
74 %conv1 = trunc i32 %or to i8
Manman Rena2e9a982013-08-21 22:20:53 +000075 store i8 %conv1, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000076 ret void
77}
78
79define void @memop_unsigned_char_add5_index(i8* nocapture %p, i32 %i) nounwind {
80entry:
81; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +000082 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +000083 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000084 %conv = zext i8 %0 to i32
85 %add = add nsw i32 %conv, 5
86 %conv1 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +000087 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000088 ret void
89}
90
91define void @memop_unsigned_char_add_index(i8* nocapture %p, i32 %i, i8 zeroext %x) nounwind {
92entry:
93; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
94 %conv = zext i8 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +000095 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +000096 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +000097 %conv1 = zext i8 %0 to i32
98 %add = add nsw i32 %conv1, %conv
99 %conv2 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000100 store i8 %conv2, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000101 ret void
102}
103
104define void @memop_unsigned_char_sub_index(i8* nocapture %p, i32 %i, i8 zeroext %x) nounwind {
105entry:
106; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
107 %conv = zext i8 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000108 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000109 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000110 %conv1 = zext i8 %0 to i32
111 %sub = sub nsw i32 %conv1, %conv
112 %conv2 = trunc i32 %sub to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000113 store i8 %conv2, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000114 ret void
115}
116
117define void @memop_unsigned_char_or_index(i8* nocapture %p, i32 %i, i8 zeroext %x) nounwind {
118entry:
119; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000120 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000121 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000122 %or3 = or i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000123 store i8 %or3, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000124 ret void
125}
126
127define void @memop_unsigned_char_and_index(i8* nocapture %p, i32 %i, i8 zeroext %x) nounwind {
128entry:
129; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000130 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000131 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000132 %and3 = and i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000133 store i8 %and3, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000134 ret void
135}
136
137define void @memop_unsigned_char_clrbit_index(i8* nocapture %p, i32 %i) nounwind {
138entry:
139; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000140 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000141 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000142 %conv = zext i8 %0 to i32
143 %and = and i32 %conv, 223
144 %conv1 = trunc i32 %and to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000145 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000146 ret void
147}
148
149define void @memop_unsigned_char_setbit_index(i8* nocapture %p, i32 %i) nounwind {
150entry:
151; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000152 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000153 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000154 %conv = zext i8 %0 to i32
155 %or = or i32 %conv, 128
156 %conv1 = trunc i32 %or to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000157 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000158 ret void
159}
160
161define void @memop_unsigned_char_add5_index5(i8* nocapture %p) nounwind {
162entry:
163; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +0000164 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000165 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000166 %conv = zext i8 %0 to i32
167 %add = add nsw i32 %conv, 5
168 %conv1 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000169 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000170 ret void
171}
172
173define void @memop_unsigned_char_add_index5(i8* nocapture %p, i8 zeroext %x) nounwind {
174entry:
175; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}r{{[0-9]+}}
176 %conv = zext i8 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000177 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000178 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000179 %conv1 = zext i8 %0 to i32
180 %add = add nsw i32 %conv1, %conv
181 %conv2 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000182 store i8 %conv2, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000183 ret void
184}
185
186define void @memop_unsigned_char_sub_index5(i8* nocapture %p, i8 zeroext %x) nounwind {
187entry:
188; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}-={{ *}}r{{[0-9]+}}
189 %conv = zext i8 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000190 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000191 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000192 %conv1 = zext i8 %0 to i32
193 %sub = sub nsw i32 %conv1, %conv
194 %conv2 = trunc i32 %sub to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000195 store i8 %conv2, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000196 ret void
197}
198
199define void @memop_unsigned_char_or_index5(i8* nocapture %p, i8 zeroext %x) nounwind {
200entry:
201; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000202 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000203 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000204 %or3 = or i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000205 store i8 %or3, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000206 ret void
207}
208
209define void @memop_unsigned_char_and_index5(i8* nocapture %p, i8 zeroext %x) nounwind {
210entry:
211; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000212 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000213 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000214 %and3 = and i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000215 store i8 %and3, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000216 ret void
217}
218
219define void @memop_unsigned_char_clrbit_index5(i8* nocapture %p) nounwind {
220entry:
221; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000222 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000223 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000224 %conv = zext i8 %0 to i32
225 %and = and i32 %conv, 223
226 %conv1 = trunc i32 %and to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000227 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000228 ret void
229}
230
231define void @memop_unsigned_char_setbit_index5(i8* nocapture %p) nounwind {
232entry:
233; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000234 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000235 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000236 %conv = zext i8 %0 to i32
237 %or = or i32 %conv, 128
238 %conv1 = trunc i32 %or to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000239 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000240 ret void
241}
242
243define void @memop_signed_char_add5(i8* nocapture %p) nounwind {
244entry:
245; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
Manman Rena2e9a982013-08-21 22:20:53 +0000246 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000247 %conv2 = zext i8 %0 to i32
248 %add = add nsw i32 %conv2, 5
249 %conv1 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000250 store i8 %conv1, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000251 ret void
252}
253
254define void @memop_signed_char_add(i8* nocapture %p, i8 signext %x) nounwind {
255entry:
256; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
257 %conv4 = zext i8 %x to i32
Manman Rena2e9a982013-08-21 22:20:53 +0000258 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000259 %conv13 = zext i8 %0 to i32
260 %add = add nsw i32 %conv13, %conv4
261 %conv2 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000262 store i8 %conv2, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000263 ret void
264}
265
266define void @memop_signed_char_sub(i8* nocapture %p, i8 signext %x) nounwind {
267entry:
268; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
269 %conv4 = zext i8 %x to i32
Manman Rena2e9a982013-08-21 22:20:53 +0000270 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000271 %conv13 = zext i8 %0 to i32
272 %sub = sub nsw i32 %conv13, %conv4
273 %conv2 = trunc i32 %sub to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000274 store i8 %conv2, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000275 ret void
276}
277
278define void @memop_signed_char_or(i8* nocapture %p, i8 signext %x) nounwind {
279entry:
280; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +0000281 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000282 %or3 = or i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000283 store i8 %or3, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000284 ret void
285}
286
287define void @memop_signed_char_and(i8* nocapture %p, i8 signext %x) nounwind {
288entry:
289; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +0000290 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000291 %and3 = and i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000292 store i8 %and3, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000293 ret void
294}
295
296define void @memop_signed_char_clrbit(i8* nocapture %p) nounwind {
297entry:
298; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +0000299 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000300 %conv2 = zext i8 %0 to i32
301 %and = and i32 %conv2, 223
302 %conv1 = trunc i32 %and to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000303 store i8 %conv1, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000304 ret void
305}
306
307define void @memop_signed_char_setbit(i8* nocapture %p) nounwind {
308entry:
309; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +0000310 %0 = load i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000311 %conv2 = zext i8 %0 to i32
312 %or = or i32 %conv2, 128
313 %conv1 = trunc i32 %or to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000314 store i8 %conv1, i8* %p, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000315 ret void
316}
317
318define void @memop_signed_char_add5_index(i8* nocapture %p, i32 %i) nounwind {
319entry:
320; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +0000321 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000322 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000323 %conv2 = zext i8 %0 to i32
324 %add = add nsw i32 %conv2, 5
325 %conv1 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000326 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000327 ret void
328}
329
330define void @memop_signed_char_add_index(i8* nocapture %p, i32 %i, i8 signext %x) nounwind {
331entry:
332; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
333 %conv4 = zext i8 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000334 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000335 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000336 %conv13 = zext i8 %0 to i32
337 %add = add nsw i32 %conv13, %conv4
338 %conv2 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000339 store i8 %conv2, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000340 ret void
341}
342
343define void @memop_signed_char_sub_index(i8* nocapture %p, i32 %i, i8 signext %x) nounwind {
344entry:
345; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
346 %conv4 = zext i8 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000347 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000348 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000349 %conv13 = zext i8 %0 to i32
350 %sub = sub nsw i32 %conv13, %conv4
351 %conv2 = trunc i32 %sub to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000352 store i8 %conv2, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000353 ret void
354}
355
356define void @memop_signed_char_or_index(i8* nocapture %p, i32 %i, i8 signext %x) nounwind {
357entry:
358; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000359 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000360 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000361 %or3 = or i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000362 store i8 %or3, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000363 ret void
364}
365
366define void @memop_signed_char_and_index(i8* nocapture %p, i32 %i, i8 signext %x) nounwind {
367entry:
368; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000369 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000370 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000371 %and3 = and i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000372 store i8 %and3, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000373 ret void
374}
375
376define void @memop_signed_char_clrbit_index(i8* nocapture %p, i32 %i) nounwind {
377entry:
378; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000379 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000380 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000381 %conv2 = zext i8 %0 to i32
382 %and = and i32 %conv2, 223
383 %conv1 = trunc i32 %and to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000384 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000385 ret void
386}
387
388define void @memop_signed_char_setbit_index(i8* nocapture %p, i32 %i) nounwind {
389entry:
390; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000391 %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000392 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000393 %conv2 = zext i8 %0 to i32
394 %or = or i32 %conv2, 128
395 %conv1 = trunc i32 %or to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000396 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000397 ret void
398}
399
400define void @memop_signed_char_add5_index5(i8* nocapture %p) nounwind {
401entry:
402; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +0000403 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000404 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000405 %conv2 = zext i8 %0 to i32
406 %add = add nsw i32 %conv2, 5
407 %conv1 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000408 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000409 ret void
410}
411
412define void @memop_signed_char_add_index5(i8* nocapture %p, i8 signext %x) nounwind {
413entry:
414; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}r{{[0-9]+}}
415 %conv4 = zext i8 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000416 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000417 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000418 %conv13 = zext i8 %0 to i32
419 %add = add nsw i32 %conv13, %conv4
420 %conv2 = trunc i32 %add to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000421 store i8 %conv2, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000422 ret void
423}
424
425define void @memop_signed_char_sub_index5(i8* nocapture %p, i8 signext %x) nounwind {
426entry:
427; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}-={{ *}}r{{[0-9]+}}
428 %conv4 = zext i8 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000429 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000430 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000431 %conv13 = zext i8 %0 to i32
432 %sub = sub nsw i32 %conv13, %conv4
433 %conv2 = trunc i32 %sub to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000434 store i8 %conv2, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000435 ret void
436}
437
438define void @memop_signed_char_or_index5(i8* nocapture %p, i8 signext %x) nounwind {
439entry:
440; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000441 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000442 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000443 %or3 = or i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000444 store i8 %or3, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000445 ret void
446}
447
448define void @memop_signed_char_and_index5(i8* nocapture %p, i8 signext %x) nounwind {
449entry:
450; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000451 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000452 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000453 %and3 = and i8 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000454 store i8 %and3, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000455 ret void
456}
457
458define void @memop_signed_char_clrbit_index5(i8* nocapture %p) nounwind {
459entry:
460; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000461 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000462 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000463 %conv2 = zext i8 %0 to i32
464 %and = and i32 %conv2, 223
465 %conv1 = trunc i32 %and to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000466 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000467 ret void
468}
469
470define void @memop_signed_char_setbit_index5(i8* nocapture %p) nounwind {
471entry:
472; CHECK: memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000473 %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000474 %0 = load i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000475 %conv2 = zext i8 %0 to i32
476 %or = or i32 %conv2, 128
477 %conv1 = trunc i32 %or to i8
Manman Rena2e9a982013-08-21 22:20:53 +0000478 store i8 %conv1, i8* %add.ptr, align 1
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000479 ret void
480}
481
482define void @memop_unsigned_short_add5(i16* nocapture %p) nounwind {
483entry:
484; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
Manman Rena2e9a982013-08-21 22:20:53 +0000485 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000486 %conv = zext i16 %0 to i32
487 %add = add nsw i32 %conv, 5
488 %conv1 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000489 store i16 %conv1, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000490 ret void
491}
492
493define void @memop_unsigned_short_add(i16* nocapture %p, i16 zeroext %x) nounwind {
494entry:
495; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
496 %conv = zext i16 %x to i32
Manman Rena2e9a982013-08-21 22:20:53 +0000497 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000498 %conv1 = zext i16 %0 to i32
499 %add = add nsw i32 %conv1, %conv
500 %conv2 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000501 store i16 %conv2, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000502 ret void
503}
504
505define void @memop_unsigned_short_sub(i16* nocapture %p, i16 zeroext %x) nounwind {
506entry:
507; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
508 %conv = zext i16 %x to i32
Manman Rena2e9a982013-08-21 22:20:53 +0000509 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000510 %conv1 = zext i16 %0 to i32
511 %sub = sub nsw i32 %conv1, %conv
512 %conv2 = trunc i32 %sub to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000513 store i16 %conv2, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000514 ret void
515}
516
517define void @memop_unsigned_short_or(i16* nocapture %p, i16 zeroext %x) nounwind {
518entry:
519; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +0000520 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000521 %or3 = or i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000522 store i16 %or3, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000523 ret void
524}
525
526define void @memop_unsigned_short_and(i16* nocapture %p, i16 zeroext %x) nounwind {
527entry:
528; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +0000529 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000530 %and3 = and i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000531 store i16 %and3, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000532 ret void
533}
534
535define void @memop_unsigned_short_clrbit(i16* nocapture %p) nounwind {
536entry:
537; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +0000538 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000539 %conv = zext i16 %0 to i32
540 %and = and i32 %conv, 65503
541 %conv1 = trunc i32 %and to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000542 store i16 %conv1, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000543 ret void
544}
545
546define void @memop_unsigned_short_setbit(i16* nocapture %p) nounwind {
547entry:
548; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +0000549 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000550 %conv = zext i16 %0 to i32
551 %or = or i32 %conv, 128
552 %conv1 = trunc i32 %or to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000553 store i16 %conv1, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000554 ret void
555}
556
557define void @memop_unsigned_short_add5_index(i16* nocapture %p, i32 %i) nounwind {
558entry:
559; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +0000560 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000561 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000562 %conv = zext i16 %0 to i32
563 %add = add nsw i32 %conv, 5
564 %conv1 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000565 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000566 ret void
567}
568
569define void @memop_unsigned_short_add_index(i16* nocapture %p, i32 %i, i16 zeroext %x) nounwind {
570entry:
571; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
572 %conv = zext i16 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000573 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000574 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000575 %conv1 = zext i16 %0 to i32
576 %add = add nsw i32 %conv1, %conv
577 %conv2 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000578 store i16 %conv2, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000579 ret void
580}
581
582define void @memop_unsigned_short_sub_index(i16* nocapture %p, i32 %i, i16 zeroext %x) nounwind {
583entry:
584; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
585 %conv = zext i16 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000586 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000587 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000588 %conv1 = zext i16 %0 to i32
589 %sub = sub nsw i32 %conv1, %conv
590 %conv2 = trunc i32 %sub to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000591 store i16 %conv2, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000592 ret void
593}
594
595define void @memop_unsigned_short_or_index(i16* nocapture %p, i32 %i, i16 zeroext %x) nounwind {
596entry:
597; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000598 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000599 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000600 %or3 = or i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000601 store i16 %or3, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000602 ret void
603}
604
605define void @memop_unsigned_short_and_index(i16* nocapture %p, i32 %i, i16 zeroext %x) nounwind {
606entry:
607; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000608 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000609 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000610 %and3 = and i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000611 store i16 %and3, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000612 ret void
613}
614
615define void @memop_unsigned_short_clrbit_index(i16* nocapture %p, i32 %i) nounwind {
616entry:
617; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000618 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000619 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000620 %conv = zext i16 %0 to i32
621 %and = and i32 %conv, 65503
622 %conv1 = trunc i32 %and to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000623 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000624 ret void
625}
626
627define void @memop_unsigned_short_setbit_index(i16* nocapture %p, i32 %i) nounwind {
628entry:
629; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000630 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000631 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000632 %conv = zext i16 %0 to i32
633 %or = or i32 %conv, 128
634 %conv1 = trunc i32 %or to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000635 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000636 ret void
637}
638
639define void @memop_unsigned_short_add5_index5(i16* nocapture %p) nounwind {
640entry:
641; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +0000642 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000643 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000644 %conv = zext i16 %0 to i32
645 %add = add nsw i32 %conv, 5
646 %conv1 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000647 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000648 ret void
649}
650
651define void @memop_unsigned_short_add_index5(i16* nocapture %p, i16 zeroext %x) nounwind {
652entry:
653; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}r{{[0-9]+}}
654 %conv = zext i16 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000655 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000656 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000657 %conv1 = zext i16 %0 to i32
658 %add = add nsw i32 %conv1, %conv
659 %conv2 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000660 store i16 %conv2, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000661 ret void
662}
663
664define void @memop_unsigned_short_sub_index5(i16* nocapture %p, i16 zeroext %x) nounwind {
665entry:
666; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}-={{ *}}r{{[0-9]+}}
667 %conv = zext i16 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000668 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000669 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000670 %conv1 = zext i16 %0 to i32
671 %sub = sub nsw i32 %conv1, %conv
672 %conv2 = trunc i32 %sub to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000673 store i16 %conv2, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000674 ret void
675}
676
677define void @memop_unsigned_short_or_index5(i16* nocapture %p, i16 zeroext %x) nounwind {
678entry:
679; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000680 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000681 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000682 %or3 = or i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000683 store i16 %or3, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000684 ret void
685}
686
687define void @memop_unsigned_short_and_index5(i16* nocapture %p, i16 zeroext %x) nounwind {
688entry:
689; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000690 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000691 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000692 %and3 = and i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000693 store i16 %and3, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000694 ret void
695}
696
697define void @memop_unsigned_short_clrbit_index5(i16* nocapture %p) nounwind {
698entry:
699; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000700 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000701 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000702 %conv = zext i16 %0 to i32
703 %and = and i32 %conv, 65503
704 %conv1 = trunc i32 %and to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000705 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000706 ret void
707}
708
709define void @memop_unsigned_short_setbit_index5(i16* nocapture %p) nounwind {
710entry:
711; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000712 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000713 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000714 %conv = zext i16 %0 to i32
715 %or = or i32 %conv, 128
716 %conv1 = trunc i32 %or to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000717 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000718 ret void
719}
720
721define void @memop_signed_short_add5(i16* nocapture %p) nounwind {
722entry:
723; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
Manman Rena2e9a982013-08-21 22:20:53 +0000724 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000725 %conv2 = zext i16 %0 to i32
726 %add = add nsw i32 %conv2, 5
727 %conv1 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000728 store i16 %conv1, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000729 ret void
730}
731
732define void @memop_signed_short_add(i16* nocapture %p, i16 signext %x) nounwind {
733entry:
734; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
735 %conv4 = zext i16 %x to i32
Manman Rena2e9a982013-08-21 22:20:53 +0000736 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000737 %conv13 = zext i16 %0 to i32
738 %add = add nsw i32 %conv13, %conv4
739 %conv2 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000740 store i16 %conv2, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000741 ret void
742}
743
744define void @memop_signed_short_sub(i16* nocapture %p, i16 signext %x) nounwind {
745entry:
746; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
747 %conv4 = zext i16 %x to i32
Manman Rena2e9a982013-08-21 22:20:53 +0000748 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000749 %conv13 = zext i16 %0 to i32
750 %sub = sub nsw i32 %conv13, %conv4
751 %conv2 = trunc i32 %sub to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000752 store i16 %conv2, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000753 ret void
754}
755
756define void @memop_signed_short_or(i16* nocapture %p, i16 signext %x) nounwind {
757entry:
758; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +0000759 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000760 %or3 = or i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000761 store i16 %or3, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000762 ret void
763}
764
765define void @memop_signed_short_and(i16* nocapture %p, i16 signext %x) nounwind {
766entry:
767; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +0000768 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000769 %and3 = and i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000770 store i16 %and3, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000771 ret void
772}
773
774define void @memop_signed_short_clrbit(i16* nocapture %p) nounwind {
775entry:
776; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +0000777 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000778 %conv2 = zext i16 %0 to i32
779 %and = and i32 %conv2, 65503
780 %conv1 = trunc i32 %and to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000781 store i16 %conv1, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000782 ret void
783}
784
785define void @memop_signed_short_setbit(i16* nocapture %p) nounwind {
786entry:
787; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +0000788 %0 = load i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000789 %conv2 = zext i16 %0 to i32
790 %or = or i32 %conv2, 128
791 %conv1 = trunc i32 %or to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000792 store i16 %conv1, i16* %p, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000793 ret void
794}
795
796define void @memop_signed_short_add5_index(i16* nocapture %p, i32 %i) nounwind {
797entry:
798; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +0000799 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000800 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000801 %conv2 = zext i16 %0 to i32
802 %add = add nsw i32 %conv2, 5
803 %conv1 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000804 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000805 ret void
806}
807
808define void @memop_signed_short_add_index(i16* nocapture %p, i32 %i, i16 signext %x) nounwind {
809entry:
810; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
811 %conv4 = zext i16 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000812 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000813 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000814 %conv13 = zext i16 %0 to i32
815 %add = add nsw i32 %conv13, %conv4
816 %conv2 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000817 store i16 %conv2, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000818 ret void
819}
820
821define void @memop_signed_short_sub_index(i16* nocapture %p, i32 %i, i16 signext %x) nounwind {
822entry:
823; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
824 %conv4 = zext i16 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000825 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000826 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000827 %conv13 = zext i16 %0 to i32
828 %sub = sub nsw i32 %conv13, %conv4
829 %conv2 = trunc i32 %sub to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000830 store i16 %conv2, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000831 ret void
832}
833
834define void @memop_signed_short_or_index(i16* nocapture %p, i32 %i, i16 signext %x) nounwind {
835entry:
836; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000837 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000838 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000839 %or3 = or i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000840 store i16 %or3, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000841 ret void
842}
843
844define void @memop_signed_short_and_index(i16* nocapture %p, i32 %i, i16 signext %x) nounwind {
845entry:
846; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000847 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000848 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000849 %and3 = and i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000850 store i16 %and3, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000851 ret void
852}
853
854define void @memop_signed_short_clrbit_index(i16* nocapture %p, i32 %i) nounwind {
855entry:
856; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000857 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000858 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000859 %conv2 = zext i16 %0 to i32
860 %and = and i32 %conv2, 65503
861 %conv1 = trunc i32 %and to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000862 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000863 ret void
864}
865
866define void @memop_signed_short_setbit_index(i16* nocapture %p, i32 %i) nounwind {
867entry:
868; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000869 %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +0000870 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000871 %conv2 = zext i16 %0 to i32
872 %or = or i32 %conv2, 128
873 %conv1 = trunc i32 %or to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000874 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000875 ret void
876}
877
878define void @memop_signed_short_add5_index5(i16* nocapture %p) nounwind {
879entry:
880; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +0000881 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000882 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000883 %conv2 = zext i16 %0 to i32
884 %add = add nsw i32 %conv2, 5
885 %conv1 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000886 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000887 ret void
888}
889
890define void @memop_signed_short_add_index5(i16* nocapture %p, i16 signext %x) nounwind {
891entry:
892; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}r{{[0-9]+}}
893 %conv4 = zext i16 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000894 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000895 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000896 %conv13 = zext i16 %0 to i32
897 %add = add nsw i32 %conv13, %conv4
898 %conv2 = trunc i32 %add to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000899 store i16 %conv2, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000900 ret void
901}
902
903define void @memop_signed_short_sub_index5(i16* nocapture %p, i16 signext %x) nounwind {
904entry:
905; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}-={{ *}}r{{[0-9]+}}
906 %conv4 = zext i16 %x to i32
David Blaikie79e6c742015-02-27 19:29:02 +0000907 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000908 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000909 %conv13 = zext i16 %0 to i32
910 %sub = sub nsw i32 %conv13, %conv4
911 %conv2 = trunc i32 %sub to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000912 store i16 %conv2, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000913 ret void
914}
915
916define void @memop_signed_short_or_index5(i16* nocapture %p, i16 signext %x) nounwind {
917entry:
918; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000919 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000920 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000921 %or3 = or i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000922 store i16 %or3, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000923 ret void
924}
925
926define void @memop_signed_short_and_index5(i16* nocapture %p, i16 signext %x) nounwind {
927entry:
928; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +0000929 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000930 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000931 %and3 = and i16 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000932 store i16 %and3, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000933 ret void
934}
935
936define void @memop_signed_short_clrbit_index5(i16* nocapture %p) nounwind {
937entry:
938; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000939 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000940 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000941 %conv2 = zext i16 %0 to i32
942 %and = and i32 %conv2, 65503
943 %conv1 = trunc i32 %and to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000944 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000945 ret void
946}
947
948define void @memop_signed_short_setbit_index5(i16* nocapture %p) nounwind {
949entry:
950; CHECK: memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +0000951 %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +0000952 %0 = load i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000953 %conv2 = zext i16 %0 to i32
954 %or = or i32 %conv2, 128
955 %conv1 = trunc i32 %or to i16
Manman Rena2e9a982013-08-21 22:20:53 +0000956 store i16 %conv1, i16* %add.ptr, align 2
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000957 ret void
958}
959
960define void @memop_signed_int_add5(i32* nocapture %p) nounwind {
961entry:
962; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
Manman Rena2e9a982013-08-21 22:20:53 +0000963 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000964 %add = add i32 %0, 5
Manman Rena2e9a982013-08-21 22:20:53 +0000965 store i32 %add, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000966 ret void
967}
968
969define void @memop_signed_int_add(i32* nocapture %p, i32 %x) nounwind {
970entry:
971; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +0000972 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000973 %add = add i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000974 store i32 %add, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000975 ret void
976}
977
978define void @memop_signed_int_sub(i32* nocapture %p, i32 %x) nounwind {
979entry:
980; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +0000981 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000982 %sub = sub i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000983 store i32 %sub, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000984 ret void
985}
986
987define void @memop_signed_int_or(i32* nocapture %p, i32 %x) nounwind {
988entry:
989; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +0000990 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000991 %or = or i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +0000992 store i32 %or, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +0000993 ret void
994}
995
996define void @memop_signed_int_and(i32* nocapture %p, i32 %x) nounwind {
997entry:
998; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +0000999 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001000 %and = and i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001001 store i32 %and, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001002 ret void
1003}
1004
1005define void @memop_signed_int_clrbit(i32* nocapture %p) nounwind {
1006entry:
1007; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +00001008 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001009 %and = and i32 %0, -33
Manman Rena2e9a982013-08-21 22:20:53 +00001010 store i32 %and, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001011 ret void
1012}
1013
1014define void @memop_signed_int_setbit(i32* nocapture %p) nounwind {
1015entry:
1016; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +00001017 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001018 %or = or i32 %0, 128
Manman Rena2e9a982013-08-21 22:20:53 +00001019 store i32 %or, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001020 ret void
1021}
1022
1023define void @memop_signed_int_add5_index(i32* nocapture %p, i32 %i) nounwind {
1024entry:
1025; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +00001026 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001027 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001028 %add = add i32 %0, 5
Manman Rena2e9a982013-08-21 22:20:53 +00001029 store i32 %add, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001030 ret void
1031}
1032
1033define void @memop_signed_int_add_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1034entry:
1035; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001036 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001037 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001038 %add = add i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001039 store i32 %add, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001040 ret void
1041}
1042
1043define void @memop_signed_int_sub_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1044entry:
1045; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001046 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001047 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001048 %sub = sub i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001049 store i32 %sub, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001050 ret void
1051}
1052
1053define void @memop_signed_int_or_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1054entry:
1055; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001056 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001057 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001058 %or = or i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001059 store i32 %or, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001060 ret void
1061}
1062
1063define void @memop_signed_int_and_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1064entry:
1065; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001066 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001067 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001068 %and = and i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001069 store i32 %and, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001070 ret void
1071}
1072
1073define void @memop_signed_int_clrbit_index(i32* nocapture %p, i32 %i) nounwind {
1074entry:
1075; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +00001076 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001077 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001078 %and = and i32 %0, -33
Manman Rena2e9a982013-08-21 22:20:53 +00001079 store i32 %and, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001080 ret void
1081}
1082
1083define void @memop_signed_int_setbit_index(i32* nocapture %p, i32 %i) nounwind {
1084entry:
1085; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +00001086 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001087 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001088 %or = or i32 %0, 128
Manman Rena2e9a982013-08-21 22:20:53 +00001089 store i32 %or, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001090 ret void
1091}
1092
1093define void @memop_signed_int_add5_index5(i32* nocapture %p) nounwind {
1094entry:
1095; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +00001096 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001097 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001098 %add = add i32 %0, 5
Manman Rena2e9a982013-08-21 22:20:53 +00001099 store i32 %add, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001100 ret void
1101}
1102
1103define void @memop_signed_int_add_index5(i32* nocapture %p, i32 %x) nounwind {
1104entry:
1105; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001106 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001107 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001108 %add = add i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001109 store i32 %add, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001110 ret void
1111}
1112
1113define void @memop_signed_int_sub_index5(i32* nocapture %p, i32 %x) nounwind {
1114entry:
1115; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}-={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001116 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001117 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001118 %sub = sub i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001119 store i32 %sub, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001120 ret void
1121}
1122
1123define void @memop_signed_int_or_index5(i32* nocapture %p, i32 %x) nounwind {
1124entry:
1125; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001126 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001127 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001128 %or = or i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001129 store i32 %or, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001130 ret void
1131}
1132
1133define void @memop_signed_int_and_index5(i32* nocapture %p, i32 %x) nounwind {
1134entry:
1135; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001136 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001137 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001138 %and = and i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001139 store i32 %and, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001140 ret void
1141}
1142
1143define void @memop_signed_int_clrbit_index5(i32* nocapture %p) nounwind {
1144entry:
1145; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +00001146 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001147 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001148 %and = and i32 %0, -33
Manman Rena2e9a982013-08-21 22:20:53 +00001149 store i32 %and, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001150 ret void
1151}
1152
1153define void @memop_signed_int_setbit_index5(i32* nocapture %p) nounwind {
1154entry:
1155; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +00001156 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001157 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001158 %or = or i32 %0, 128
Manman Rena2e9a982013-08-21 22:20:53 +00001159 store i32 %or, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001160 ret void
1161}
1162
1163define void @memop_unsigned_int_add5(i32* nocapture %p) nounwind {
1164entry:
1165; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
Manman Rena2e9a982013-08-21 22:20:53 +00001166 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001167 %add = add nsw i32 %0, 5
Manman Rena2e9a982013-08-21 22:20:53 +00001168 store i32 %add, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001169 ret void
1170}
1171
1172define void @memop_unsigned_int_add(i32* nocapture %p, i32 %x) nounwind {
1173entry:
1174; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +00001175 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001176 %add = add nsw i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001177 store i32 %add, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001178 ret void
1179}
1180
1181define void @memop_unsigned_int_sub(i32* nocapture %p, i32 %x) nounwind {
1182entry:
1183; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +00001184 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001185 %sub = sub nsw i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001186 store i32 %sub, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001187 ret void
1188}
1189
1190define void @memop_unsigned_int_or(i32* nocapture %p, i32 %x) nounwind {
1191entry:
1192; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +00001193 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001194 %or = or i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001195 store i32 %or, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001196 ret void
1197}
1198
1199define void @memop_unsigned_int_and(i32* nocapture %p, i32 %x) nounwind {
1200entry:
1201; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
Manman Rena2e9a982013-08-21 22:20:53 +00001202 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001203 %and = and i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001204 store i32 %and, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001205 ret void
1206}
1207
1208define void @memop_unsigned_int_clrbit(i32* nocapture %p) nounwind {
1209entry:
1210; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +00001211 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001212 %and = and i32 %0, -33
Manman Rena2e9a982013-08-21 22:20:53 +00001213 store i32 %and, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001214 ret void
1215}
1216
1217define void @memop_unsigned_int_setbit(i32* nocapture %p) nounwind {
1218entry:
1219; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
Manman Rena2e9a982013-08-21 22:20:53 +00001220 %0 = load i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001221 %or = or i32 %0, 128
Manman Rena2e9a982013-08-21 22:20:53 +00001222 store i32 %or, i32* %p, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001223 ret void
1224}
1225
1226define void @memop_unsigned_int_add5_index(i32* nocapture %p, i32 %i) nounwind {
1227entry:
1228; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +00001229 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001230 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001231 %add = add nsw i32 %0, 5
Manman Rena2e9a982013-08-21 22:20:53 +00001232 store i32 %add, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001233 ret void
1234}
1235
1236define void @memop_unsigned_int_add_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1237entry:
1238; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001239 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001240 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001241 %add = add nsw i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001242 store i32 %add, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001243 ret void
1244}
1245
1246define void @memop_unsigned_int_sub_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1247entry:
1248; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001249 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001250 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001251 %sub = sub nsw i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001252 store i32 %sub, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001253 ret void
1254}
1255
1256define void @memop_unsigned_int_or_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1257entry:
1258; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001259 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001260 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001261 %or = or i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001262 store i32 %or, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001263 ret void
1264}
1265
1266define void @memop_unsigned_int_and_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1267entry:
1268; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001269 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001270 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001271 %and = and i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001272 store i32 %and, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001273 ret void
1274}
1275
1276define void @memop_unsigned_int_clrbit_index(i32* nocapture %p, i32 %i) nounwind {
1277entry:
1278; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +00001279 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001280 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001281 %and = and i32 %0, -33
Manman Rena2e9a982013-08-21 22:20:53 +00001282 store i32 %and, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001283 ret void
1284}
1285
1286define void @memop_unsigned_int_setbit_index(i32* nocapture %p, i32 %i) nounwind {
1287entry:
1288; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +00001289 %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
Manman Rena2e9a982013-08-21 22:20:53 +00001290 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001291 %or = or i32 %0, 128
Manman Rena2e9a982013-08-21 22:20:53 +00001292 store i32 %or, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001293 ret void
1294}
1295
1296define void @memop_unsigned_int_add5_index5(i32* nocapture %p) nounwind {
1297entry:
1298; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}#5
David Blaikie79e6c742015-02-27 19:29:02 +00001299 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001300 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001301 %add = add nsw i32 %0, 5
Manman Rena2e9a982013-08-21 22:20:53 +00001302 store i32 %add, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001303 ret void
1304}
1305
1306define void @memop_unsigned_int_add_index5(i32* nocapture %p, i32 %x) nounwind {
1307entry:
1308; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001309 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001310 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001311 %add = add nsw i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001312 store i32 %add, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001313 ret void
1314}
1315
1316define void @memop_unsigned_int_sub_index5(i32* nocapture %p, i32 %x) nounwind {
1317entry:
1318; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}-={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001319 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001320 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001321 %sub = sub nsw i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001322 store i32 %sub, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001323 ret void
1324}
1325
1326define void @memop_unsigned_int_or_index5(i32* nocapture %p, i32 %x) nounwind {
1327entry:
1328; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}|={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001329 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001330 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001331 %or = or i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001332 store i32 %or, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001333 ret void
1334}
1335
1336define void @memop_unsigned_int_and_index5(i32* nocapture %p, i32 %x) nounwind {
1337entry:
1338; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}&={{ *}}r{{[0-9]+}}
David Blaikie79e6c742015-02-27 19:29:02 +00001339 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001340 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001341 %and = and i32 %0, %x
Manman Rena2e9a982013-08-21 22:20:53 +00001342 store i32 %and, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001343 ret void
1344}
1345
1346define void @memop_unsigned_int_clrbit_index5(i32* nocapture %p) nounwind {
1347entry:
1348; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +00001349 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001350 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001351 %and = and i32 %0, -33
Manman Rena2e9a982013-08-21 22:20:53 +00001352 store i32 %and, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001353 ret void
1354}
1355
1356define void @memop_unsigned_int_setbit_index5(i32* nocapture %p) nounwind {
1357entry:
1358; CHECK: memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
David Blaikie79e6c742015-02-27 19:29:02 +00001359 %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
Manman Rena2e9a982013-08-21 22:20:53 +00001360 %0 = load i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001361 %or = or i32 %0, 128
Manman Rena2e9a982013-08-21 22:20:53 +00001362 store i32 %or, i32* %add.ptr, align 4
Jyotsna Vermafdc660b2013-03-22 18:41:34 +00001363 ret void
1364}