@@ -1875,7 +1875,7 @@ func.func @store_0d(%memref : memref<200x100xf32>, %i : index, %j : index) {
1875
1875
// CHECK: %[[CAST_MEMREF:.*]] = builtin.unrealized_conversion_cast %{{.*}} : memref<200x100xf32> to !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
1876
1876
// CHECK: %[[CST:.*]] = arith.constant dense<1.100000e+01> : vector<f32>
1877
1877
// CHECK: %[[VAL:.*]] = builtin.unrealized_conversion_cast %[[CST]] : vector<f32> to vector<1xf32>
1878
- // CHECK: %[[REF:.*]] = llvm.extractvalue %[[CAST_MEMREF]][1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
1878
+ // CHECK: %[[REF:.*]] = llvm.extractvalue %[[CAST_MEMREF]][1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
1879
1879
// CHECK: %[[C100:.*]] = llvm.mlir.constant(100 : index) : i64
1880
1880
// CHECK: %[[MUL:.*]] = llvm.mul %[[I]], %[[C100]] : i64
1881
1881
// CHECK: %[[ADD:.*]] = llvm.add %[[MUL]], %[[J]] : i64
@@ -2421,6 +2421,44 @@ func.func @from_elements_0d(%arg0: f32) -> vector<f32> {
2421
2421
2422
2422
// -----
2423
2423
2424
+ //===----------------------------------------------------------------------===//
2425
+ // vector.to_elements
2426
+ //===----------------------------------------------------------------------===//
2427
+
2428
+ // CHECK-LABEL: func.func @to_elements_no_dead_elements
2429
+ // CHECK-SAME: %[[A:.*]]: vector<4xf32>)
2430
+ // CHECK: %[[C0:.*]] = llvm.mlir.constant(0 : i64) : i64
2431
+ // CHECK: %[[ELEM0:.*]] = llvm.extractelement %[[A]][%[[C0]] : i64] : vector<4xf32>
2432
+ // CHECK: %[[C1:.*]] = llvm.mlir.constant(1 : i64) : i64
2433
+ // CHECK: %[[ELEM1:.*]] = llvm.extractelement %[[A]][%[[C1]] : i64] : vector<4xf32>
2434
+ // CHECK: %[[C2:.*]] = llvm.mlir.constant(2 : i64) : i64
2435
+ // CHECK: %[[ELEM2:.*]] = llvm.extractelement %[[A]][%[[C2]] : i64] : vector<4xf32>
2436
+ // CHECK: %[[C3:.*]] = llvm.mlir.constant(3 : i64) : i64
2437
+ // CHECK: %[[ELEM3:.*]] = llvm.extractelement %[[A]][%[[C3]] : i64] : vector<4xf32>
2438
+ // CHECK: return %[[ELEM0]], %[[ELEM1]], %[[ELEM2]], %[[ELEM3]] : f32, f32, f32, f32
2439
+ func.func @to_elements_no_dead_elements (%a: vector <4 xf32 >) -> (f32 , f32 , f32 , f32 ) {
2440
+ %0:4 = vector.to_elements %a : vector <4 xf32 >
2441
+ return %0#0 , %0#1 , %0#2 , %0#3 : f32 , f32 , f32 , f32
2442
+ }
2443
+
2444
+ // -----
2445
+
2446
+ // CHECK-LABEL: func.func @to_elements_dead_elements
2447
+ // CHECK-SAME: %[[A:.*]]: vector<4xf32>)
2448
+ // CHECK-NOT: llvm.mlir.constant(0 : i64) : i64
2449
+ // CHECK: %[[C1:.*]] = llvm.mlir.constant(1 : i64) : i64
2450
+ // CHECK: %[[ELEM1:.*]] = llvm.extractelement %[[A]][%[[C1]] : i64] : vector<4xf32>
2451
+ // CHECK-NOT: llvm.mlir.constant(2 : i64) : i64
2452
+ // CHECK: %[[C3:.*]] = llvm.mlir.constant(3 : i64) : i64
2453
+ // CHECK: %[[ELEM3:.*]] = llvm.extractelement %[[A]][%[[C3]] : i64] : vector<4xf32>
2454
+ // CHECK: return %[[ELEM1]], %[[ELEM3]] : f32, f32
2455
+ func.func @to_elements_dead_elements (%a: vector <4 xf32 >) -> (f32 , f32 ) {
2456
+ %0:4 = vector.to_elements %a : vector <4 xf32 >
2457
+ return %0#1 , %0#3 : f32 , f32
2458
+ }
2459
+
2460
+ // -----
2461
+
2424
2462
//===----------------------------------------------------------------------===//
2425
2463
// vector.step
2426
2464
//===----------------------------------------------------------------------===//
0 commit comments