[Mlir-commits] [mlir] [MLIR] Testing arith-to-emitc conversions using opaque types (PR #137936)

Niklas Degener llvmlistbot at llvm.org
Mon May 5 03:58:32 PDT 2025


================
@@ -572,21 +588,33 @@ class ShiftOpConversion : public OpConversionPattern<ArithOp> {
           op.getLoc(), rhsType, "sizeof", ArrayRef<Value>{eight});
       width = rewriter.create<emitc::MulOp>(op.getLoc(), rhsType, eight,
                                             sizeOfCall.getResult(0));
-    } else {
+    } else if (!retIsOpaque) {
       width = rewriter.create<emitc::ConstantOp>(
           op.getLoc(), rhsType,
           rewriter.getIntegerAttr(rhsType, type.getIntOrFloatBitWidth()));
+    } else {
+      width = rewriter.create<emitc::ConstantOp>(
+          op.getLoc(), rhsType,
+          emitc::OpaqueAttr::get(rhsType.getContext(),
+                                 "opaque_shift_bitwidth"));
----------------
ndegener-amd wrote:

If opaque types are used, the bitwidth, which is needed for the shiftOp, can't be determined. So the opaque attribute serves as a reference point for where to enter the bitwidth of the type later on.

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


More information about the Mlir-commits mailing list