[Mlir-commits] [mlir] [MLIR][NVVM] Declare InferIntRangeInterface for RangeableRegisterOp (PR #122263)
Guray Ozen
llvmlistbot at llvm.org
Thu Jan 9 07:23:59 PST 2025
================
@@ -147,6 +148,21 @@ class NVVM_SpecialRangeableRegisterOp<string mnemonic, list<Trait> traits = []>
build($_builder, $_state, resultType, ::mlir::LLVM::ConstantRangeAttr{});
}]>
];
+
+ // Define this method for the InferIntRangeInterface.
+ let extraClassDefinition = [{
+ // Infer the result ranges based on the range attribute.
+ void $cppClass::inferResultRanges(
+ ArrayRef<::mlir::ConstantIntRanges> argRanges,
+ SetIntRangeFn setResultRanges) {
+ if (auto rangeAttr = getOperation()->getAttrOfType<LLVM::ConstantRangeAttr>("range")) {
+ setResultRanges(getResult(),
+ {rangeAttr.getLower(), rangeAttr.getUpper(),
+ rangeAttr.getLower(), rangeAttr.getUpper()});
+ }
+ }
+ }];
----------------
grypp wrote:
I agree of having C++ in general. But in this case, it'll be very verbose.
`NVVM_SpecialRangeableRegisterOp` is used to generate 33 NVVM OPs. I need to replicate inferResultRanges function for all of them in C++.
https://github.com/llvm/llvm-project/pull/122263
More information about the Mlir-commits
mailing list