@@ -437,6 +437,9 @@ void VectorDialect::initialize() {
437
437
Operation *VectorDialect::materializeConstant (OpBuilder &builder,
438
438
Attribute value, Type type,
439
439
Location loc) {
440
+ if (auto poisonAttr = dyn_cast<ub::PoisonAttrInterface>(value))
441
+ return builder.create <ub::PoisonOp>(loc, type, poisonAttr);
442
+
440
443
return arith::ConstantOp::materialize (builder, value, type, loc);
441
444
}
442
445
@@ -2273,20 +2276,6 @@ LogicalResult foldExtractFromFromElements(ExtractOp extractOp,
2273
2276
return success ();
2274
2277
}
2275
2278
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
-
2290
2279
} // namespace
2291
2280
2292
2281
void ExtractOp::getCanonicalizationPatterns (RewritePatternSet &results,
@@ -2295,7 +2284,6 @@ void ExtractOp::getCanonicalizationPatterns(RewritePatternSet &results,
2295
2284
ExtractOpFromBroadcast, ExtractOpFromCreateMask>(context);
2296
2285
results.add (foldExtractFromShapeCastToShapeCast);
2297
2286
results.add (foldExtractFromFromElements);
2298
- results.add (canonicalizePoisonIndexInsertExtractOp<ExtractOp>);
2299
2287
}
2300
2288
2301
2289
static void populateFromInt64AttrArray (ArrayAttr arrayAttr,
@@ -3068,7 +3056,6 @@ void InsertOp::getCanonicalizationPatterns(RewritePatternSet &results,
3068
3056
MLIRContext *context) {
3069
3057
results.add <InsertToBroadcast, BroadcastFolder, InsertSplatToSplat,
3070
3058
InsertOpConstantFolder>(context);
3071
- results.add (canonicalizePoisonIndexInsertExtractOp<InsertOp>);
3072
3059
}
3073
3060
3074
3061
OpFoldResult vector::InsertOp::fold (FoldAdaptor adaptor) {
0 commit comments