Skip to content

Commit 5540eac

Browse files
authored
[mlir][vector] Disable from_elements for scalable vectors (#117868)
Disables `vector.from_elements` for scalable vectors. Given that the length of scalable vectors is unknown at compile time, the semantics of this Op are unclear in this context.
1 parent 8dd0da5 commit 5540eac

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

mlir/include/mlir/Dialect/Vector/IR/VectorOps.td

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,10 +806,12 @@ def Vector_FromElementsOp : Vector_Op<"from_elements", [
806806
// [[[%f1, %f2]], [[%f3, %f4]], [[%f5, %f6]]]
807807
%3 = vector.from_elements %f1, %f2, %f3, %f4, %f5, %f6 : vector<3x1x2xf32>
808808
```
809+
810+
Note, scalable vectors are not supported.
809811
}];
810812

811813
let arguments = (ins Variadic<AnyType>:$elements);
812-
let results = (outs AnyVectorOfAnyRank:$result);
814+
let results = (outs AnyFixedVectorOfAnyRank:$result);
813815
let assemblyFormat = "$elements attr-dict `:` type($result)";
814816
let hasCanonicalizer = 1;
815817
}

mlir/test/Dialect/Vector/invalid.mlir

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1803,6 +1803,14 @@ func.func @invalid_from_elements(%a: f32, %b: i32) {
18031803

18041804
// -----
18051805

1806+
func.func @invalid_from_elements_scalable(%a: f32, %b: i32) {
1807+
// expected-error @+1 {{'result' must be fixed-length vector of any type values, but got 'vector<[2]xf32>'}}
1808+
vector.from_elements %a, %b : vector<[2]xf32>
1809+
return
1810+
}
1811+
1812+
// -----
1813+
18061814
func.func @invalid_step_0d() {
18071815
// expected-error @+1 {{vector.step' op result #0 must be vector of index values of ranks 1, but got 'vector<f32>'}}
18081816
vector.step : vector<f32>

0 commit comments

Comments
 (0)