Re-Revert #5603 "Fix getting original shape in launch config" (#5868) (#5868)
This causes a miscompile on the following input:
https://gist.github.com/GMNGeoffrey/97a4c4be1471e7258c04ccf2ea014705.
When run through iree-translate and then iree-run-module on the vulkan backend with
parameters from this flagfile: https://gist.github.com/cea66f9fefb703e8203ebe3a97d10c1f
Reverts google/iree#5853
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/KernelDispatchUtils.cpp b/iree/compiler/Conversion/LinalgToSPIRV/KernelDispatchUtils.cpp
index 63002aa..05a6b9e 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/KernelDispatchUtils.cpp
+++ b/iree/compiler/Conversion/LinalgToSPIRV/KernelDispatchUtils.cpp
@@ -331,25 +331,19 @@
const SPIRVCodegenOptions &options,
TileSizesListType &tileSizes,
LaunchConfigInfo &config) {
- // Skip vectorization for non-minor identity inputs and non-identity osutput
- // as it generates transfer_read ops with permutation maps that we currently
- // cannot lower.
+ // Skip vectorization for non-minor identity inputs as it generates
+ // transfer_read ops with permutation maps that we currently cannot lower.
// TODO: Remove this restriction once the lowering of the permutation map is
// supported in core.
- bool vectorize =
- !linalgOp.hasIndexSemantics() &&
- llvm::all_of(linalgOp.getInputIndexingMaps(),
- [](AffineMap &map) { return map.isMinorIdentity(); }) &&
- llvm::all_of(linalgOp.getOutputIndexingMaps(),
- [](AffineMap &map) { return map.isIdentity(); });
+ bool vectorize = llvm::all_of(linalgOp.getIndexingMaps(), [](AffineMap &map) {
+ return map.isMinorIdentity();
+ });
int64_t subgroupSize =
targetEnv.getResourceLimits().subgroup_size().getValue().getSExtValue();
config.workgroupSize[0] = subgroupSize;
config.workgroupSize[1] = 1;
config.workgroupSize[2] = 1;
- SmallVector<ShapedType> inputTypes, outputTypes;
- std::tie(inputTypes, outputTypes) = getInputOutputTypes(linalgOp);
- ShapedType outputShape = outputTypes[0];
+ ShapedType outputShape = linalgOp.getOutputShapedType(0);
SmallVector<int64_t, 4> candidateTileSizes;
// When Vectororization is not enabled we skil the second level of tiling and