@@ -199,6 +199,23 @@ define void @bitcast_2x2_v4f64_to_v4i64(ptr %in, ptr %out) {
199199 ret void
200200}
201201
202+ define void @bitcast_2x2_v4f64_to_v8i32 (ptr %in , ptr %out ) {
203+ ; CHECK-LABEL: @bitcast_2x2_v4f64_to_v8i32(
204+ ; CHECK-NEXT: [[INV:%.*]] = load <4 x double>, ptr [[IN:%.*]], align 32
205+ ; CHECK-NEXT: [[OP:%.*]] = bitcast <4 x double> [[INV]] to <8 x i32>
206+ ; CHECK-NEXT: [[SPLIT:%.*]] = shufflevector <8 x i32> [[OP]], <8 x i32> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
207+ ; CHECK-NEXT: [[SPLIT1:%.*]] = shufflevector <8 x i32> [[OP]], <8 x i32> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
208+ ; CHECK-NEXT: store <4 x i32> [[SPLIT]], ptr [[OUT:%.*]], align 4
209+ ; CHECK-NEXT: [[VEC_GEP:%.*]] = getelementptr i32, ptr [[OUT]], i64 4
210+ ; CHECK-NEXT: store <4 x i32> [[SPLIT1]], ptr [[VEC_GEP]], align 4
211+ ; CHECK-NEXT: ret void
212+ ;
213+ %inv = load <4 x double >, ptr %in
214+ %op = bitcast <4 x double > %inv to <8 x i32 >
215+ call void @llvm.matrix.column.major.store (<8 x i32 > %op , ptr %out , i64 4 , i1 false , i32 4 , i32 2 )
216+ ret void
217+ }
218+
202219define void @bitcast_2x2_i256_to_v4i64 (ptr %in , ptr %out ) {
203220; CHECK-LABEL: @bitcast_2x2_i256_to_v4i64(
204221; CHECK-NEXT: [[INV:%.*]] = load i256, ptr [[IN:%.*]], align 4
0 commit comments