[Mlir-commits] [mlir] [mlir][EmitC] Add an `emitc.conditional` operator (PR #84883)

Matthias Gehre llvmlistbot at llvm.org
Tue Mar 12 01:39:44 PDT 2024


================
@@ -54,6 +54,26 @@ class ArithOpConversion final : public OpConversionPattern<ArithOp> {
     return success();
   }
 };
+
+class SelectOpConversion : public OpConversionPattern<arith::SelectOp> {
+public:
+  using OpConversionPattern<arith::SelectOp>::OpConversionPattern;
+
+  LogicalResult
+  matchAndRewrite(arith::SelectOp selectOp, OpAdaptor adaptor,
+                  ConversionPatternRewriter &rewriter) const override {
+
+    if (!selectOp.getCondition().getType().isInteger())
+      return rewriter.notifyMatchFailure(
+          selectOp, "can only converted if condition is a scalar of type i1");
+
+    rewriter.replaceOpWithNewOp<emitc::ConditionalOp>(
+        selectOp, selectOp.getType(), adaptor.getOperands());
----------------
mgehre-amd wrote:

```suggestion
        selectOp, getTypeConverter()->convertType(selectOp.getType()), adaptor.getOperands());
```

https://github.com/llvm/llvm-project/pull/84883


More information about the Mlir-commits mailing list