30 lines · plain
1// RUN: mlir-opt -split-input-file -test-vector-extract-strided-slice-lowering %s | FileCheck %s2 3// CHECK-LABEL: func.func @extract_strided_slice_1D4// CHECK-SAME: (%[[INPUT:.+]]: vector<8xf16>)5func.func @extract_strided_slice_1D(%input: vector<8xf16>) -> vector<4xf16> {6 %0 = vector.extract_strided_slice %input {offsets = [1], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>7 return %0: vector<4xf16>8}9 10// CHECK: %[[INIT:.+]] = arith.constant dense<0.000000e+00> : vector<4xf16>11// CHECK: %[[E0:.+]] = vector.extract %[[INPUT]][1] : f16 from vector<8xf16>12// CHECK: %[[E1:.+]] = vector.extract %[[INPUT]][2] : f16 from vector<8xf16>13// CHECK: %[[E2:.+]] = vector.extract %[[INPUT]][3] : f16 from vector<8xf16>14// CHECK: %[[E3:.+]] = vector.extract %[[INPUT]][4] : f16 from vector<8xf16>15// CHECK: %[[I0:.+]] = vector.insert %[[E0]], %[[INIT]] [0] : f16 into vector<4xf16>16// CHECK: %[[I1:.+]] = vector.insert %[[E1]], %[[I0]] [1] : f16 into vector<4xf16>17// CHECK: %[[I2:.+]] = vector.insert %[[E2]], %[[I1]] [2] : f16 into vector<4xf16>18// CHECK: %[[I3:.+]] = vector.insert %[[E3]], %[[I2]] [3] : f16 into vector<4xf16>19// CHECK: return %[[I3]]20 21 22// -----23 24// CHECK-LABEL: func.func @extract_strided_slice_2D25func.func @extract_strided_slice_2D(%input: vector<1x8xf16>) -> vector<1x4xf16> {26 // CHECK: vector.extract_strided_slice27 %0 = vector.extract_strided_slice %input {offsets = [0, 1], sizes = [1, 4], strides = [1, 1]} : vector<1x8xf16> to vector<1x4xf16>28 return %0: vector<1x4xf16>29}30