@@ -151,3 +151,32 @@ entry:
151
151
152
152
attributes #0 = { nounwind }
153
153
attributes #1 = { nounwind readnone }
154
+
155
+ ; CHECK-LABEL: @merge_i32_2i16_float_4i8(
156
+ ; CHECK: load i32
157
+ ; CHECK: load <2 x i16>
158
+ ; CHECK: load float
159
+ ; CHECK: load <4 x i8>
160
+ ; CHECK: store i32
161
+ ; CHECK: store <2 x i16>
162
+ ; CHECK: store float
163
+ ; CHECK: store <4 x i8>
164
+ define void @merge_i32_2i16_float_4i8 (ptr addrspace (1 ) %ptr1 , ptr addrspace (2 ) %ptr2 ) {
165
+ %gep1 = getelementptr inbounds i32 , ptr addrspace (1 ) %ptr1 , i64 0
166
+ %load1 = load i32 , ptr addrspace (1 ) %gep1 , align 4
167
+ %gep2 = getelementptr inbounds <2 x i16 >, ptr addrspace (1 ) %ptr1 , i64 1
168
+ %load2 = load <2 x i16 >, ptr addrspace (1 ) %gep2 , align 4
169
+ %gep3 = getelementptr inbounds float , ptr addrspace (1 ) %ptr1 , i64 2
170
+ %load3 = load float , ptr addrspace (1 ) %gep3 , align 4
171
+ %gep4 = getelementptr inbounds <4 x i8 >, ptr addrspace (1 ) %ptr1 , i64 3
172
+ %load4 = load <4 x i8 >, ptr addrspace (1 ) %gep4 , align 4
173
+ %store.gep1 = getelementptr inbounds i32 , ptr addrspace (2 ) %ptr2 , i64 0
174
+ store i32 %load1 , ptr addrspace (2 ) %store.gep1 , align 4
175
+ %store.gep2 = getelementptr inbounds <2 x i16 >, ptr addrspace (2 ) %ptr2 , i64 1
176
+ store <2 x i16 > %load2 , ptr addrspace (2 ) %store.gep2 , align 4
177
+ %store.gep3 = getelementptr inbounds float , ptr addrspace (2 ) %ptr2 , i64 2
178
+ store float %load3 , ptr addrspace (2 ) %store.gep3 , align 4
179
+ %store.gep4 = getelementptr inbounds <4 x i8 >, ptr addrspace (2 ) %ptr2 , i64 3
180
+ store <4 x i8 > %load4 , ptr addrspace (2 ) %store.gep4 , align 4
181
+ ret void
182
+ }
0 commit comments