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