File: vector-extract-strided-slice-lowering.mlir

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (29 lines) | stat: -rw-r--r-- 1,483 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// RUN: mlir-opt -split-input-file -test-vector-extract-strided-slice-lowering %s | FileCheck %s

// CHECK-LABEL: func.func @extract_strided_slice_1D
//  CHECK-SAME: (%[[INPUT:.+]]: vector<8xf16>)
func.func @extract_strided_slice_1D(%input: vector<8xf16>) -> vector<4xf16> {
  %0 = vector.extract_strided_slice %input {offsets = [1], sizes = [4], strides = [1]} : vector<8xf16> to vector<4xf16>
  return %0: vector<4xf16>
}

// CHECK: %[[INIT:.+]] = arith.constant dense<0.000000e+00> : vector<4xf16>
// CHECK: %[[E0:.+]] = vector.extract %[[INPUT]][1] : vector<8xf16>
// CHECK: %[[E1:.+]] = vector.extract %[[INPUT]][2] : vector<8xf16>
// CHECK: %[[E2:.+]] = vector.extract %[[INPUT]][3] : vector<8xf16>
// CHECK: %[[E3:.+]] = vector.extract %[[INPUT]][4] : vector<8xf16>
// CHECK: %[[I0:.+]] = vector.insert %[[E0]], %[[INIT]] [0] : f16 into vector<4xf16>
// CHECK: %[[I1:.+]] = vector.insert %[[E1]], %[[I0]] [1] : f16 into vector<4xf16>
// CHECK: %[[I2:.+]] = vector.insert %[[E2]], %[[I1]] [2] : f16 into vector<4xf16>
// CHECK: %[[I3:.+]] = vector.insert %[[E3]], %[[I2]] [3] : f16 into vector<4xf16>
// CHECK: return %[[I3]]


// -----

// CHECK-LABEL: func.func @extract_strided_slice_2D
func.func @extract_strided_slice_2D(%input: vector<1x8xf16>) -> vector<1x4xf16> {
  // CHECK: vector.extract_strided_slice
  %0 = vector.extract_strided_slice %input {offsets = [0, 1], sizes = [1, 4], strides = [1, 1]} : vector<1x8xf16> to vector<1x4xf16>
  return %0: vector<1x4xf16>
}