xref: /aosp_15_r20/external/llvm/test/CodeGen/Hexagon/memops.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon -mcpu=hexagonv5  < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; Generate MemOps for V4 and above.
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_add5(i8* nocapture %p) nounwind {
5*9880d681SAndroid Build Coastguard Workerentry:
6*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
7*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
8*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %0 to i32
9*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv, 5
10*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i8
11*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %p, align 1
12*9880d681SAndroid Build Coastguard Worker  ret void
13*9880d681SAndroid Build Coastguard Worker}
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_add(i8* nocapture %p, i8 zeroext %x) nounwind {
16*9880d681SAndroid Build Coastguard Workerentry:
17*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
18*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %x to i32
19*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
20*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i8 %0 to i32
21*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv1, %conv
22*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i8
23*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %p, align 1
24*9880d681SAndroid Build Coastguard Worker  ret void
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_sub(i8* nocapture %p, i8 zeroext %x) nounwind {
28*9880d681SAndroid Build Coastguard Workerentry:
29*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
30*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %x to i32
31*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
32*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i8 %0 to i32
33*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv1, %conv
34*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i8
35*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %p, align 1
36*9880d681SAndroid Build Coastguard Worker  ret void
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_or(i8* nocapture %p, i8 zeroext %x) nounwind {
40*9880d681SAndroid Build Coastguard Workerentry:
41*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
42*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
43*9880d681SAndroid Build Coastguard Worker  %or3 = or i8 %0, %x
44*9880d681SAndroid Build Coastguard Worker  store i8 %or3, i8* %p, align 1
45*9880d681SAndroid Build Coastguard Worker  ret void
46*9880d681SAndroid Build Coastguard Worker}
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_and(i8* nocapture %p, i8 zeroext %x) nounwind {
49*9880d681SAndroid Build Coastguard Workerentry:
50*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
51*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
52*9880d681SAndroid Build Coastguard Worker  %and3 = and i8 %0, %x
53*9880d681SAndroid Build Coastguard Worker  store i8 %and3, i8* %p, align 1
54*9880d681SAndroid Build Coastguard Worker  ret void
55*9880d681SAndroid Build Coastguard Worker}
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_clrbit(i8* nocapture %p) nounwind {
58*9880d681SAndroid Build Coastguard Workerentry:
59*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
60*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
61*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %0 to i32
62*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv, 223
63*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i8
64*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %p, align 1
65*9880d681SAndroid Build Coastguard Worker  ret void
66*9880d681SAndroid Build Coastguard Worker}
67*9880d681SAndroid Build Coastguard Worker
68*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_setbit(i8* nocapture %p) nounwind {
69*9880d681SAndroid Build Coastguard Workerentry:
70*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
71*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
72*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %0 to i32
73*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv, 128
74*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i8
75*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %p, align 1
76*9880d681SAndroid Build Coastguard Worker  ret void
77*9880d681SAndroid Build Coastguard Worker}
78*9880d681SAndroid Build Coastguard Worker
79*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_add5_index(i8* nocapture %p, i32 %i) nounwind {
80*9880d681SAndroid Build Coastguard Workerentry:
81*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
82*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
83*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
84*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %0 to i32
85*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv, 5
86*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i8
87*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
88*9880d681SAndroid Build Coastguard Worker  ret void
89*9880d681SAndroid Build Coastguard Worker}
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_add_index(i8* nocapture %p, i32 %i, i8 zeroext %x) nounwind {
92*9880d681SAndroid Build Coastguard Workerentry:
93*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
94*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %x to i32
95*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
96*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
97*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i8 %0 to i32
98*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv1, %conv
99*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i8
100*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %add.ptr, align 1
101*9880d681SAndroid Build Coastguard Worker  ret void
102*9880d681SAndroid Build Coastguard Worker}
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_sub_index(i8* nocapture %p, i32 %i, i8 zeroext %x) nounwind {
105*9880d681SAndroid Build Coastguard Workerentry:
106*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
107*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %x to i32
108*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
109*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
110*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i8 %0 to i32
111*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv1, %conv
112*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i8
113*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %add.ptr, align 1
114*9880d681SAndroid Build Coastguard Worker  ret void
115*9880d681SAndroid Build Coastguard Worker}
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_or_index(i8* nocapture %p, i32 %i, i8 zeroext %x) nounwind {
118*9880d681SAndroid Build Coastguard Workerentry:
119*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
120*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
121*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
122*9880d681SAndroid Build Coastguard Worker  %or3 = or i8 %0, %x
123*9880d681SAndroid Build Coastguard Worker  store i8 %or3, i8* %add.ptr, align 1
124*9880d681SAndroid Build Coastguard Worker  ret void
125*9880d681SAndroid Build Coastguard Worker}
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_and_index(i8* nocapture %p, i32 %i, i8 zeroext %x) nounwind {
128*9880d681SAndroid Build Coastguard Workerentry:
129*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
130*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
131*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
132*9880d681SAndroid Build Coastguard Worker  %and3 = and i8 %0, %x
133*9880d681SAndroid Build Coastguard Worker  store i8 %and3, i8* %add.ptr, align 1
134*9880d681SAndroid Build Coastguard Worker  ret void
135*9880d681SAndroid Build Coastguard Worker}
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_clrbit_index(i8* nocapture %p, i32 %i) nounwind {
138*9880d681SAndroid Build Coastguard Workerentry:
139*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
140*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
141*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
142*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %0 to i32
143*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv, 223
144*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i8
145*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
146*9880d681SAndroid Build Coastguard Worker  ret void
147*9880d681SAndroid Build Coastguard Worker}
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_setbit_index(i8* nocapture %p, i32 %i) nounwind {
150*9880d681SAndroid Build Coastguard Workerentry:
151*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
152*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
153*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
154*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %0 to i32
155*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv, 128
156*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i8
157*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
158*9880d681SAndroid Build Coastguard Worker  ret void
159*9880d681SAndroid Build Coastguard Worker}
160*9880d681SAndroid Build Coastguard Worker
161*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_add5_index5(i8* nocapture %p) nounwind {
162*9880d681SAndroid Build Coastguard Workerentry:
163*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}#5
164*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
165*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
166*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %0 to i32
167*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv, 5
168*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i8
169*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
170*9880d681SAndroid Build Coastguard Worker  ret void
171*9880d681SAndroid Build Coastguard Worker}
172*9880d681SAndroid Build Coastguard Worker
173*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_add_index5(i8* nocapture %p, i8 zeroext %x) nounwind {
174*9880d681SAndroid Build Coastguard Workerentry:
175*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}r{{[0-9]+}}
176*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %x to i32
177*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
178*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
179*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i8 %0 to i32
180*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv1, %conv
181*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i8
182*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %add.ptr, align 1
183*9880d681SAndroid Build Coastguard Worker  ret void
184*9880d681SAndroid Build Coastguard Worker}
185*9880d681SAndroid Build Coastguard Worker
186*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_sub_index5(i8* nocapture %p, i8 zeroext %x) nounwind {
187*9880d681SAndroid Build Coastguard Workerentry:
188*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}-={{ *}}r{{[0-9]+}}
189*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %x to i32
190*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
191*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
192*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i8 %0 to i32
193*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv1, %conv
194*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i8
195*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %add.ptr, align 1
196*9880d681SAndroid Build Coastguard Worker  ret void
197*9880d681SAndroid Build Coastguard Worker}
198*9880d681SAndroid Build Coastguard Worker
199*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_or_index5(i8* nocapture %p, i8 zeroext %x) nounwind {
200*9880d681SAndroid Build Coastguard Workerentry:
201*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}|={{ *}}r{{[0-9]+}}
202*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
203*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
204*9880d681SAndroid Build Coastguard Worker  %or3 = or i8 %0, %x
205*9880d681SAndroid Build Coastguard Worker  store i8 %or3, i8* %add.ptr, align 1
206*9880d681SAndroid Build Coastguard Worker  ret void
207*9880d681SAndroid Build Coastguard Worker}
208*9880d681SAndroid Build Coastguard Worker
209*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_and_index5(i8* nocapture %p, i8 zeroext %x) nounwind {
210*9880d681SAndroid Build Coastguard Workerentry:
211*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}&={{ *}}r{{[0-9]+}}
212*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
213*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
214*9880d681SAndroid Build Coastguard Worker  %and3 = and i8 %0, %x
215*9880d681SAndroid Build Coastguard Worker  store i8 %and3, i8* %add.ptr, align 1
216*9880d681SAndroid Build Coastguard Worker  ret void
217*9880d681SAndroid Build Coastguard Worker}
218*9880d681SAndroid Build Coastguard Worker
219*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_clrbit_index5(i8* nocapture %p) nounwind {
220*9880d681SAndroid Build Coastguard Workerentry:
221*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
222*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
223*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
224*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %0 to i32
225*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv, 223
226*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i8
227*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
228*9880d681SAndroid Build Coastguard Worker  ret void
229*9880d681SAndroid Build Coastguard Worker}
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_char_setbit_index5(i8* nocapture %p) nounwind {
232*9880d681SAndroid Build Coastguard Workerentry:
233*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
234*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
235*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
236*9880d681SAndroid Build Coastguard Worker  %conv = zext i8 %0 to i32
237*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv, 128
238*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i8
239*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
240*9880d681SAndroid Build Coastguard Worker  ret void
241*9880d681SAndroid Build Coastguard Worker}
242*9880d681SAndroid Build Coastguard Worker
243*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_add5(i8* nocapture %p) nounwind {
244*9880d681SAndroid Build Coastguard Workerentry:
245*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
246*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
247*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i8 %0 to i32
248*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv2, 5
249*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i8
250*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %p, align 1
251*9880d681SAndroid Build Coastguard Worker  ret void
252*9880d681SAndroid Build Coastguard Worker}
253*9880d681SAndroid Build Coastguard Worker
254*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_add(i8* nocapture %p, i8 signext %x) nounwind {
255*9880d681SAndroid Build Coastguard Workerentry:
256*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
257*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i8 %x to i32
258*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
259*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i8 %0 to i32
260*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv13, %conv4
261*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i8
262*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %p, align 1
263*9880d681SAndroid Build Coastguard Worker  ret void
264*9880d681SAndroid Build Coastguard Worker}
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_sub(i8* nocapture %p, i8 signext %x) nounwind {
267*9880d681SAndroid Build Coastguard Workerentry:
268*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
269*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i8 %x to i32
270*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
271*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i8 %0 to i32
272*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv13, %conv4
273*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i8
274*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %p, align 1
275*9880d681SAndroid Build Coastguard Worker  ret void
276*9880d681SAndroid Build Coastguard Worker}
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_or(i8* nocapture %p, i8 signext %x) nounwind {
279*9880d681SAndroid Build Coastguard Workerentry:
280*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
281*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
282*9880d681SAndroid Build Coastguard Worker  %or3 = or i8 %0, %x
283*9880d681SAndroid Build Coastguard Worker  store i8 %or3, i8* %p, align 1
284*9880d681SAndroid Build Coastguard Worker  ret void
285*9880d681SAndroid Build Coastguard Worker}
286*9880d681SAndroid Build Coastguard Worker
287*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_and(i8* nocapture %p, i8 signext %x) nounwind {
288*9880d681SAndroid Build Coastguard Workerentry:
289*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
290*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
291*9880d681SAndroid Build Coastguard Worker  %and3 = and i8 %0, %x
292*9880d681SAndroid Build Coastguard Worker  store i8 %and3, i8* %p, align 1
293*9880d681SAndroid Build Coastguard Worker  ret void
294*9880d681SAndroid Build Coastguard Worker}
295*9880d681SAndroid Build Coastguard Worker
296*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_clrbit(i8* nocapture %p) nounwind {
297*9880d681SAndroid Build Coastguard Workerentry:
298*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
299*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
300*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i8 %0 to i32
301*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv2, 223
302*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i8
303*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %p, align 1
304*9880d681SAndroid Build Coastguard Worker  ret void
305*9880d681SAndroid Build Coastguard Worker}
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_setbit(i8* nocapture %p) nounwind {
308*9880d681SAndroid Build Coastguard Workerentry:
309*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
310*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %p, align 1
311*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i8 %0 to i32
312*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv2, 128
313*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i8
314*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %p, align 1
315*9880d681SAndroid Build Coastguard Worker  ret void
316*9880d681SAndroid Build Coastguard Worker}
317*9880d681SAndroid Build Coastguard Worker
318*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_add5_index(i8* nocapture %p, i32 %i) nounwind {
319*9880d681SAndroid Build Coastguard Workerentry:
320*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
321*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
322*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
323*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i8 %0 to i32
324*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv2, 5
325*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i8
326*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
327*9880d681SAndroid Build Coastguard Worker  ret void
328*9880d681SAndroid Build Coastguard Worker}
329*9880d681SAndroid Build Coastguard Worker
330*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_add_index(i8* nocapture %p, i32 %i, i8 signext %x) nounwind {
331*9880d681SAndroid Build Coastguard Workerentry:
332*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
333*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i8 %x to i32
334*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
335*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
336*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i8 %0 to i32
337*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv13, %conv4
338*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i8
339*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %add.ptr, align 1
340*9880d681SAndroid Build Coastguard Worker  ret void
341*9880d681SAndroid Build Coastguard Worker}
342*9880d681SAndroid Build Coastguard Worker
343*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_sub_index(i8* nocapture %p, i32 %i, i8 signext %x) nounwind {
344*9880d681SAndroid Build Coastguard Workerentry:
345*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
346*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i8 %x to i32
347*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
348*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
349*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i8 %0 to i32
350*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv13, %conv4
351*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i8
352*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %add.ptr, align 1
353*9880d681SAndroid Build Coastguard Worker  ret void
354*9880d681SAndroid Build Coastguard Worker}
355*9880d681SAndroid Build Coastguard Worker
356*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_or_index(i8* nocapture %p, i32 %i, i8 signext %x) nounwind {
357*9880d681SAndroid Build Coastguard Workerentry:
358*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
359*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
360*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
361*9880d681SAndroid Build Coastguard Worker  %or3 = or i8 %0, %x
362*9880d681SAndroid Build Coastguard Worker  store i8 %or3, i8* %add.ptr, align 1
363*9880d681SAndroid Build Coastguard Worker  ret void
364*9880d681SAndroid Build Coastguard Worker}
365*9880d681SAndroid Build Coastguard Worker
366*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_and_index(i8* nocapture %p, i32 %i, i8 signext %x) nounwind {
367*9880d681SAndroid Build Coastguard Workerentry:
368*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
369*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
370*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
371*9880d681SAndroid Build Coastguard Worker  %and3 = and i8 %0, %x
372*9880d681SAndroid Build Coastguard Worker  store i8 %and3, i8* %add.ptr, align 1
373*9880d681SAndroid Build Coastguard Worker  ret void
374*9880d681SAndroid Build Coastguard Worker}
375*9880d681SAndroid Build Coastguard Worker
376*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_clrbit_index(i8* nocapture %p, i32 %i) nounwind {
377*9880d681SAndroid Build Coastguard Workerentry:
378*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
379*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
380*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
381*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i8 %0 to i32
382*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv2, 223
383*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i8
384*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
385*9880d681SAndroid Build Coastguard Worker  ret void
386*9880d681SAndroid Build Coastguard Worker}
387*9880d681SAndroid Build Coastguard Worker
388*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_setbit_index(i8* nocapture %p, i32 %i) nounwind {
389*9880d681SAndroid Build Coastguard Workerentry:
390*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
391*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 %i
392*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
393*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i8 %0 to i32
394*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv2, 128
395*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i8
396*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
397*9880d681SAndroid Build Coastguard Worker  ret void
398*9880d681SAndroid Build Coastguard Worker}
399*9880d681SAndroid Build Coastguard Worker
400*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_add5_index5(i8* nocapture %p) nounwind {
401*9880d681SAndroid Build Coastguard Workerentry:
402*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}#5
403*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
404*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
405*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i8 %0 to i32
406*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv2, 5
407*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i8
408*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
409*9880d681SAndroid Build Coastguard Worker  ret void
410*9880d681SAndroid Build Coastguard Worker}
411*9880d681SAndroid Build Coastguard Worker
412*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_add_index5(i8* nocapture %p, i8 signext %x) nounwind {
413*9880d681SAndroid Build Coastguard Workerentry:
414*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}+={{ *}}r{{[0-9]+}}
415*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i8 %x to i32
416*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
417*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
418*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i8 %0 to i32
419*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv13, %conv4
420*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i8
421*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %add.ptr, align 1
422*9880d681SAndroid Build Coastguard Worker  ret void
423*9880d681SAndroid Build Coastguard Worker}
424*9880d681SAndroid Build Coastguard Worker
425*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_sub_index5(i8* nocapture %p, i8 signext %x) nounwind {
426*9880d681SAndroid Build Coastguard Workerentry:
427*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}-={{ *}}r{{[0-9]+}}
428*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i8 %x to i32
429*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
430*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
431*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i8 %0 to i32
432*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv13, %conv4
433*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i8
434*9880d681SAndroid Build Coastguard Worker  store i8 %conv2, i8* %add.ptr, align 1
435*9880d681SAndroid Build Coastguard Worker  ret void
436*9880d681SAndroid Build Coastguard Worker}
437*9880d681SAndroid Build Coastguard Worker
438*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_or_index5(i8* nocapture %p, i8 signext %x) nounwind {
439*9880d681SAndroid Build Coastguard Workerentry:
440*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}|={{ *}}r{{[0-9]+}}
441*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
442*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
443*9880d681SAndroid Build Coastguard Worker  %or3 = or i8 %0, %x
444*9880d681SAndroid Build Coastguard Worker  store i8 %or3, i8* %add.ptr, align 1
445*9880d681SAndroid Build Coastguard Worker  ret void
446*9880d681SAndroid Build Coastguard Worker}
447*9880d681SAndroid Build Coastguard Worker
448*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_and_index5(i8* nocapture %p, i8 signext %x) nounwind {
449*9880d681SAndroid Build Coastguard Workerentry:
450*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}&={{ *}}r{{[0-9]+}}
451*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
452*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
453*9880d681SAndroid Build Coastguard Worker  %and3 = and i8 %0, %x
454*9880d681SAndroid Build Coastguard Worker  store i8 %and3, i8* %add.ptr, align 1
455*9880d681SAndroid Build Coastguard Worker  ret void
456*9880d681SAndroid Build Coastguard Worker}
457*9880d681SAndroid Build Coastguard Worker
458*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_clrbit_index5(i8* nocapture %p) nounwind {
459*9880d681SAndroid Build Coastguard Workerentry:
460*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
461*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
462*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
463*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i8 %0 to i32
464*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv2, 223
465*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i8
466*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
467*9880d681SAndroid Build Coastguard Worker  ret void
468*9880d681SAndroid Build Coastguard Worker}
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_char_setbit_index5(i8* nocapture %p) nounwind {
471*9880d681SAndroid Build Coastguard Workerentry:
472*9880d681SAndroid Build Coastguard Worker; CHECK:  memb(r{{[0-9]+}}{{ *}}+{{ *}}#5){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
473*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i8, i8* %p, i32 5
474*9880d681SAndroid Build Coastguard Worker  %0 = load i8, i8* %add.ptr, align 1
475*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i8 %0 to i32
476*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv2, 128
477*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i8
478*9880d681SAndroid Build Coastguard Worker  store i8 %conv1, i8* %add.ptr, align 1
479*9880d681SAndroid Build Coastguard Worker  ret void
480*9880d681SAndroid Build Coastguard Worker}
481*9880d681SAndroid Build Coastguard Worker
482*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_add5(i16* nocapture %p) nounwind {
483*9880d681SAndroid Build Coastguard Workerentry:
484*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
485*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
486*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %0 to i32
487*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv, 5
488*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i16
489*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %p, align 2
490*9880d681SAndroid Build Coastguard Worker  ret void
491*9880d681SAndroid Build Coastguard Worker}
492*9880d681SAndroid Build Coastguard Worker
493*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_add(i16* nocapture %p, i16 zeroext %x) nounwind {
494*9880d681SAndroid Build Coastguard Workerentry:
495*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
496*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %x to i32
497*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
498*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i16 %0 to i32
499*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv1, %conv
500*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i16
501*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %p, align 2
502*9880d681SAndroid Build Coastguard Worker  ret void
503*9880d681SAndroid Build Coastguard Worker}
504*9880d681SAndroid Build Coastguard Worker
505*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_sub(i16* nocapture %p, i16 zeroext %x) nounwind {
506*9880d681SAndroid Build Coastguard Workerentry:
507*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
508*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %x to i32
509*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
510*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i16 %0 to i32
511*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv1, %conv
512*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i16
513*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %p, align 2
514*9880d681SAndroid Build Coastguard Worker  ret void
515*9880d681SAndroid Build Coastguard Worker}
516*9880d681SAndroid Build Coastguard Worker
517*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_or(i16* nocapture %p, i16 zeroext %x) nounwind {
518*9880d681SAndroid Build Coastguard Workerentry:
519*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
520*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
521*9880d681SAndroid Build Coastguard Worker  %or3 = or i16 %0, %x
522*9880d681SAndroid Build Coastguard Worker  store i16 %or3, i16* %p, align 2
523*9880d681SAndroid Build Coastguard Worker  ret void
524*9880d681SAndroid Build Coastguard Worker}
525*9880d681SAndroid Build Coastguard Worker
526*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_and(i16* nocapture %p, i16 zeroext %x) nounwind {
527*9880d681SAndroid Build Coastguard Workerentry:
528*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
529*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
530*9880d681SAndroid Build Coastguard Worker  %and3 = and i16 %0, %x
531*9880d681SAndroid Build Coastguard Worker  store i16 %and3, i16* %p, align 2
532*9880d681SAndroid Build Coastguard Worker  ret void
533*9880d681SAndroid Build Coastguard Worker}
534*9880d681SAndroid Build Coastguard Worker
535*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_clrbit(i16* nocapture %p) nounwind {
536*9880d681SAndroid Build Coastguard Workerentry:
537*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
538*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
539*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %0 to i32
540*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv, 65503
541*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i16
542*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %p, align 2
543*9880d681SAndroid Build Coastguard Worker  ret void
544*9880d681SAndroid Build Coastguard Worker}
545*9880d681SAndroid Build Coastguard Worker
546*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_setbit(i16* nocapture %p) nounwind {
547*9880d681SAndroid Build Coastguard Workerentry:
548*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
549*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
550*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %0 to i32
551*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv, 128
552*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i16
553*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %p, align 2
554*9880d681SAndroid Build Coastguard Worker  ret void
555*9880d681SAndroid Build Coastguard Worker}
556*9880d681SAndroid Build Coastguard Worker
557*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_add5_index(i16* nocapture %p, i32 %i) nounwind {
558*9880d681SAndroid Build Coastguard Workerentry:
559*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
560*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
561*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
562*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %0 to i32
563*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv, 5
564*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i16
565*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
566*9880d681SAndroid Build Coastguard Worker  ret void
567*9880d681SAndroid Build Coastguard Worker}
568*9880d681SAndroid Build Coastguard Worker
569*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_add_index(i16* nocapture %p, i32 %i, i16 zeroext %x) nounwind {
570*9880d681SAndroid Build Coastguard Workerentry:
571*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
572*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %x to i32
573*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
574*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
575*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i16 %0 to i32
576*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv1, %conv
577*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i16
578*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %add.ptr, align 2
579*9880d681SAndroid Build Coastguard Worker  ret void
580*9880d681SAndroid Build Coastguard Worker}
581*9880d681SAndroid Build Coastguard Worker
582*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_sub_index(i16* nocapture %p, i32 %i, i16 zeroext %x) nounwind {
583*9880d681SAndroid Build Coastguard Workerentry:
584*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
585*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %x to i32
586*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
587*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
588*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i16 %0 to i32
589*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv1, %conv
590*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i16
591*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %add.ptr, align 2
592*9880d681SAndroid Build Coastguard Worker  ret void
593*9880d681SAndroid Build Coastguard Worker}
594*9880d681SAndroid Build Coastguard Worker
595*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_or_index(i16* nocapture %p, i32 %i, i16 zeroext %x) nounwind {
596*9880d681SAndroid Build Coastguard Workerentry:
597*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
598*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
599*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
600*9880d681SAndroid Build Coastguard Worker  %or3 = or i16 %0, %x
601*9880d681SAndroid Build Coastguard Worker  store i16 %or3, i16* %add.ptr, align 2
602*9880d681SAndroid Build Coastguard Worker  ret void
603*9880d681SAndroid Build Coastguard Worker}
604*9880d681SAndroid Build Coastguard Worker
605*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_and_index(i16* nocapture %p, i32 %i, i16 zeroext %x) nounwind {
606*9880d681SAndroid Build Coastguard Workerentry:
607*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
608*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
609*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
610*9880d681SAndroid Build Coastguard Worker  %and3 = and i16 %0, %x
611*9880d681SAndroid Build Coastguard Worker  store i16 %and3, i16* %add.ptr, align 2
612*9880d681SAndroid Build Coastguard Worker  ret void
613*9880d681SAndroid Build Coastguard Worker}
614*9880d681SAndroid Build Coastguard Worker
615*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_clrbit_index(i16* nocapture %p, i32 %i) nounwind {
616*9880d681SAndroid Build Coastguard Workerentry:
617*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
618*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
619*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
620*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %0 to i32
621*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv, 65503
622*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i16
623*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
624*9880d681SAndroid Build Coastguard Worker  ret void
625*9880d681SAndroid Build Coastguard Worker}
626*9880d681SAndroid Build Coastguard Worker
627*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_setbit_index(i16* nocapture %p, i32 %i) nounwind {
628*9880d681SAndroid Build Coastguard Workerentry:
629*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
630*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
631*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
632*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %0 to i32
633*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv, 128
634*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i16
635*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
636*9880d681SAndroid Build Coastguard Worker  ret void
637*9880d681SAndroid Build Coastguard Worker}
638*9880d681SAndroid Build Coastguard Worker
639*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_add5_index5(i16* nocapture %p) nounwind {
640*9880d681SAndroid Build Coastguard Workerentry:
641*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}#5
642*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
643*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
644*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %0 to i32
645*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv, 5
646*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i16
647*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
648*9880d681SAndroid Build Coastguard Worker  ret void
649*9880d681SAndroid Build Coastguard Worker}
650*9880d681SAndroid Build Coastguard Worker
651*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_add_index5(i16* nocapture %p, i16 zeroext %x) nounwind {
652*9880d681SAndroid Build Coastguard Workerentry:
653*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}r{{[0-9]+}}
654*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %x to i32
655*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
656*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
657*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i16 %0 to i32
658*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv1, %conv
659*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i16
660*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %add.ptr, align 2
661*9880d681SAndroid Build Coastguard Worker  ret void
662*9880d681SAndroid Build Coastguard Worker}
663*9880d681SAndroid Build Coastguard Worker
664*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_sub_index5(i16* nocapture %p, i16 zeroext %x) nounwind {
665*9880d681SAndroid Build Coastguard Workerentry:
666*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}-={{ *}}r{{[0-9]+}}
667*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %x to i32
668*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
669*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
670*9880d681SAndroid Build Coastguard Worker  %conv1 = zext i16 %0 to i32
671*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv1, %conv
672*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i16
673*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %add.ptr, align 2
674*9880d681SAndroid Build Coastguard Worker  ret void
675*9880d681SAndroid Build Coastguard Worker}
676*9880d681SAndroid Build Coastguard Worker
677*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_or_index5(i16* nocapture %p, i16 zeroext %x) nounwind {
678*9880d681SAndroid Build Coastguard Workerentry:
679*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}|={{ *}}r{{[0-9]+}}
680*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
681*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
682*9880d681SAndroid Build Coastguard Worker  %or3 = or i16 %0, %x
683*9880d681SAndroid Build Coastguard Worker  store i16 %or3, i16* %add.ptr, align 2
684*9880d681SAndroid Build Coastguard Worker  ret void
685*9880d681SAndroid Build Coastguard Worker}
686*9880d681SAndroid Build Coastguard Worker
687*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_and_index5(i16* nocapture %p, i16 zeroext %x) nounwind {
688*9880d681SAndroid Build Coastguard Workerentry:
689*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}&={{ *}}r{{[0-9]+}}
690*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
691*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
692*9880d681SAndroid Build Coastguard Worker  %and3 = and i16 %0, %x
693*9880d681SAndroid Build Coastguard Worker  store i16 %and3, i16* %add.ptr, align 2
694*9880d681SAndroid Build Coastguard Worker  ret void
695*9880d681SAndroid Build Coastguard Worker}
696*9880d681SAndroid Build Coastguard Worker
697*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_clrbit_index5(i16* nocapture %p) nounwind {
698*9880d681SAndroid Build Coastguard Workerentry:
699*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
700*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
701*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
702*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %0 to i32
703*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv, 65503
704*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i16
705*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
706*9880d681SAndroid Build Coastguard Worker  ret void
707*9880d681SAndroid Build Coastguard Worker}
708*9880d681SAndroid Build Coastguard Worker
709*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_short_setbit_index5(i16* nocapture %p) nounwind {
710*9880d681SAndroid Build Coastguard Workerentry:
711*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
712*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
713*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
714*9880d681SAndroid Build Coastguard Worker  %conv = zext i16 %0 to i32
715*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv, 128
716*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i16
717*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
718*9880d681SAndroid Build Coastguard Worker  ret void
719*9880d681SAndroid Build Coastguard Worker}
720*9880d681SAndroid Build Coastguard Worker
721*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_add5(i16* nocapture %p) nounwind {
722*9880d681SAndroid Build Coastguard Workerentry:
723*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
724*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
725*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i16 %0 to i32
726*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv2, 5
727*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i16
728*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %p, align 2
729*9880d681SAndroid Build Coastguard Worker  ret void
730*9880d681SAndroid Build Coastguard Worker}
731*9880d681SAndroid Build Coastguard Worker
732*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_add(i16* nocapture %p, i16 signext %x) nounwind {
733*9880d681SAndroid Build Coastguard Workerentry:
734*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
735*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i16 %x to i32
736*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
737*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i16 %0 to i32
738*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv13, %conv4
739*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i16
740*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %p, align 2
741*9880d681SAndroid Build Coastguard Worker  ret void
742*9880d681SAndroid Build Coastguard Worker}
743*9880d681SAndroid Build Coastguard Worker
744*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_sub(i16* nocapture %p, i16 signext %x) nounwind {
745*9880d681SAndroid Build Coastguard Workerentry:
746*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
747*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i16 %x to i32
748*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
749*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i16 %0 to i32
750*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv13, %conv4
751*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i16
752*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %p, align 2
753*9880d681SAndroid Build Coastguard Worker  ret void
754*9880d681SAndroid Build Coastguard Worker}
755*9880d681SAndroid Build Coastguard Worker
756*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_or(i16* nocapture %p, i16 signext %x) nounwind {
757*9880d681SAndroid Build Coastguard Workerentry:
758*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
759*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
760*9880d681SAndroid Build Coastguard Worker  %or3 = or i16 %0, %x
761*9880d681SAndroid Build Coastguard Worker  store i16 %or3, i16* %p, align 2
762*9880d681SAndroid Build Coastguard Worker  ret void
763*9880d681SAndroid Build Coastguard Worker}
764*9880d681SAndroid Build Coastguard Worker
765*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_and(i16* nocapture %p, i16 signext %x) nounwind {
766*9880d681SAndroid Build Coastguard Workerentry:
767*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
768*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
769*9880d681SAndroid Build Coastguard Worker  %and3 = and i16 %0, %x
770*9880d681SAndroid Build Coastguard Worker  store i16 %and3, i16* %p, align 2
771*9880d681SAndroid Build Coastguard Worker  ret void
772*9880d681SAndroid Build Coastguard Worker}
773*9880d681SAndroid Build Coastguard Worker
774*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_clrbit(i16* nocapture %p) nounwind {
775*9880d681SAndroid Build Coastguard Workerentry:
776*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
777*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
778*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i16 %0 to i32
779*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv2, 65503
780*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i16
781*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %p, align 2
782*9880d681SAndroid Build Coastguard Worker  ret void
783*9880d681SAndroid Build Coastguard Worker}
784*9880d681SAndroid Build Coastguard Worker
785*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_setbit(i16* nocapture %p) nounwind {
786*9880d681SAndroid Build Coastguard Workerentry:
787*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
788*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %p, align 2
789*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i16 %0 to i32
790*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv2, 128
791*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i16
792*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %p, align 2
793*9880d681SAndroid Build Coastguard Worker  ret void
794*9880d681SAndroid Build Coastguard Worker}
795*9880d681SAndroid Build Coastguard Worker
796*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_add5_index(i16* nocapture %p, i32 %i) nounwind {
797*9880d681SAndroid Build Coastguard Workerentry:
798*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
799*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
800*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
801*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i16 %0 to i32
802*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv2, 5
803*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i16
804*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
805*9880d681SAndroid Build Coastguard Worker  ret void
806*9880d681SAndroid Build Coastguard Worker}
807*9880d681SAndroid Build Coastguard Worker
808*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_add_index(i16* nocapture %p, i32 %i, i16 signext %x) nounwind {
809*9880d681SAndroid Build Coastguard Workerentry:
810*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
811*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i16 %x to i32
812*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
813*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
814*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i16 %0 to i32
815*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv13, %conv4
816*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i16
817*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %add.ptr, align 2
818*9880d681SAndroid Build Coastguard Worker  ret void
819*9880d681SAndroid Build Coastguard Worker}
820*9880d681SAndroid Build Coastguard Worker
821*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_sub_index(i16* nocapture %p, i32 %i, i16 signext %x) nounwind {
822*9880d681SAndroid Build Coastguard Workerentry:
823*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
824*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i16 %x to i32
825*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
826*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
827*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i16 %0 to i32
828*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv13, %conv4
829*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i16
830*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %add.ptr, align 2
831*9880d681SAndroid Build Coastguard Worker  ret void
832*9880d681SAndroid Build Coastguard Worker}
833*9880d681SAndroid Build Coastguard Worker
834*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_or_index(i16* nocapture %p, i32 %i, i16 signext %x) nounwind {
835*9880d681SAndroid Build Coastguard Workerentry:
836*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
837*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
838*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
839*9880d681SAndroid Build Coastguard Worker  %or3 = or i16 %0, %x
840*9880d681SAndroid Build Coastguard Worker  store i16 %or3, i16* %add.ptr, align 2
841*9880d681SAndroid Build Coastguard Worker  ret void
842*9880d681SAndroid Build Coastguard Worker}
843*9880d681SAndroid Build Coastguard Worker
844*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_and_index(i16* nocapture %p, i32 %i, i16 signext %x) nounwind {
845*9880d681SAndroid Build Coastguard Workerentry:
846*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
847*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
848*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
849*9880d681SAndroid Build Coastguard Worker  %and3 = and i16 %0, %x
850*9880d681SAndroid Build Coastguard Worker  store i16 %and3, i16* %add.ptr, align 2
851*9880d681SAndroid Build Coastguard Worker  ret void
852*9880d681SAndroid Build Coastguard Worker}
853*9880d681SAndroid Build Coastguard Worker
854*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_clrbit_index(i16* nocapture %p, i32 %i) nounwind {
855*9880d681SAndroid Build Coastguard Workerentry:
856*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
857*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
858*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
859*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i16 %0 to i32
860*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv2, 65503
861*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i16
862*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
863*9880d681SAndroid Build Coastguard Worker  ret void
864*9880d681SAndroid Build Coastguard Worker}
865*9880d681SAndroid Build Coastguard Worker
866*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_setbit_index(i16* nocapture %p, i32 %i) nounwind {
867*9880d681SAndroid Build Coastguard Workerentry:
868*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
869*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 %i
870*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
871*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i16 %0 to i32
872*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv2, 128
873*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i16
874*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
875*9880d681SAndroid Build Coastguard Worker  ret void
876*9880d681SAndroid Build Coastguard Worker}
877*9880d681SAndroid Build Coastguard Worker
878*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_add5_index5(i16* nocapture %p) nounwind {
879*9880d681SAndroid Build Coastguard Workerentry:
880*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}#5
881*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
882*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
883*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i16 %0 to i32
884*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv2, 5
885*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %add to i16
886*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
887*9880d681SAndroid Build Coastguard Worker  ret void
888*9880d681SAndroid Build Coastguard Worker}
889*9880d681SAndroid Build Coastguard Worker
890*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_add_index5(i16* nocapture %p, i16 signext %x) nounwind {
891*9880d681SAndroid Build Coastguard Workerentry:
892*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}+={{ *}}r{{[0-9]+}}
893*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i16 %x to i32
894*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
895*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
896*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i16 %0 to i32
897*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %conv13, %conv4
898*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %add to i16
899*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %add.ptr, align 2
900*9880d681SAndroid Build Coastguard Worker  ret void
901*9880d681SAndroid Build Coastguard Worker}
902*9880d681SAndroid Build Coastguard Worker
903*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_sub_index5(i16* nocapture %p, i16 signext %x) nounwind {
904*9880d681SAndroid Build Coastguard Workerentry:
905*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}-={{ *}}r{{[0-9]+}}
906*9880d681SAndroid Build Coastguard Worker  %conv4 = zext i16 %x to i32
907*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
908*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
909*9880d681SAndroid Build Coastguard Worker  %conv13 = zext i16 %0 to i32
910*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %conv13, %conv4
911*9880d681SAndroid Build Coastguard Worker  %conv2 = trunc i32 %sub to i16
912*9880d681SAndroid Build Coastguard Worker  store i16 %conv2, i16* %add.ptr, align 2
913*9880d681SAndroid Build Coastguard Worker  ret void
914*9880d681SAndroid Build Coastguard Worker}
915*9880d681SAndroid Build Coastguard Worker
916*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_or_index5(i16* nocapture %p, i16 signext %x) nounwind {
917*9880d681SAndroid Build Coastguard Workerentry:
918*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}|={{ *}}r{{[0-9]+}}
919*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
920*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
921*9880d681SAndroid Build Coastguard Worker  %or3 = or i16 %0, %x
922*9880d681SAndroid Build Coastguard Worker  store i16 %or3, i16* %add.ptr, align 2
923*9880d681SAndroid Build Coastguard Worker  ret void
924*9880d681SAndroid Build Coastguard Worker}
925*9880d681SAndroid Build Coastguard Worker
926*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_and_index5(i16* nocapture %p, i16 signext %x) nounwind {
927*9880d681SAndroid Build Coastguard Workerentry:
928*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}&={{ *}}r{{[0-9]+}}
929*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
930*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
931*9880d681SAndroid Build Coastguard Worker  %and3 = and i16 %0, %x
932*9880d681SAndroid Build Coastguard Worker  store i16 %and3, i16* %add.ptr, align 2
933*9880d681SAndroid Build Coastguard Worker  ret void
934*9880d681SAndroid Build Coastguard Worker}
935*9880d681SAndroid Build Coastguard Worker
936*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_clrbit_index5(i16* nocapture %p) nounwind {
937*9880d681SAndroid Build Coastguard Workerentry:
938*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
939*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
940*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
941*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i16 %0 to i32
942*9880d681SAndroid Build Coastguard Worker  %and = and i32 %conv2, 65503
943*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %and to i16
944*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
945*9880d681SAndroid Build Coastguard Worker  ret void
946*9880d681SAndroid Build Coastguard Worker}
947*9880d681SAndroid Build Coastguard Worker
948*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_short_setbit_index5(i16* nocapture %p) nounwind {
949*9880d681SAndroid Build Coastguard Workerentry:
950*9880d681SAndroid Build Coastguard Worker; CHECK:  memh(r{{[0-9]+}}{{ *}}+{{ *}}#10){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
951*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i16, i16* %p, i32 5
952*9880d681SAndroid Build Coastguard Worker  %0 = load i16, i16* %add.ptr, align 2
953*9880d681SAndroid Build Coastguard Worker  %conv2 = zext i16 %0 to i32
954*9880d681SAndroid Build Coastguard Worker  %or = or i32 %conv2, 128
955*9880d681SAndroid Build Coastguard Worker  %conv1 = trunc i32 %or to i16
956*9880d681SAndroid Build Coastguard Worker  store i16 %conv1, i16* %add.ptr, align 2
957*9880d681SAndroid Build Coastguard Worker  ret void
958*9880d681SAndroid Build Coastguard Worker}
959*9880d681SAndroid Build Coastguard Worker
960*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_add5(i32* nocapture %p) nounwind {
961*9880d681SAndroid Build Coastguard Workerentry:
962*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
963*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
964*9880d681SAndroid Build Coastguard Worker  %add = add i32 %0, 5
965*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %p, align 4
966*9880d681SAndroid Build Coastguard Worker  ret void
967*9880d681SAndroid Build Coastguard Worker}
968*9880d681SAndroid Build Coastguard Worker
969*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_add(i32* nocapture %p, i32 %x) nounwind {
970*9880d681SAndroid Build Coastguard Workerentry:
971*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
972*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
973*9880d681SAndroid Build Coastguard Worker  %add = add i32 %0, %x
974*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %p, align 4
975*9880d681SAndroid Build Coastguard Worker  ret void
976*9880d681SAndroid Build Coastguard Worker}
977*9880d681SAndroid Build Coastguard Worker
978*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_sub(i32* nocapture %p, i32 %x) nounwind {
979*9880d681SAndroid Build Coastguard Workerentry:
980*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
981*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
982*9880d681SAndroid Build Coastguard Worker  %sub = sub i32 %0, %x
983*9880d681SAndroid Build Coastguard Worker  store i32 %sub, i32* %p, align 4
984*9880d681SAndroid Build Coastguard Worker  ret void
985*9880d681SAndroid Build Coastguard Worker}
986*9880d681SAndroid Build Coastguard Worker
987*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_or(i32* nocapture %p, i32 %x) nounwind {
988*9880d681SAndroid Build Coastguard Workerentry:
989*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
990*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
991*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, %x
992*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %p, align 4
993*9880d681SAndroid Build Coastguard Worker  ret void
994*9880d681SAndroid Build Coastguard Worker}
995*9880d681SAndroid Build Coastguard Worker
996*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_and(i32* nocapture %p, i32 %x) nounwind {
997*9880d681SAndroid Build Coastguard Workerentry:
998*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
999*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
1000*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, %x
1001*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %p, align 4
1002*9880d681SAndroid Build Coastguard Worker  ret void
1003*9880d681SAndroid Build Coastguard Worker}
1004*9880d681SAndroid Build Coastguard Worker
1005*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_clrbit(i32* nocapture %p) nounwind {
1006*9880d681SAndroid Build Coastguard Workerentry:
1007*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
1008*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
1009*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, -33
1010*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %p, align 4
1011*9880d681SAndroid Build Coastguard Worker  ret void
1012*9880d681SAndroid Build Coastguard Worker}
1013*9880d681SAndroid Build Coastguard Worker
1014*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_setbit(i32* nocapture %p) nounwind {
1015*9880d681SAndroid Build Coastguard Workerentry:
1016*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
1017*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
1018*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, 128
1019*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %p, align 4
1020*9880d681SAndroid Build Coastguard Worker  ret void
1021*9880d681SAndroid Build Coastguard Worker}
1022*9880d681SAndroid Build Coastguard Worker
1023*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_add5_index(i32* nocapture %p, i32 %i) nounwind {
1024*9880d681SAndroid Build Coastguard Workerentry:
1025*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
1026*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1027*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1028*9880d681SAndroid Build Coastguard Worker  %add = add i32 %0, 5
1029*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %add.ptr, align 4
1030*9880d681SAndroid Build Coastguard Worker  ret void
1031*9880d681SAndroid Build Coastguard Worker}
1032*9880d681SAndroid Build Coastguard Worker
1033*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_add_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1034*9880d681SAndroid Build Coastguard Workerentry:
1035*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
1036*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1037*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1038*9880d681SAndroid Build Coastguard Worker  %add = add i32 %0, %x
1039*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %add.ptr, align 4
1040*9880d681SAndroid Build Coastguard Worker  ret void
1041*9880d681SAndroid Build Coastguard Worker}
1042*9880d681SAndroid Build Coastguard Worker
1043*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_sub_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1044*9880d681SAndroid Build Coastguard Workerentry:
1045*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
1046*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1047*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1048*9880d681SAndroid Build Coastguard Worker  %sub = sub i32 %0, %x
1049*9880d681SAndroid Build Coastguard Worker  store i32 %sub, i32* %add.ptr, align 4
1050*9880d681SAndroid Build Coastguard Worker  ret void
1051*9880d681SAndroid Build Coastguard Worker}
1052*9880d681SAndroid Build Coastguard Worker
1053*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_or_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1054*9880d681SAndroid Build Coastguard Workerentry:
1055*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
1056*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1057*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1058*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, %x
1059*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %add.ptr, align 4
1060*9880d681SAndroid Build Coastguard Worker  ret void
1061*9880d681SAndroid Build Coastguard Worker}
1062*9880d681SAndroid Build Coastguard Worker
1063*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_and_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1064*9880d681SAndroid Build Coastguard Workerentry:
1065*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
1066*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1067*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1068*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, %x
1069*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %add.ptr, align 4
1070*9880d681SAndroid Build Coastguard Worker  ret void
1071*9880d681SAndroid Build Coastguard Worker}
1072*9880d681SAndroid Build Coastguard Worker
1073*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_clrbit_index(i32* nocapture %p, i32 %i) nounwind {
1074*9880d681SAndroid Build Coastguard Workerentry:
1075*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
1076*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1077*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1078*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, -33
1079*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %add.ptr, align 4
1080*9880d681SAndroid Build Coastguard Worker  ret void
1081*9880d681SAndroid Build Coastguard Worker}
1082*9880d681SAndroid Build Coastguard Worker
1083*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_setbit_index(i32* nocapture %p, i32 %i) nounwind {
1084*9880d681SAndroid Build Coastguard Workerentry:
1085*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
1086*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1087*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1088*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, 128
1089*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %add.ptr, align 4
1090*9880d681SAndroid Build Coastguard Worker  ret void
1091*9880d681SAndroid Build Coastguard Worker}
1092*9880d681SAndroid Build Coastguard Worker
1093*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_add5_index5(i32* nocapture %p) nounwind {
1094*9880d681SAndroid Build Coastguard Workerentry:
1095*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}#5
1096*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1097*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1098*9880d681SAndroid Build Coastguard Worker  %add = add i32 %0, 5
1099*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %add.ptr, align 4
1100*9880d681SAndroid Build Coastguard Worker  ret void
1101*9880d681SAndroid Build Coastguard Worker}
1102*9880d681SAndroid Build Coastguard Worker
1103*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_add_index5(i32* nocapture %p, i32 %x) nounwind {
1104*9880d681SAndroid Build Coastguard Workerentry:
1105*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}r{{[0-9]+}}
1106*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1107*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1108*9880d681SAndroid Build Coastguard Worker  %add = add i32 %0, %x
1109*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %add.ptr, align 4
1110*9880d681SAndroid Build Coastguard Worker  ret void
1111*9880d681SAndroid Build Coastguard Worker}
1112*9880d681SAndroid Build Coastguard Worker
1113*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_sub_index5(i32* nocapture %p, i32 %x) nounwind {
1114*9880d681SAndroid Build Coastguard Workerentry:
1115*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}-={{ *}}r{{[0-9]+}}
1116*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1117*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1118*9880d681SAndroid Build Coastguard Worker  %sub = sub i32 %0, %x
1119*9880d681SAndroid Build Coastguard Worker  store i32 %sub, i32* %add.ptr, align 4
1120*9880d681SAndroid Build Coastguard Worker  ret void
1121*9880d681SAndroid Build Coastguard Worker}
1122*9880d681SAndroid Build Coastguard Worker
1123*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_or_index5(i32* nocapture %p, i32 %x) nounwind {
1124*9880d681SAndroid Build Coastguard Workerentry:
1125*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}|={{ *}}r{{[0-9]+}}
1126*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1127*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1128*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, %x
1129*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %add.ptr, align 4
1130*9880d681SAndroid Build Coastguard Worker  ret void
1131*9880d681SAndroid Build Coastguard Worker}
1132*9880d681SAndroid Build Coastguard Worker
1133*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_and_index5(i32* nocapture %p, i32 %x) nounwind {
1134*9880d681SAndroid Build Coastguard Workerentry:
1135*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}&={{ *}}r{{[0-9]+}}
1136*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1137*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1138*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, %x
1139*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %add.ptr, align 4
1140*9880d681SAndroid Build Coastguard Worker  ret void
1141*9880d681SAndroid Build Coastguard Worker}
1142*9880d681SAndroid Build Coastguard Worker
1143*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_clrbit_index5(i32* nocapture %p) nounwind {
1144*9880d681SAndroid Build Coastguard Workerentry:
1145*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
1146*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1147*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1148*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, -33
1149*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %add.ptr, align 4
1150*9880d681SAndroid Build Coastguard Worker  ret void
1151*9880d681SAndroid Build Coastguard Worker}
1152*9880d681SAndroid Build Coastguard Worker
1153*9880d681SAndroid Build Coastguard Workerdefine void @memop_signed_int_setbit_index5(i32* nocapture %p) nounwind {
1154*9880d681SAndroid Build Coastguard Workerentry:
1155*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
1156*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1157*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1158*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, 128
1159*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %add.ptr, align 4
1160*9880d681SAndroid Build Coastguard Worker  ret void
1161*9880d681SAndroid Build Coastguard Worker}
1162*9880d681SAndroid Build Coastguard Worker
1163*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_add5(i32* nocapture %p) nounwind {
1164*9880d681SAndroid Build Coastguard Workerentry:
1165*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
1166*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
1167*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %0, 5
1168*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %p, align 4
1169*9880d681SAndroid Build Coastguard Worker  ret void
1170*9880d681SAndroid Build Coastguard Worker}
1171*9880d681SAndroid Build Coastguard Worker
1172*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_add(i32* nocapture %p, i32 %x) nounwind {
1173*9880d681SAndroid Build Coastguard Workerentry:
1174*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
1175*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
1176*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %0, %x
1177*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %p, align 4
1178*9880d681SAndroid Build Coastguard Worker  ret void
1179*9880d681SAndroid Build Coastguard Worker}
1180*9880d681SAndroid Build Coastguard Worker
1181*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_sub(i32* nocapture %p, i32 %x) nounwind {
1182*9880d681SAndroid Build Coastguard Workerentry:
1183*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
1184*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
1185*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %0, %x
1186*9880d681SAndroid Build Coastguard Worker  store i32 %sub, i32* %p, align 4
1187*9880d681SAndroid Build Coastguard Worker  ret void
1188*9880d681SAndroid Build Coastguard Worker}
1189*9880d681SAndroid Build Coastguard Worker
1190*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_or(i32* nocapture %p, i32 %x) nounwind {
1191*9880d681SAndroid Build Coastguard Workerentry:
1192*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
1193*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
1194*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, %x
1195*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %p, align 4
1196*9880d681SAndroid Build Coastguard Worker  ret void
1197*9880d681SAndroid Build Coastguard Worker}
1198*9880d681SAndroid Build Coastguard Worker
1199*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_and(i32* nocapture %p, i32 %x) nounwind {
1200*9880d681SAndroid Build Coastguard Workerentry:
1201*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
1202*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
1203*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, %x
1204*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %p, align 4
1205*9880d681SAndroid Build Coastguard Worker  ret void
1206*9880d681SAndroid Build Coastguard Worker}
1207*9880d681SAndroid Build Coastguard Worker
1208*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_clrbit(i32* nocapture %p) nounwind {
1209*9880d681SAndroid Build Coastguard Workerentry:
1210*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
1211*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
1212*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, -33
1213*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %p, align 4
1214*9880d681SAndroid Build Coastguard Worker  ret void
1215*9880d681SAndroid Build Coastguard Worker}
1216*9880d681SAndroid Build Coastguard Worker
1217*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_setbit(i32* nocapture %p) nounwind {
1218*9880d681SAndroid Build Coastguard Workerentry:
1219*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
1220*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %p, align 4
1221*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, 128
1222*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %p, align 4
1223*9880d681SAndroid Build Coastguard Worker  ret void
1224*9880d681SAndroid Build Coastguard Worker}
1225*9880d681SAndroid Build Coastguard Worker
1226*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_add5_index(i32* nocapture %p, i32 %i) nounwind {
1227*9880d681SAndroid Build Coastguard Workerentry:
1228*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}#5
1229*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1230*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1231*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %0, 5
1232*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %add.ptr, align 4
1233*9880d681SAndroid Build Coastguard Worker  ret void
1234*9880d681SAndroid Build Coastguard Worker}
1235*9880d681SAndroid Build Coastguard Worker
1236*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_add_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1237*9880d681SAndroid Build Coastguard Workerentry:
1238*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}+={{ *}}r{{[0-9]+}}
1239*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1240*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1241*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %0, %x
1242*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %add.ptr, align 4
1243*9880d681SAndroid Build Coastguard Worker  ret void
1244*9880d681SAndroid Build Coastguard Worker}
1245*9880d681SAndroid Build Coastguard Worker
1246*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_sub_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1247*9880d681SAndroid Build Coastguard Workerentry:
1248*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}-={{ *}}r{{[0-9]+}}
1249*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1250*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1251*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %0, %x
1252*9880d681SAndroid Build Coastguard Worker  store i32 %sub, i32* %add.ptr, align 4
1253*9880d681SAndroid Build Coastguard Worker  ret void
1254*9880d681SAndroid Build Coastguard Worker}
1255*9880d681SAndroid Build Coastguard Worker
1256*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_or_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1257*9880d681SAndroid Build Coastguard Workerentry:
1258*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}|={{ *}}r{{[0-9]+}}
1259*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1260*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1261*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, %x
1262*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %add.ptr, align 4
1263*9880d681SAndroid Build Coastguard Worker  ret void
1264*9880d681SAndroid Build Coastguard Worker}
1265*9880d681SAndroid Build Coastguard Worker
1266*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_and_index(i32* nocapture %p, i32 %i, i32 %x) nounwind {
1267*9880d681SAndroid Build Coastguard Workerentry:
1268*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}&={{ *}}r{{[0-9]+}}
1269*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1270*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1271*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, %x
1272*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %add.ptr, align 4
1273*9880d681SAndroid Build Coastguard Worker  ret void
1274*9880d681SAndroid Build Coastguard Worker}
1275*9880d681SAndroid Build Coastguard Worker
1276*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_clrbit_index(i32* nocapture %p, i32 %i) nounwind {
1277*9880d681SAndroid Build Coastguard Workerentry:
1278*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
1279*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1280*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1281*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, -33
1282*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %add.ptr, align 4
1283*9880d681SAndroid Build Coastguard Worker  ret void
1284*9880d681SAndroid Build Coastguard Worker}
1285*9880d681SAndroid Build Coastguard Worker
1286*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_setbit_index(i32* nocapture %p, i32 %i) nounwind {
1287*9880d681SAndroid Build Coastguard Workerentry:
1288*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#0){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
1289*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 %i
1290*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1291*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, 128
1292*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %add.ptr, align 4
1293*9880d681SAndroid Build Coastguard Worker  ret void
1294*9880d681SAndroid Build Coastguard Worker}
1295*9880d681SAndroid Build Coastguard Worker
1296*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_add5_index5(i32* nocapture %p) nounwind {
1297*9880d681SAndroid Build Coastguard Workerentry:
1298*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}#5
1299*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1300*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1301*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %0, 5
1302*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %add.ptr, align 4
1303*9880d681SAndroid Build Coastguard Worker  ret void
1304*9880d681SAndroid Build Coastguard Worker}
1305*9880d681SAndroid Build Coastguard Worker
1306*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_add_index5(i32* nocapture %p, i32 %x) nounwind {
1307*9880d681SAndroid Build Coastguard Workerentry:
1308*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}+={{ *}}r{{[0-9]+}}
1309*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1310*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1311*9880d681SAndroid Build Coastguard Worker  %add = add nsw i32 %0, %x
1312*9880d681SAndroid Build Coastguard Worker  store i32 %add, i32* %add.ptr, align 4
1313*9880d681SAndroid Build Coastguard Worker  ret void
1314*9880d681SAndroid Build Coastguard Worker}
1315*9880d681SAndroid Build Coastguard Worker
1316*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_sub_index5(i32* nocapture %p, i32 %x) nounwind {
1317*9880d681SAndroid Build Coastguard Workerentry:
1318*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}-={{ *}}r{{[0-9]+}}
1319*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1320*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1321*9880d681SAndroid Build Coastguard Worker  %sub = sub nsw i32 %0, %x
1322*9880d681SAndroid Build Coastguard Worker  store i32 %sub, i32* %add.ptr, align 4
1323*9880d681SAndroid Build Coastguard Worker  ret void
1324*9880d681SAndroid Build Coastguard Worker}
1325*9880d681SAndroid Build Coastguard Worker
1326*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_or_index5(i32* nocapture %p, i32 %x) nounwind {
1327*9880d681SAndroid Build Coastguard Workerentry:
1328*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}|={{ *}}r{{[0-9]+}}
1329*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1330*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1331*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, %x
1332*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %add.ptr, align 4
1333*9880d681SAndroid Build Coastguard Worker  ret void
1334*9880d681SAndroid Build Coastguard Worker}
1335*9880d681SAndroid Build Coastguard Worker
1336*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_and_index5(i32* nocapture %p, i32 %x) nounwind {
1337*9880d681SAndroid Build Coastguard Workerentry:
1338*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}&={{ *}}r{{[0-9]+}}
1339*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1340*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1341*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, %x
1342*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %add.ptr, align 4
1343*9880d681SAndroid Build Coastguard Worker  ret void
1344*9880d681SAndroid Build Coastguard Worker}
1345*9880d681SAndroid Build Coastguard Worker
1346*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_clrbit_index5(i32* nocapture %p) nounwind {
1347*9880d681SAndroid Build Coastguard Workerentry:
1348*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}clrbit({{ *}}#5{{ *}})
1349*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1350*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1351*9880d681SAndroid Build Coastguard Worker  %and = and i32 %0, -33
1352*9880d681SAndroid Build Coastguard Worker  store i32 %and, i32* %add.ptr, align 4
1353*9880d681SAndroid Build Coastguard Worker  ret void
1354*9880d681SAndroid Build Coastguard Worker}
1355*9880d681SAndroid Build Coastguard Worker
1356*9880d681SAndroid Build Coastguard Workerdefine void @memop_unsigned_int_setbit_index5(i32* nocapture %p) nounwind {
1357*9880d681SAndroid Build Coastguard Workerentry:
1358*9880d681SAndroid Build Coastguard Worker; CHECK:  memw(r{{[0-9]+}}{{ *}}+{{ *}}#20){{ *}}={{ *}}setbit({{ *}}#7{{ *}})
1359*9880d681SAndroid Build Coastguard Worker  %add.ptr = getelementptr inbounds i32, i32* %p, i32 5
1360*9880d681SAndroid Build Coastguard Worker  %0 = load i32, i32* %add.ptr, align 4
1361*9880d681SAndroid Build Coastguard Worker  %or = or i32 %0, 128
1362*9880d681SAndroid Build Coastguard Worker  store i32 %or, i32* %add.ptr, align 4
1363*9880d681SAndroid Build Coastguard Worker  ret void
1364*9880d681SAndroid Build Coastguard Worker}
1365