### Description This PR builds on #99872. It implements a minimal version of function body vector unrolling to convert vector types into 1D and with a size supported by SPIR-V (2, 3 or 4 depending on the original dimension). The ops that are currently supported include those with elementwise traits (e.g. `arith.addi`), `vector.reduction` and `vector.transpose`. This PR also includes new LIT tests that only check for vector unrolling. ### Future Plans - Support more ops --------- Co-authored-by: Jakub Kuderski <kubakuderski@gmail.com>
16 lines
517 B
MLIR
16 lines
517 B
MLIR
// RUN: mlir-opt -convert-to-spirv="run-signature-conversion=false run-vector-unrolling=false" -split-input-file %s | FileCheck %s
|
|
|
|
// CHECK-LABEL: @return_scalar
|
|
// CHECK-SAME: %[[ARG0:.*]]: i32
|
|
// CHECK: spirv.ReturnValue %[[ARG0]]
|
|
func.func @return_scalar(%arg0 : i32) -> i32 {
|
|
return %arg0 : i32
|
|
}
|
|
|
|
// CHECK-LABEL: @return_vector
|
|
// CHECK-SAME: %[[ARG0:.*]]: vector<4xi32>
|
|
// CHECK: spirv.ReturnValue %[[ARG0]]
|
|
func.func @return_vector(%arg0 : vector<4xi32>) -> vector<4xi32> {
|
|
return %arg0 : vector<4xi32>
|
|
}
|