@@ -1367,11 +1367,11 @@ func.func @insert_extract_to_broadcast(%arg0 : vector<1x1x4xf32>,
1367
1367
1368
1368
// -----
1369
1369
1370
- // CHECK-LABEL: extract_constant
1371
- // CHECK-DAG: %[[CST1:.*]] = arith.constant 1 : i32
1372
- // CHECK-DAG: %[[CST0:.*]] = arith.constant dense<2.000000e+00> : vector<7xf32>
1373
- // CHECK: return %[[CST0]], %[[CST1]] : vector<7xf32>, i32
1374
- func.func @extract_constant () -> (vector <7 xf32 >, i32 ) {
1370
+ // CHECK-LABEL: func.func @extract_splat_constant
1371
+ // CHECK-DAG: %[[CST1:.*]] = arith.constant 1 : i32
1372
+ // CHECK-DAG: %[[CST0:.*]] = arith.constant dense<2.000000e+00> : vector<7xf32>
1373
+ // CHECK-NEXT: return %[[CST0]], %[[CST1]] : vector<7xf32>, i32
1374
+ func.func @extract_splat_constant () -> (vector <7 xf32 >, i32 ) {
1375
1375
%cst = arith.constant dense <2.000000e+00 > : vector <29 x7 xf32 >
1376
1376
%cst_1 = arith.constant dense <1 > : vector <4 x37 x9 xi32 >
1377
1377
%0 = vector.extract %cst [2 ] : vector <29 x7 xf32 >
@@ -1381,6 +1381,57 @@ func.func @extract_constant() -> (vector<7xf32>, i32) {
1381
1381
1382
1382
// -----
1383
1383
1384
+ // CHECK-LABEL: func.func @extract_1d_constant
1385
+ // CHECK-DAG: %[[I32CST:.*]] = arith.constant 3 : i32
1386
+ // CHECK-DAG: %[[IDXCST:.*]] = arith.constant 1 : index
1387
+ // CHECK-DAG: %[[F32CST:.*]] = arith.constant 2.000000e+00 : f32
1388
+ // CHECK-NEXT: return %[[I32CST]], %[[IDXCST]], %[[F32CST]] : i32, index, f32
1389
+ func.func @extract_1d_constant () -> (i32 , index , f32 ) {
1390
+ %icst = arith.constant dense <[1 , 2 , 3 , 4 ]> : vector <4 xi32 >
1391
+ %e = vector.extract %icst [2 ] : vector <4 xi32 >
1392
+ %idx_cst = arith.constant dense <[0 , 1 , 2 ]> : vector <3 xindex >
1393
+ %f = vector.extract %idx_cst [1 ] : vector <3 xindex >
1394
+ %fcst = arith.constant dense <[2.000000e+00 , 3.000000e+00 , 4.000000e+00 ]> : vector <3 xf32 >
1395
+ %g = vector.extract %fcst [0 ] : vector <3 xf32 >
1396
+ return %e , %f , %g : i32 , index , f32
1397
+ }
1398
+
1399
+ // -----
1400
+
1401
+ // CHECK-LABEL: func.func @extract_2d_constant
1402
+ // CHECK-DAG: %[[ACST:.*]] = arith.constant 0 : i32
1403
+ // CHECK-DAG: %[[BCST:.*]] = arith.constant 2 : i32
1404
+ // CHECK-DAG: %[[CCST:.*]] = arith.constant 3 : i32
1405
+ // CHECK-DAG: %[[DCST:.*]] = arith.constant 5 : i32
1406
+ // CHECK-NEXT: return %[[ACST]], %[[BCST]], %[[CCST]], %[[DCST]] : i32, i32, i32, i32
1407
+ func.func @extract_2d_constant () -> (i32 , i32 , i32 , i32 ) {
1408
+ %cst = arith.constant dense <[[0 , 1 , 2 ], [3 , 4 , 5 ]]> : vector <2 x3 xi32 >
1409
+ %a = vector.extract %cst [0 , 0 ] : vector <2 x3 xi32 >
1410
+ %b = vector.extract %cst [0 , 2 ] : vector <2 x3 xi32 >
1411
+ %c = vector.extract %cst [1 , 0 ] : vector <2 x3 xi32 >
1412
+ %d = vector.extract %cst [1 , 2 ] : vector <2 x3 xi32 >
1413
+ return %a , %b , %c , %d : i32 , i32 , i32 , i32
1414
+ }
1415
+
1416
+ // -----
1417
+
1418
+ // CHECK-LABEL: func.func @extract_3d_constant
1419
+ // CHECK-DAG: %[[ACST:.*]] = arith.constant 0 : i32
1420
+ // CHECK-DAG: %[[BCST:.*]] = arith.constant 1 : i32
1421
+ // CHECK-DAG: %[[CCST:.*]] = arith.constant 9 : i32
1422
+ // CHECK-DAG: %[[DCST:.*]] = arith.constant 10 : i32
1423
+ // CHECK-NEXT: return %[[ACST]], %[[BCST]], %[[CCST]], %[[DCST]] : i32, i32, i32, i32
1424
+ func.func @extract_3d_constant () -> (i32 , i32 , i32 , i32 ) {
1425
+ %cst = arith.constant dense <[[[0 , 1 ], [2 , 3 ], [4 , 5 ]], [[6 , 7 ], [8 , 9 ], [10 , 11 ]]]> : vector <2 x3 x2 xi32 >
1426
+ %a = vector.extract %cst [0 , 0 , 0 ] : vector <2 x3 x2 xi32 >
1427
+ %b = vector.extract %cst [0 , 0 , 1 ] : vector <2 x3 x2 xi32 >
1428
+ %c = vector.extract %cst [1 , 1 , 1 ] : vector <2 x3 x2 xi32 >
1429
+ %d = vector.extract %cst [1 , 2 , 0 ] : vector <2 x3 x2 xi32 >
1430
+ return %a , %b , %c , %d : i32 , i32 , i32 , i32
1431
+ }
1432
+
1433
+ // -----
1434
+
1384
1435
// CHECK-LABEL: extract_extract_strided
1385
1436
// CHECK-SAME: %[[A:.*]]: vector<32x16x4xf16>
1386
1437
// CHECK: %[[V:.*]] = vector.extract %[[A]][9, 7] : vector<32x16x4xf16>
0 commit comments