Hi, I have a WIP implementation for one-to-many function signature conversion (due to vector unrolling). The purpose is to convert the vector types to the ones that are supported by the SPIR-V dialect.
Could someone please take a look and let me know whether you think I am on the right track or if I should do it differently? Here is the URL to my branch. Thanks!
Example Input
func.func @simple_ret(%arg0: vector<8xi32>) -> vector<8xi32> {
return %arg0 : vector<8xi32>
}
Example Output
func.func @simple_ret(%arg0: vector<4xi32>, %arg1: vector<4xi32>) -> (vector<4xi32>, vector<4xi32>) {
%cst = arith.constant dense<0> : vector<8xi32>
%0 = vector.insert_strided_slice %arg0, %cst {offsets = [0], strides = [1]} : vector<4xi32> into vector<8xi32>
%1 = vector.insert_strided_slice %arg1, %0 {offsets = [4], strides = [1]} : vector<4xi32> into vector<8xi32>
%2 = vector.extract_strided_slice %cst {offsets = [0], strides = [1]} : vector<8xi32> to vector<4xi32>
%3 = vector.extract_strided_slice %cst {offsets = [4], strides = [1]} : vector<8xi32> to vector<4xi32>
return %2, %3 : vector<4xi32>, vector<4xi32>
}