@@ -111,3 +111,32 @@ entry:
111
111
112
112
attributes #0 = { nounwind }
113
113
attributes #1 = { nounwind readnone }
114
+
115
+ ; CHECK-LABEL: @merge_i32_2i16_float_4i8(
116
+ ; CHECK: load i32
117
+ ; CHECK: load <2 x i16>
118
+ ; CHECK: load float
119
+ ; CHECK: load <4 x i8>
120
+ ; CHECK: store i32
121
+ ; CHECK: store <2 x i16>
122
+ ; CHECK: store float
123
+ ; CHECK: store <4 x i8>
124
+ define void @merge_i32_2i16_float_4i8 (ptr addrspace (1 ) %ptr1 , ptr addrspace (2 ) %ptr2 ) {
125
+ %gep1 = getelementptr inbounds i32 , ptr addrspace (1 ) %ptr1 , i64 0
126
+ %load1 = load i32 , ptr addrspace (1 ) %gep1 , align 4
127
+ %gep2 = getelementptr inbounds <2 x i16 >, ptr addrspace (1 ) %ptr1 , i64 1
128
+ %load2 = load <2 x i16 >, ptr addrspace (1 ) %gep2 , align 4
129
+ %gep3 = getelementptr inbounds float , ptr addrspace (1 ) %ptr1 , i64 2
130
+ %load3 = load float , ptr addrspace (1 ) %gep3 , align 4
131
+ %gep4 = getelementptr inbounds <4 x i8 >, ptr addrspace (1 ) %ptr1 , i64 3
132
+ %load4 = load <4 x i8 >, ptr addrspace (1 ) %gep4 , align 4
133
+ %store.gep1 = getelementptr inbounds i32 , ptr addrspace (2 ) %ptr2 , i64 0
134
+ store i32 %load1 , ptr addrspace (2 ) %store.gep1 , align 4
135
+ %store.gep2 = getelementptr inbounds <2 x i16 >, ptr addrspace (2 ) %ptr2 , i64 1
136
+ store <2 x i16 > %load2 , ptr addrspace (2 ) %store.gep2 , align 4
137
+ %store.gep3 = getelementptr inbounds float , ptr addrspace (2 ) %ptr2 , i64 2
138
+ store float %load3 , ptr addrspace (2 ) %store.gep3 , align 4
139
+ %store.gep4 = getelementptr inbounds <4 x i8 >, ptr addrspace (2 ) %ptr2 , i64 3
140
+ store <4 x i8 > %load4 , ptr addrspace (2 ) %store.gep4 , align 4
141
+ ret void
142
+ }
0 commit comments