@@ -437,6 +437,9 @@ void VectorDialect::initialize() {
437437Operation *VectorDialect::materializeConstant (OpBuilder &builder,
438438 Attribute value, Type type,
439439 Location loc) {
440+ if (auto poisonAttr = dyn_cast<ub::PoisonAttrInterface>(value))
441+ return builder.create <ub::PoisonOp>(loc, type, poisonAttr);
442+
440443 return arith::ConstantOp::materialize (builder, value, type, loc);
441444}
442445
@@ -2273,20 +2276,6 @@ LogicalResult foldExtractFromFromElements(ExtractOp extractOp,
22732276 return success ();
22742277}
22752278
2276- // / Fold an insert or extract operation into an poison value when a poison index
2277- // / is found at any dimension of the static position.
2278- template <typename OpTy>
2279- LogicalResult
2280- canonicalizePoisonIndexInsertExtractOp (OpTy op, PatternRewriter &rewriter) {
2281- if (auto poisonAttr = foldPoisonIndexInsertExtractOp (
2282- op.getContext (), op.getStaticPosition (), OpTy::kPoisonIndex )) {
2283- rewriter.replaceOpWithNewOp <ub::PoisonOp>(op, op.getType (), poisonAttr);
2284- return success ();
2285- }
2286-
2287- return failure ();
2288- }
2289-
22902279} // namespace
22912280
22922281void ExtractOp::getCanonicalizationPatterns (RewritePatternSet &results,
@@ -2295,7 +2284,6 @@ void ExtractOp::getCanonicalizationPatterns(RewritePatternSet &results,
22952284 ExtractOpFromBroadcast, ExtractOpFromCreateMask>(context);
22962285 results.add (foldExtractFromShapeCastToShapeCast);
22972286 results.add (foldExtractFromFromElements);
2298- results.add (canonicalizePoisonIndexInsertExtractOp<ExtractOp>);
22992287}
23002288
23012289static void populateFromInt64AttrArray (ArrayAttr arrayAttr,
@@ -3068,7 +3056,6 @@ void InsertOp::getCanonicalizationPatterns(RewritePatternSet &results,
30683056 MLIRContext *context) {
30693057 results.add <InsertToBroadcast, BroadcastFolder, InsertSplatToSplat,
30703058 InsertOpConstantFolder>(context);
3071- results.add (canonicalizePoisonIndexInsertExtractOp<InsertOp>);
30723059}
30733060
30743061OpFoldResult vector::InsertOp::fold (FoldAdaptor adaptor) {
0 commit comments