allocation.ll revision e0cdd4f6895597e3ab36253cc085ae01685ee1df
1target datalayout = "e-m:e-i64:64-i128:128-n32:64-S128"
2target triple = "aarch64-linux-android"
3
4%struct.rs_allocation = type { i64*, i64*, i64*, i64* }
5
6declare i8* @rsOffset(%struct.rs_allocation* %a, i32 %sizeOf, i32 %x, i32 %y, i32 %z)
7declare i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z)
8
9; The loads and stores in this file are annotated with RenderScript-specific
10; information for the type based alias analysis, such that the TBAA analysis
11; understands that loads and stores from two allocations with different types
12; can never access the same memory element. This is different from C, where
13; a char or uchar load/store is special as it can alias with about everything.
14;
15; The TBAA tree in this file has the the node "RenderScript TBAA" as its root.
16; This means all loads/stores that share this common root can be proven to not
17; alias. However, the alias analysis still has to assume MayAlias between
18; memory accesses in this file and memory accesses annotated with the C/C++
19; TBAA metadata.
20; If we can ensure that all accesses to elements loaded from RenderScript
21; allocations are either annotated with the RenderScript TBAA information or
22; not annotated at all, but never annotated with the C/C++ metadata, we
23; can add the RenderScript TBAA tree under the C/C++ TBAA tree. This enables
24; then the TBAA to prove that an access to data from the RenderScript allocation
25; does not alias with a load/store accessing something not part of a RenderScript
26; allocation.
27
28
29!14 = metadata !{metadata !"RenderScript TBAA"}
30!15 = metadata !{metadata !"allocation", metadata !14}
31
32!21 = metadata !{metadata !"char", metadata !15}
33define void @rsSetElementAtImpl_char(%struct.rs_allocation* %a, i8 signext %val, i32 %x, i32 %y, i32 %z) #2 {
34  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 1, i32 %x, i32 %y, i32 %z) #10
35  store i8 %val, i8* %1, align 1, !tbaa !21
36  ret void
37}
38
39define signext i8 @rsGetElementAtImpl_char(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
40  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 1, i32 %x, i32 %y, i32 %z) #10
41  %2 = load i8* %1, align 1, !tbaa !21
42  ret i8 %2
43}
44
45!22 = metadata !{metadata !"char2", metadata !15}
46define void @rsSetElementAtImpl_char2(%struct.rs_allocation* %a, i16 %val, i32 %x, i32 %y, i32 %z) #2 {
47  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 2, i32 %x, i32 %y, i32 %z) #10
48  %2 = bitcast i8* %1 to <2 x i8>*
49  %3 = bitcast i16 %val to <2 x i8>
50  store <2 x i8> %3, <2 x i8>* %2, align 2, !tbaa !26
51  ret void
52}
53
54define <2 x i8> @rsGetElementAtImpl_char2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
55  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 2, i32 %x, i32 %y, i32 %z) #10
56  %2 = bitcast i8* %1 to <2 x i8>*
57  %3 = load <2 x i8>* %2, align 2, !tbaa !22
58  ret <2 x i8> %3
59}
60
61!23 = metadata !{metadata !"char3", metadata !15}
62define void @rsSetElementAtImpl_char3(%struct.rs_allocation* %a, i32 %val, i32 %x, i32 %y, i32 %z) #2 {
63  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
64  %2 = bitcast i32 %val to <4 x i8>
65  %3 = shufflevector <4 x i8> %2, <4 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
66  %4 = bitcast i8* %1 to <4 x i8>*
67  store <4 x i8> %3, <4 x i8>* %4, align 4, !tbaa !27
68  ret void
69}
70
71define <3 x i8> @rsGetElementAtImpl_char3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
72  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
73  %2 = bitcast i8* %1 to <4 x i8>*
74  %3 = load <4 x i8>* %2, align 4, !tbaa !23
75  %4 = shufflevector <4 x i8> %3, <4 x i8> undef, <3 x i32> <i32 0, i32 1, i32 2>
76  ret <3 x i8> %4
77}
78
79!24 = metadata !{metadata !"char4", metadata !15}
80define void @rsSetElementAtImpl_char4(%struct.rs_allocation* %a, <4 x i8> %val, i32 %x, i32 %y, i32 %z) #2 {
81  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
82  %2 = bitcast i8* %1 to <4 x i8>*
83  store <4 x i8> %val, <4 x i8>* %2, align 4, !tbaa !24
84  ret void
85}
86
87define <4 x i8> @rsGetElementAtImpl_char4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
88  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
89  %2 = bitcast i8* %1 to <4 x i8>*
90  %3 = load <4 x i8>* %2, align 4, !tbaa !24
91  ret <4 x i8> %3
92}
93
94!25 = metadata !{metadata !"uchar", metadata !15}
95define void @rsSetElementAtImpl_uchar(%struct.rs_allocation* %a, i8 zeroext %val, i32 %x, i32 %y, i32 %z) #2 {
96  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 1, i32 %x, i32 %y, i32 %z) #10
97  store i8 %val, i8* %1, align 1, !tbaa !25
98  ret void
99}
100
101define zeroext i8 @rsGetElementAtImpl_uchar(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
102  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 1, i32 %x, i32 %y, i32 %z) #10
103  %2 = load i8* %1, align 1, !tbaa !25
104  ret i8 %2
105}
106
107!26 = metadata !{metadata !"uchar2", metadata !15}
108define void @rsSetElementAtImpl_uchar2(%struct.rs_allocation* %a, i16 %val, i32 %x, i32 %y, i32 %z) #2 {
109  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 2, i32 %x, i32 %y, i32 %z) #10
110  %2 = bitcast i8* %1 to <2 x i8>*
111  %3 = bitcast i16 %val to <2 x i8>
112  store <2 x i8> %3, <2 x i8>* %2, align 2, !tbaa !26
113  ret void
114}
115
116define <2 x i8> @rsGetElementAtImpl_uchar2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
117  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 2, i32 %x, i32 %y, i32 %z) #10
118  %2 = bitcast i8* %1 to <2 x i8>*
119  %3 = load <2 x i8>* %2, align 2, !tbaa !26
120  ret <2 x i8> %3
121}
122
123!27 = metadata !{metadata !"uchar3", metadata !15}
124define void @rsSetElementAtImpl_uchar3(%struct.rs_allocation* %a, i32 %val, i32 %x, i32 %y, i32 %z) #2 {
125  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
126  %2 = bitcast i32 %val to <4 x i8>
127  %3 = shufflevector <4 x i8> %2, <4 x i8> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
128  %4 = bitcast i8* %1 to <4 x i8>*
129  store <4 x i8> %3, <4 x i8>* %4, align 4, !tbaa !27
130  ret void
131}
132
133define <3 x i8> @rsGetElementAtImpl_uchar3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
134  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
135  %2 = bitcast i8* %1 to <4 x i8>*
136  %3 = load <4 x i8>* %2, align 4, !tbaa !27
137  %4 = shufflevector <4 x i8> %3, <4 x i8> undef, <3 x i32> <i32 0, i32 1, i32 2>
138  ret <3 x i8> %4
139}
140
141!28 = metadata !{metadata !"uchar4", metadata !15}
142define void @rsSetElementAtImpl_uchar4(%struct.rs_allocation* %a, <4 x i8> %val, i32 %x, i32 %y, i32 %z) #2 {
143  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
144  %2 = bitcast i8* %1 to <4 x i8>*
145  store <4 x i8> %val, <4 x i8>* %2, align 4, !tbaa !28
146  ret void
147}
148
149define <4 x i8> @rsGetElementAtImpl_uchar4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
150  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
151  %2 = bitcast i8* %1 to <4 x i8>*
152  %3 = load <4 x i8>* %2, align 4, !tbaa !28
153  ret <4 x i8> %3
154}
155
156!29 = metadata !{metadata !"short", metadata !15}
157define void @rsSetElementAtImpl_short(%struct.rs_allocation* %a, i16 signext %val, i32 %x, i32 %y, i32 %z) #2 {
158  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 2, i32 %x, i32 %y, i32 %z) #10
159  %2 = bitcast i8* %1 to i16*
160  store i16 %val, i16* %2, align 2, !tbaa !29
161  ret void
162}
163
164define signext i16 @rsGetElementAtImpl_short(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
165  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 2, i32 %x, i32 %y, i32 %z) #10
166  %2 = bitcast i8* %1 to i16*
167  %3 = load i16* %2, align 2, !tbaa !29
168  ret i16 %3
169}
170
171!30 = metadata !{metadata !"short2", metadata !15}
172define void @rsSetElementAtImpl_short2(%struct.rs_allocation* %a, <2 x i16> %val, i32 %x, i32 %y, i32 %z) #2 {
173  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
174  %2 = bitcast i8* %1 to <2 x i16>*
175  store <2 x i16> %val, <2 x i16>* %2, align 4, !tbaa !30
176  ret void
177}
178
179define <2 x i16> @rsGetElementAtImpl_short2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
180  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
181  %2 = bitcast i8* %1 to <2 x i16>*
182  %3 = load <2 x i16>* %2, align 4, !tbaa !30
183  ret <2 x i16> %3
184}
185
186!31 = metadata !{metadata !"short3", metadata !15}
187define void @rsSetElementAtImpl_short3(%struct.rs_allocation* %a, <3 x i16> %val, i32 %x, i32 %y, i32 %z) #2 {
188  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
189  %2 = shufflevector <3 x i16> %val, <3 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
190  %3 = bitcast i8* %1 to <4 x i16>*
191  store <4 x i16> %2, <4 x i16>* %3, align 8, !tbaa !31
192  ret void
193}
194
195define <3 x i16> @rsGetElementAtImpl_short3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
196  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
197  %2 = bitcast i8* %1 to <4 x i16>*
198  %3 = load <4 x i16>* %2, align 8, !tbaa !31
199  %4 = shufflevector <4 x i16> %3, <4 x i16> undef, <3 x i32> <i32 0, i32 1, i32 2>
200  ret <3 x i16> %4
201}
202
203!32 = metadata !{metadata !"short4", metadata !15}
204define void @rsSetElementAtImpl_short4(%struct.rs_allocation* %a, <4 x i16> %val, i32 %x, i32 %y, i32 %z) #2 {
205  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
206  %2 = bitcast i8* %1 to <4 x i16>*
207  store <4 x i16> %val, <4 x i16>* %2, align 8, !tbaa !32
208  ret void
209}
210
211define <4 x i16> @rsGetElementAtImpl_short4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
212  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
213  %2 = bitcast i8* %1 to <4 x i16>*
214  %3 = load <4 x i16>* %2, align 8, !tbaa !32
215  ret <4 x i16> %3
216}
217
218!33 = metadata !{metadata !"ushort", metadata !15}
219define void @rsSetElementAtImpl_ushort(%struct.rs_allocation* %a, i16 zeroext %val, i32 %x, i32 %y, i32 %z) #2 {
220  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 2, i32 %x, i32 %y, i32 %z) #10
221  %2 = bitcast i8* %1 to i16*
222  store i16 %val, i16* %2, align 2, !tbaa !33
223  ret void
224}
225
226define zeroext i16 @rsGetElementAtImpl_ushort(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
227  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 2, i32 %x, i32 %y, i32 %z) #10
228  %2 = bitcast i8* %1 to i16*
229  %3 = load i16* %2, align 2, !tbaa !33
230  ret i16 %3
231}
232
233!34 = metadata !{metadata !"ushort2", metadata !15}
234define void @rsSetElementAtImpl_ushort2(%struct.rs_allocation* %a, <2 x i16> %val, i32 %x, i32 %y, i32 %z) #2 {
235  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
236  %2 = bitcast i8* %1 to <2 x i16>*
237  store <2 x i16> %val, <2 x i16>* %2, align 4, !tbaa !34
238  ret void
239}
240
241define <2 x i16> @rsGetElementAtImpl_ushort2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
242  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
243  %2 = bitcast i8* %1 to <2 x i16>*
244  %3 = load <2 x i16>* %2, align 4, !tbaa !34
245  ret <2 x i16> %3
246}
247
248!35 = metadata !{metadata !"ushort3", metadata !15}
249define void @rsSetElementAtImpl_ushort3(%struct.rs_allocation* %a, <3 x i16> %val, i32 %x, i32 %y, i32 %z) #2 {
250  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
251  %2 = shufflevector <3 x i16> %val, <3 x i16> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
252  %3 = bitcast i8* %1 to <4 x i16>*
253  store <4 x i16> %2, <4 x i16>* %3, align 8, !tbaa !35
254  ret void
255}
256
257define <3 x i16> @rsGetElementAtImpl_ushort3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
258  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
259  %2 = bitcast i8* %1 to <4 x i16>*
260  %3 = load <4 x i16>* %2, align 8, !tbaa !35
261  %4 = shufflevector <4 x i16> %3, <4 x i16> undef, <3 x i32> <i32 0, i32 1, i32 2>
262  ret <3 x i16> %4
263}
264
265!36 = metadata !{metadata !"ushort4", metadata !15}
266define void @rsSetElementAtImpl_ushort4(%struct.rs_allocation* %a, <4 x i16> %val, i32 %x, i32 %y, i32 %z) #2 {
267  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
268  %2 = bitcast i8* %1 to <4 x i16>*
269  store <4 x i16> %val, <4 x i16>* %2, align 8, !tbaa !36
270  ret void
271}
272
273define <4 x i16> @rsGetElementAtImpl_ushort4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
274  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
275  %2 = bitcast i8* %1 to <4 x i16>*
276  %3 = load <4 x i16>* %2, align 8, !tbaa !36
277  ret <4 x i16> %3
278}
279
280!37 = metadata !{metadata !"int", metadata !15}
281define void @rsSetElementAtImpl_int(%struct.rs_allocation* %a, i32 %val, i32 %x, i32 %y, i32 %z) #2 {
282  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
283  %2 = bitcast i8* %1 to i32*
284  store i32 %val, i32* %2, align 4, !tbaa !37
285  ret void
286}
287
288define i32 @rsGetElementAtImpl_int(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
289  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
290  %2 = bitcast i8* %1 to i32*
291  %3 = load i32* %2, align 4, !tbaa !37
292  ret i32 %3
293}
294
295!38 = metadata !{metadata !"int2", metadata !15}
296define void @rsSetElementAtImpl_int2(%struct.rs_allocation* %a, <2 x i32> %val, i32 %x, i32 %y, i32 %z) #2 {
297  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
298  %2 = bitcast i8* %1 to <2 x i32>*
299  store <2 x i32> %val, <2 x i32>* %2, align 8, !tbaa !38
300  ret void
301}
302
303define <2 x i32> @rsGetElementAtImpl_int2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
304  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
305  %2 = bitcast i8* %1 to <2 x i32>*
306  %3 = load <2 x i32>* %2, align 8, !tbaa !38
307  ret <2 x i32> %3
308}
309
310!39 = metadata !{metadata !"int3", metadata !15}
311define void @rsSetElementAtImpl_int3(%struct.rs_allocation* %a, <3 x i32> %val, i32 %x, i32 %y, i32 %z) #2 {
312  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
313  %2 = shufflevector <3 x i32> %val, <3 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
314  %3 = bitcast i8* %1 to <4 x i32>*
315  store <4 x i32> %2, <4 x i32>* %3, align 16, !tbaa !39
316  ret void
317}
318
319define <3 x i32> @rsGetElementAtImpl_int3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
320  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
321  %2 = bitcast i8* %1 to <4 x i32>*
322  %3 = load <4 x i32>* %2, align 8, !tbaa !39
323  %4 = shufflevector <4 x i32> %3, <4 x i32> undef, <3 x i32> <i32 0, i32 1, i32 2>
324  ret <3 x i32> %4
325}
326
327!40 = metadata !{metadata !"int4", metadata !15}
328define void @rsSetElementAtImpl_int4(%struct.rs_allocation* %a, <4 x i32> %val, i32 %x, i32 %y, i32 %z) #2 {
329  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
330  %2 = bitcast i8* %1 to <4 x i32>*
331  store <4 x i32> %val, <4 x i32>* %2, align 16, !tbaa !40
332  ret void
333}
334
335define <4 x i32> @rsGetElementAtImpl_int4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
336  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
337  %2 = bitcast i8* %1 to <4 x i32>*
338  %3 = load <4 x i32>* %2, align 16, !tbaa !40
339  ret <4 x i32> %3
340}
341
342!41 = metadata !{metadata !"uint", metadata !15}
343define void @rsSetElementAtImpl_uint(%struct.rs_allocation* %a, i32 %val, i32 %x, i32 %y, i32 %z) #2 {
344  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
345  %2 = bitcast i8* %1 to i32*
346  store i32 %val, i32* %2, align 4, !tbaa !41
347  ret void
348}
349
350define i32 @rsGetElementAtImpl_uint(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
351  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
352  %2 = bitcast i8* %1 to i32*
353  %3 = load i32* %2, align 4, !tbaa !41
354  ret i32 %3
355}
356
357!42 = metadata !{metadata !"uint2", metadata !15}
358define void @rsSetElementAtImpl_uint2(%struct.rs_allocation* %a, <2 x i32> %val, i32 %x, i32 %y, i32 %z) #2 {
359  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
360  %2 = bitcast i8* %1 to <2 x i32>*
361  store <2 x i32> %val, <2 x i32>* %2, align 8, !tbaa !42
362  ret void
363}
364
365define <2 x i32> @rsGetElementAtImpl_uint2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
366  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
367  %2 = bitcast i8* %1 to <2 x i32>*
368  %3 = load <2 x i32>* %2, align 8, !tbaa !42
369  ret <2 x i32> %3
370}
371
372!43 = metadata !{metadata !"uint3", metadata !15}
373define void @rsSetElementAtImpl_uint3(%struct.rs_allocation* %a, <3 x i32> %val, i32 %x, i32 %y, i32 %z) #2 {
374  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
375  %2 = shufflevector <3 x i32> %val, <3 x i32> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
376  %3 = bitcast i8* %1 to <4 x i32>*
377  store <4 x i32> %2, <4 x i32>* %3, align 16, !tbaa !43
378  ret void
379}
380
381define <3 x i32> @rsGetElementAtImpl_uint3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
382  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
383  %2 = bitcast i8* %1 to <4 x i32>*
384  %3 = load <4 x i32>* %2, align 8, !tbaa !43
385  %4 = shufflevector <4 x i32> %3, <4 x i32> undef, <3 x i32> <i32 0, i32 1, i32 2>
386  ret <3 x i32> %4
387}
388
389!44 = metadata !{metadata !"uint4", metadata !15}
390define void @rsSetElementAtImpl_uint4(%struct.rs_allocation* %a, <4 x i32> %val, i32 %x, i32 %y, i32 %z) #2 {
391  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
392  %2 = bitcast i8* %1 to <4 x i32>*
393  store <4 x i32> %val, <4 x i32>* %2, align 16, !tbaa !44
394  ret void
395}
396
397define <4 x i32> @rsGetElementAtImpl_uint4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
398  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
399  %2 = bitcast i8* %1 to <4 x i32>*
400  %3 = load <4 x i32>* %2, align 16, !tbaa !44
401  ret <4 x i32> %3
402}
403
404!45 = metadata !{metadata !"long", metadata !15}
405define void @rsSetElementAtImpl_long(%struct.rs_allocation* %a, i64 %val, i32 %x, i32 %y, i32 %z) #2 {
406  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
407  %2 = bitcast i8* %1 to i64*
408  store i64 %val, i64* %2, align 8, !tbaa !45
409  ret void
410}
411
412define i64 @rsGetElementAtImpl_long(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
413  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
414  %2 = bitcast i8* %1 to i64*
415  %3 = load i64* %2, align 8, !tbaa !45
416  ret i64 %3
417}
418
419!46 = metadata !{metadata !"long2", metadata !15}
420define void @rsSetElementAtImpl_long2(%struct.rs_allocation* %a, <2 x i64> %val, i32 %x, i32 %y, i32 %z) #2 {
421  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
422  %2 = bitcast i8* %1 to <2 x i64>*
423  store <2 x i64> %val, <2 x i64>* %2, align 16, !tbaa !46
424  ret void
425}
426
427define <2 x i64> @rsGetElementAtImpl_long2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
428  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
429  %2 = bitcast i8* %1 to <2 x i64>*
430  %3 = load <2 x i64>* %2, align 16, !tbaa !46
431  ret <2 x i64> %3
432}
433
434!47 = metadata !{metadata !"long3", metadata !15}
435define void @rsSetElementAtImpl_long3(%struct.rs_allocation* %a, <3 x i64> %val, i32 %x, i32 %y, i32 %z) #2 {
436  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
437  %2 = shufflevector <3 x i64> %val, <3 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
438  %3 = bitcast i8* %1 to <4 x i64>*
439  store <4 x i64> %2, <4 x i64>* %3, align 32, !tbaa !47
440  ret void
441}
442
443define void @rsGetElementAtImpl_long3(<3 x i64>* noalias nocapture sret %agg.result, %struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #2 {
444  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
445  %2 = bitcast i8* %1 to <4 x i64>*
446  %3 = load <4 x i64>* %2, align 32
447  %4 = bitcast <3 x i64>* %agg.result to <4 x i64>*
448  store <4 x i64> %3, <4 x i64>* %4, align 32, !tbaa !47
449  ret void
450}
451
452!48 = metadata !{metadata !"long4", metadata !15}
453define void @rsSetElementAtImpl_long4(%struct.rs_allocation* %a, <4 x i64> %val, i32 %x, i32 %y, i32 %z) #2 {
454  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
455  %2 = bitcast i8* %1 to <4 x i64>*
456  store <4 x i64> %val, <4 x i64>* %2, align 32, !tbaa !48
457  ret void
458}
459
460define void @rsGetElementAtImpl_long4(<4 x i64>* noalias nocapture sret %agg.result, %struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #2 {
461  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
462  %2 = bitcast i8* %1 to <4 x i64>*
463  %3 = load <4 x i64>* %2, align 32, !tbaa !15
464  store <4 x i64> %3, <4 x i64>* %agg.result, align 32, !tbaa !48
465  ret void
466}
467
468!49 = metadata !{metadata !"ulong", metadata !15}
469define void @rsSetElementAtImpl_ulong(%struct.rs_allocation* %a, i64 %val, i32 %x, i32 %y, i32 %z) #2 {
470  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
471  %2 = bitcast i8* %1 to i64*
472  store i64 %val, i64* %2, align 8, !tbaa !49
473  ret void
474}
475
476define i64 @rsGetElementAtImpl_ulong(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
477  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
478  %2 = bitcast i8* %1 to i64*
479  %3 = load i64* %2, align 8, !tbaa !49
480  ret i64 %3
481}
482
483!50 = metadata !{metadata !"ulong2", metadata !15}
484define void @rsSetElementAtImpl_ulong2(%struct.rs_allocation* %a, <2 x i64> %val, i32 %x, i32 %y, i32 %z) #2 {
485  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
486  %2 = bitcast i8* %1 to <2 x i64>*
487  store <2 x i64> %val, <2 x i64>* %2, align 16, !tbaa !50
488  ret void
489}
490
491define <2 x i64> @rsGetElementAtImpl_ulong2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
492  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
493  %2 = bitcast i8* %1 to <2 x i64>*
494  %3 = load <2 x i64>* %2, align 16, !tbaa !50
495  ret <2 x i64> %3
496}
497
498!51 = metadata !{metadata !"ulong3", metadata !15}
499define void @rsSetElementAtImpl_ulong3(%struct.rs_allocation* %a, <3 x i64> %val, i32 %x, i32 %y, i32 %z) #2 {
500  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
501  %2 = shufflevector <3 x i64> %val, <3 x i64> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
502  %3 = bitcast i8* %1 to <4 x i64>*
503  store <4 x i64> %2, <4 x i64>* %3, align 32, !tbaa !51
504  ret void
505}
506
507define void @rsGetElementAtImpl_ulong3(<3 x i64>* noalias nocapture sret %agg.result, %struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #2 {
508  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
509  %2 = bitcast i8* %1 to <4 x i64>*
510  %3 = load <4 x i64>* %2, align 32
511  %4 = bitcast <3 x i64>* %agg.result to <4 x i64>*
512  store <4 x i64> %3, <4 x i64>* %4, align 32, !tbaa !51
513  ret void
514}
515
516!52 = metadata !{metadata !"ulong4", metadata !15}
517define void @rsSetElementAtImpl_ulong4(%struct.rs_allocation* %a, <4 x i64> %val, i32 %x, i32 %y, i32 %z) #2 {
518  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
519  %2 = bitcast i8* %1 to <4 x i64>*
520  store <4 x i64> %val, <4 x i64>* %2, align 32, !tbaa !52
521  ret void
522}
523
524define void @rsGetElementAtImpl_ulong4(<4 x i64>* noalias nocapture sret %agg.result, %struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #2 {
525  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
526  %2 = bitcast i8* %1 to <4 x i64>*
527  %3 = load <4 x i64>* %2, align 32, !tbaa !15
528  store <4 x i64> %3, <4 x i64>* %agg.result, align 32, !tbaa !52
529  ret void
530}
531
532!53 = metadata !{metadata !"float", metadata !15}
533define void @rsSetElementAtImpl_float(%struct.rs_allocation* %a, float %val, i32 %x, i32 %y, i32 %z) #2 {
534  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
535  %2 = bitcast i8* %1 to float*
536  store float %val, float* %2, align 4, !tbaa !53
537  ret void
538}
539
540define float @rsGetElementAtImpl_float(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
541  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 4, i32 %x, i32 %y, i32 %z) #10
542  %2 = bitcast i8* %1 to float*
543  %3 = load float* %2, align 4, !tbaa !53
544  ret float %3
545}
546
547!54 = metadata !{metadata !"float2", metadata !15}
548define void @rsSetElementAtImpl_float2(%struct.rs_allocation* %a, <2 x float> %val, i32 %x, i32 %y, i32 %z) #2 {
549  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
550  %2 = bitcast i8* %1 to <2 x float>*
551  store <2 x float> %val, <2 x float>* %2, align 8, !tbaa !54
552  ret void
553}
554
555define <2 x float> @rsGetElementAtImpl_float2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
556  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
557  %2 = bitcast i8* %1 to <2 x float>*
558  %3 = load <2 x float>* %2, align 8, !tbaa !54
559  ret <2 x float> %3
560}
561
562!55 = metadata !{metadata !"float3", metadata !15}
563define void @rsSetElementAtImpl_float3(%struct.rs_allocation* %a, <3 x float> %val, i32 %x, i32 %y, i32 %z) #2 {
564  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
565  %2 = shufflevector <3 x float> %val, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
566  %3 = bitcast i8* %1 to <4 x float>*
567  store <4 x float> %2, <4 x float>* %3, align 16, !tbaa !55
568  ret void
569}
570
571define <3 x float> @rsGetElementAtImpl_float3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
572  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
573  %2 = bitcast i8* %1 to <4 x float>*
574  %3 = load <4 x float>* %2, align 8, !tbaa !55
575  %4 = shufflevector <4 x float> %3, <4 x float> undef, <3 x i32> <i32 0, i32 1, i32 2>
576  ret <3 x float> %4
577}
578
579!56 = metadata !{metadata !"float4", metadata !15}
580define void @rsSetElementAtImpl_float4(%struct.rs_allocation* %a, <4 x float> %val, i32 %x, i32 %y, i32 %z) #2 {
581  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
582  %2 = bitcast i8* %1 to <4 x float>*
583  store <4 x float> %val, <4 x float>* %2, align 16, !tbaa !56
584  ret void
585}
586
587define <4 x float> @rsGetElementAtImpl_float4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
588  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
589  %2 = bitcast i8* %1 to <4 x float>*
590  %3 = load <4 x float>* %2, align 16, !tbaa !56
591  ret <4 x float> %3
592}
593
594!57 = metadata !{metadata !"double", metadata !15}
595define void @rsSetElementAtImpl_double(%struct.rs_allocation* %a, double %val, i32 %x, i32 %y, i32 %z) #2 {
596  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
597  %2 = bitcast i8* %1 to double*
598  store double %val, double* %2, align 8, !tbaa !57
599  ret void
600}
601
602define double @rsGetElementAtImpl_double(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
603  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 8, i32 %x, i32 %y, i32 %z) #10
604  %2 = bitcast i8* %1 to double*
605  %3 = load double* %2, align 8, !tbaa !57
606  ret double %3
607}
608
609!58 = metadata !{metadata !"double2", metadata !15}
610define void @rsSetElementAtImpl_double2(%struct.rs_allocation* %a, <2 x double> %val, i32 %x, i32 %y, i32 %z) #2 {
611  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
612  %2 = bitcast i8* %1 to <2 x double>*
613  store <2 x double> %val, <2 x double>* %2, align 16, !tbaa !58
614  ret void
615}
616
617define <2 x double> @rsGetElementAtImpl_double2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #3 {
618  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 16, i32 %x, i32 %y, i32 %z) #10
619  %2 = bitcast i8* %1 to <2 x double>*
620  %3 = load <2 x double>* %2, align 16, !tbaa !58
621  ret <2 x double> %3
622}
623
624!59 = metadata !{metadata !"double3", metadata !15}
625define void @rsSetElementAtImpl_double3(%struct.rs_allocation* %a, <3 x double> %val, i32 %x, i32 %y, i32 %z) #2 {
626  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
627  %2 = shufflevector <3 x double> %val, <3 x double> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
628  %3 = bitcast i8* %1 to <4 x double>*
629  store <4 x double> %2, <4 x double>* %3, align 32, !tbaa !59
630  ret void
631}
632
633
634define void @rsGetElementAtImpl_double3(<3 x double>* noalias nocapture sret %agg.result, %struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #2 {
635  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
636  %2 = bitcast i8* %1 to <4 x double>*
637  %3 = load <4 x double>* %2, align 32
638  %4 = bitcast <3 x double>* %agg.result to <4 x double>*
639  store <4 x double> %3, <4 x double>* %4, align 32, !tbaa !59
640  ret void
641}
642
643!60 = metadata !{metadata !"double4", metadata !15}
644define void @rsSetElementAtImpl_double4(%struct.rs_allocation* %a, <4 x double> %val, i32 %x, i32 %y, i32 %z) #2 {
645  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
646  %2 = bitcast i8* %1 to <4 x double>*
647  store <4 x double> %val, <4 x double>* %2, align 32, !tbaa !60
648  ret void
649}
650define void @rsGetElementAtImpl_double4(<4 x double>* noalias nocapture sret %agg.result, %struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #2 {
651  %1 = tail call i8* @rsOffset(%struct.rs_allocation* %a, i32 32, i32 %x, i32 %y, i32 %z) #10
652  %2 = bitcast i8* %1 to <4 x double>*
653  %3 = load <4 x double>* %2, align 32, !tbaa !15
654  store <4 x double> %3, <4 x double>* %agg.result, align 32, !tbaa !60
655  ret void
656}
657
658
659define <4 x i64> @__rsAllocationVLoadXImpl_long4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
660  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
661  %2 = bitcast i8* %1 to <4 x i64>*
662  %3 = load <4 x i64>* %2, align 8
663  ret <4 x i64> %3
664}
665define <3 x i64> @__rsAllocationVLoadXImpl_long3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
666  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
667  %2 = bitcast i8* %1 to <3 x i64>*
668  %3 = load <3 x i64>* %2, align 8
669  ret <3 x i64> %3
670}
671define <2 x i64> @__rsAllocationVLoadXImpl_long2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
672  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
673  %2 = bitcast i8* %1 to <2 x i64>*
674  %3 = load <2 x i64>* %2, align 8
675  ret <2 x i64> %3
676}
677
678define <4 x i64> @__rsAllocationVLoadXImpl_ulong4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
679  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
680  %2 = bitcast i8* %1 to <4 x i64>*
681  %3 = load <4 x i64>* %2, align 8
682  ret <4 x i64> %3
683}
684define <3 x i64> @__rsAllocationVLoadXImpl_ulong3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
685  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
686  %2 = bitcast i8* %1 to <3 x i64>*
687  %3 = load <3 x i64>* %2, align 8
688  ret <3 x i64> %3
689}
690define <2 x i64> @__rsAllocationVLoadXImpl_ulong2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
691  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
692  %2 = bitcast i8* %1 to <2 x i64>*
693  %3 = load <2 x i64>* %2, align 8
694  ret <2 x i64> %3
695}
696
697define <4 x i32> @__rsAllocationVLoadXImpl_int4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
698  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
699  %2 = bitcast i8* %1 to <4 x i32>*
700  %3 = load <4 x i32>* %2, align 4
701  ret <4 x i32> %3
702}
703define <3 x i32> @__rsAllocationVLoadXImpl_int3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
704  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
705  %2 = bitcast i8* %1 to <3 x i32>*
706  %3 = load <3 x i32>* %2, align 4
707  ret <3 x i32> %3
708}
709define <2 x i32> @__rsAllocationVLoadXImpl_int2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
710  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
711  %2 = bitcast i8* %1 to <2 x i32>*
712  %3 = load <2 x i32>* %2, align 4
713  ret <2 x i32> %3
714}
715
716define <4 x i32> @__rsAllocationVLoadXImpl_uint4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
717  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
718  %2 = bitcast i8* %1 to <4 x i32>*
719  %3 = load <4 x i32>* %2, align 4
720  ret <4 x i32> %3
721}
722define <3 x i32> @__rsAllocationVLoadXImpl_uint3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
723  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
724  %2 = bitcast i8* %1 to <3 x i32>*
725  %3 = load <3 x i32>* %2, align 4
726  ret <3 x i32> %3
727}
728define <2 x i32> @__rsAllocationVLoadXImpl_uint2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
729  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
730  %2 = bitcast i8* %1 to <2 x i32>*
731  %3 = load <2 x i32>* %2, align 4
732  ret <2 x i32> %3
733}
734
735define <4 x i16> @__rsAllocationVLoadXImpl_short4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
736  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
737  %2 = bitcast i8* %1 to <4 x i16>*
738  %3 = load <4 x i16>* %2, align 2
739  ret <4 x i16> %3
740}
741define <3 x i16> @__rsAllocationVLoadXImpl_short3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
742  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
743  %2 = bitcast i8* %1 to <3 x i16>*
744  %3 = load <3 x i16>* %2, align 2
745  ret <3 x i16> %3
746}
747define <2 x i16> @__rsAllocationVLoadXImpl_short2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
748  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
749  %2 = bitcast i8* %1 to <2 x i16>*
750  %3 = load <2 x i16>* %2, align 2
751  ret <2 x i16> %3
752}
753
754define <4 x i16> @__rsAllocationVLoadXImpl_ushort4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
755  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
756  %2 = bitcast i8* %1 to <4 x i16>*
757  %3 = load <4 x i16>* %2, align 2
758  ret <4 x i16> %3
759}
760define <3 x i16> @__rsAllocationVLoadXImpl_ushort3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
761  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
762  %2 = bitcast i8* %1 to <3 x i16>*
763  %3 = load <3 x i16>* %2, align 2
764  ret <3 x i16> %3
765}
766define <2 x i16> @__rsAllocationVLoadXImpl_ushort2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
767  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
768  %2 = bitcast i8* %1 to <2 x i16>*
769  %3 = load <2 x i16>* %2, align 2
770  ret <2 x i16> %3
771}
772
773define <4 x i8> @__rsAllocationVLoadXImpl_char4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
774  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
775  %2 = bitcast i8* %1 to <4 x i8>*
776  %3 = load <4 x i8>* %2, align 1
777  ret <4 x i8> %3
778}
779define <3 x i8> @__rsAllocationVLoadXImpl_char3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
780  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
781  %2 = bitcast i8* %1 to <3 x i8>*
782  %3 = load <3 x i8>* %2, align 1
783  ret <3 x i8> %3
784}
785define <2 x i8> @__rsAllocationVLoadXImpl_char2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
786  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
787  %2 = bitcast i8* %1 to <2 x i8>*
788  %3 = load <2 x i8>* %2, align 1
789  ret <2 x i8> %3
790}
791
792define <4 x i8> @__rsAllocationVLoadXImpl_uchar4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
793  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
794  %2 = bitcast i8* %1 to <4 x i8>*
795  %3 = load <4 x i8>* %2, align 1
796  ret <4 x i8> %3
797}
798define <3 x i8> @__rsAllocationVLoadXImpl_uchar3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
799  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
800  %2 = bitcast i8* %1 to <3 x i8>*
801  %3 = load <3 x i8>* %2, align 1
802  ret <3 x i8> %3
803}
804define <2 x i8> @__rsAllocationVLoadXImpl_uchar2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
805  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
806  %2 = bitcast i8* %1 to <2 x i8>*
807  %3 = load <2 x i8>* %2, align 1
808  ret <2 x i8> %3
809}
810
811define <4 x float> @__rsAllocationVLoadXImpl_float4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
812  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
813  %2 = bitcast i8* %1 to <4 x float>*
814  %3 = load <4 x float>* %2, align 4
815  ret <4 x float> %3
816}
817define <3 x float> @__rsAllocationVLoadXImpl_float3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
818  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
819  %2 = bitcast i8* %1 to <3 x float>*
820  %3 = load <3 x float>* %2, align 4
821  ret <3 x float> %3
822}
823define <2 x float> @__rsAllocationVLoadXImpl_float2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
824  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
825  %2 = bitcast i8* %1 to <2 x float>*
826  %3 = load <2 x float>* %2, align 4
827  ret <2 x float> %3
828}
829
830define <4 x double> @__rsAllocationVLoadXImpl_double4(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
831  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
832  %2 = bitcast i8* %1 to <4 x double>*
833  %3 = load <4 x double>* %2, align 8
834  ret <4 x double> %3
835}
836define <3 x double> @__rsAllocationVLoadXImpl_double3(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
837  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
838  %2 = bitcast i8* %1 to <3 x double>*
839  %3 = load <3 x double>* %2, align 8
840  ret <3 x double> %3
841}
842define <2 x double> @__rsAllocationVLoadXImpl_double2(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #0 {
843  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
844  %2 = bitcast i8* %1 to <2 x double>*
845  %3 = load <2 x double>* %2, align 8
846  ret <2 x double> %3
847}
848
849
850define void @__rsAllocationVStoreXImpl_long4(%struct.rs_allocation* %a, <4 x i64> %val, i32 %x, i32 %y, i32 %z) #0 {
851  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
852  %2 = bitcast i8* %1 to <4 x i64>*
853  store <4 x i64> %val, <4 x i64>* %2, align 8
854  ret void
855}
856define void @__rsAllocationVStoreXImpl_long3(%struct.rs_allocation* %a, <3 x i64> %val, i32 %x, i32 %y, i32 %z) #0 {
857  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
858  %2 = bitcast i8* %1 to <3 x i64>*
859  store <3 x i64> %val, <3 x i64>* %2, align 8
860  ret void
861}
862define void @__rsAllocationVStoreXImpl_long2(%struct.rs_allocation* %a, <2 x i64> %val, i32 %x, i32 %y, i32 %z) #0 {
863  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
864  %2 = bitcast i8* %1 to <2 x i64>*
865  store <2 x i64> %val, <2 x i64>* %2, align 8
866  ret void
867}
868
869define void @__rsAllocationVStoreXImpl_ulong4(%struct.rs_allocation* %a, <4 x i64> %val, i32 %x, i32 %y, i32 %z) #0 {
870  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
871  %2 = bitcast i8* %1 to <4 x i64>*
872  store <4 x i64> %val, <4 x i64>* %2, align 8
873  ret void
874}
875define void @__rsAllocationVStoreXImpl_ulong3(%struct.rs_allocation* %a, <3 x i64> %val, i32 %x, i32 %y, i32 %z) #0 {
876  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
877  %2 = bitcast i8* %1 to <3 x i64>*
878  store <3 x i64> %val, <3 x i64>* %2, align 8
879  ret void
880}
881define void @__rsAllocationVStoreXImpl_ulong2(%struct.rs_allocation* %a, <2 x i64> %val, i32 %x, i32 %y, i32 %z) #0 {
882  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
883  %2 = bitcast i8* %1 to <2 x i64>*
884  store <2 x i64> %val, <2 x i64>* %2, align 8
885  ret void
886}
887
888define void @__rsAllocationVStoreXImpl_int4(%struct.rs_allocation* %a, <4 x i32> %val, i32 %x, i32 %y, i32 %z) #0 {
889  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
890  %2 = bitcast i8* %1 to <4 x i32>*
891  store <4 x i32> %val, <4 x i32>* %2, align 8
892  ret void
893}
894define void @__rsAllocationVStoreXImpl_int3(%struct.rs_allocation* %a, <3 x i32> %val, i32 %x, i32 %y, i32 %z) #0 {
895  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
896  %2 = bitcast i8* %1 to <3 x i32>*
897  store <3 x i32> %val, <3 x i32>* %2, align 8
898  ret void
899}
900define void @__rsAllocationVStoreXImpl_int2(%struct.rs_allocation* %a, <2 x i32> %val, i32 %x, i32 %y, i32 %z) #0 {
901  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
902  %2 = bitcast i8* %1 to <2 x i32>*
903  store <2 x i32> %val, <2 x i32>* %2, align 8
904  ret void
905}
906
907define void @__rsAllocationVStoreXImpl_uint4(%struct.rs_allocation* %a, <4 x i32> %val, i32 %x, i32 %y, i32 %z) #0 {
908  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
909  %2 = bitcast i8* %1 to <4 x i32>*
910  store <4 x i32> %val, <4 x i32>* %2, align 8
911  ret void
912}
913define void @__rsAllocationVStoreXImpl_uint3(%struct.rs_allocation* %a, <3 x i32> %val, i32 %x, i32 %y, i32 %z) #0 {
914  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
915  %2 = bitcast i8* %1 to <3 x i32>*
916  store <3 x i32> %val, <3 x i32>* %2, align 8
917  ret void
918}
919define void @__rsAllocationVStoreXImpl_uint2(%struct.rs_allocation* %a, <2 x i32> %val, i32 %x, i32 %y, i32 %z) #0 {
920  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
921  %2 = bitcast i8* %1 to <2 x i32>*
922  store <2 x i32> %val, <2 x i32>* %2, align 8
923  ret void
924}
925
926define void @__rsAllocationVStoreXImpl_short4(%struct.rs_allocation* %a, <4 x i16> %val, i32 %x, i32 %y, i32 %z) #0 {
927  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
928  %2 = bitcast i8* %1 to <4 x i16>*
929  store <4 x i16> %val, <4 x i16>* %2, align 8
930  ret void
931}
932define void @__rsAllocationVStoreXImpl_short3(%struct.rs_allocation* %a, <3 x i16> %val, i32 %x, i32 %y, i32 %z) #0 {
933  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
934  %2 = bitcast i8* %1 to <3 x i16>*
935  store <3 x i16> %val, <3 x i16>* %2, align 8
936  ret void
937}
938define void @__rsAllocationVStoreXImpl_short2(%struct.rs_allocation* %a, <2 x i16> %val, i32 %x, i32 %y, i32 %z) #0 {
939  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
940  %2 = bitcast i8* %1 to <2 x i16>*
941  store <2 x i16> %val, <2 x i16>* %2, align 8
942  ret void
943}
944
945define void @__rsAllocationVStoreXImpl_ushort4(%struct.rs_allocation* %a, <4 x i16> %val, i32 %x, i32 %y, i32 %z) #0 {
946  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
947  %2 = bitcast i8* %1 to <4 x i16>*
948  store <4 x i16> %val, <4 x i16>* %2, align 8
949  ret void
950}
951define void @__rsAllocationVStoreXImpl_ushort3(%struct.rs_allocation* %a, <3 x i16> %val, i32 %x, i32 %y, i32 %z) #0 {
952  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
953  %2 = bitcast i8* %1 to <3 x i16>*
954  store <3 x i16> %val, <3 x i16>* %2, align 8
955  ret void
956}
957define void @__rsAllocationVStoreXImpl_ushort2(%struct.rs_allocation* %a, <2 x i16> %val, i32 %x, i32 %y, i32 %z) #0 {
958  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
959  %2 = bitcast i8* %1 to <2 x i16>*
960  store <2 x i16> %val, <2 x i16>* %2, align 8
961  ret void
962}
963
964define void @__rsAllocationVStoreXImpl_char4(%struct.rs_allocation* %a, <4 x i8> %val, i32 %x, i32 %y, i32 %z) #0 {
965  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
966  %2 = bitcast i8* %1 to <4 x i8>*
967  store <4 x i8> %val, <4 x i8>* %2, align 8
968  ret void
969}
970define void @__rsAllocationVStoreXImpl_char3(%struct.rs_allocation* %a, <3 x i8> %val, i32 %x, i32 %y, i32 %z) #0 {
971  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
972  %2 = bitcast i8* %1 to <3 x i8>*
973  store <3 x i8> %val, <3 x i8>* %2, align 8
974  ret void
975}
976define void @__rsAllocationVStoreXImpl_char2(%struct.rs_allocation* %a, <2 x i8> %val, i32 %x, i32 %y, i32 %z) #0 {
977  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
978  %2 = bitcast i8* %1 to <2 x i8>*
979  store <2 x i8> %val, <2 x i8>* %2, align 8
980  ret void
981}
982
983define void @__rsAllocationVStoreXImpl_uchar4(%struct.rs_allocation* %a, <4 x i8> %val, i32 %x, i32 %y, i32 %z) #0 {
984  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
985  %2 = bitcast i8* %1 to <4 x i8>*
986  store <4 x i8> %val, <4 x i8>* %2, align 8
987  ret void
988}
989define void @__rsAllocationVStoreXImpl_uchar3(%struct.rs_allocation* %a, <3 x i8> %val, i32 %x, i32 %y, i32 %z) #0 {
990  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
991  %2 = bitcast i8* %1 to <3 x i8>*
992  store <3 x i8> %val, <3 x i8>* %2, align 8
993  ret void
994}
995define void @__rsAllocationVStoreXImpl_uchar2(%struct.rs_allocation* %a, <2 x i8> %val, i32 %x, i32 %y, i32 %z) #0 {
996  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
997  %2 = bitcast i8* %1 to <2 x i8>*
998  store <2 x i8> %val, <2 x i8>* %2, align 8
999  ret void
1000}
1001
1002define void @__rsAllocationVStoreXImpl_float4(%struct.rs_allocation* %a, <4 x float> %val, i32 %x, i32 %y, i32 %z) #0 {
1003  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
1004  %2 = bitcast i8* %1 to <4 x float>*
1005  store <4 x float> %val, <4 x float>* %2, align 8
1006  ret void
1007}
1008define void @__rsAllocationVStoreXImpl_float3(%struct.rs_allocation* %a, <3 x float> %val, i32 %x, i32 %y, i32 %z) #0 {
1009  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
1010  %2 = bitcast i8* %1 to <3 x float>*
1011  store <3 x float> %val, <3 x float>* %2, align 8
1012  ret void
1013}
1014define void @__rsAllocationVStoreXImpl_float2(%struct.rs_allocation* %a, <2 x float> %val, i32 %x, i32 %y, i32 %z) #0 {
1015  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
1016  %2 = bitcast i8* %1 to <2 x float>*
1017  store <2 x float> %val, <2 x float>* %2, align 8
1018  ret void
1019}
1020
1021define void @__rsAllocationVStoreXImpl_double4(%struct.rs_allocation* %a, <4 x double> %val, i32 %x, i32 %y, i32 %z) #0 {
1022  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
1023  %2 = bitcast i8* %1 to <4 x double>*
1024  store <4 x double> %val, <4 x double>* %2, align 8
1025  ret void
1026}
1027define void @__rsAllocationVStoreXImpl_double3(%struct.rs_allocation* %a, <3 x double> %val, i32 %x, i32 %y, i32 %z) #0 {
1028  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
1029  %2 = bitcast i8* %1 to <3 x double>*
1030  store <3 x double> %val, <3 x double>* %2, align 8
1031  ret void
1032}
1033define void @__rsAllocationVStoreXImpl_double2(%struct.rs_allocation* %a, <2 x double> %val, i32 %x, i32 %y, i32 %z) #0 {
1034  %1 = tail call i8* @rsOffsetNs(%struct.rs_allocation* %a, i32 %x, i32 %y, i32 %z) #10
1035  %2 = bitcast i8* %1 to <2 x double>*
1036  store <2 x double> %val, <2 x double>* %2, align 8
1037  ret void
1038}
1039
1040
1041attributes #0 = { nounwind readonly "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
1042attributes #1 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
1043attributes #2 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
1044attributes #3 = { nounwind readonly "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
1045attributes #4 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
1046attributes #5 = { nounwind readnone "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"="true" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
1047attributes #6 = { nounwind readnone }
1048attributes #7 = { nounwind }
1049attributes #8 = { alwaysinline nounwind readnone }
1050attributes #9 = { nounwind readonly }
1051attributes #10 = { nobuiltin }
1052attributes #11 = { nobuiltin nounwind }
1053attributes #12 = { nobuiltin nounwind readnone }
1054
1055