[Mlir-commits] [mlir] [mlir][IR] Add builtin `TokenType` (PR #195640)
Jacques Pienaar
llvmlistbot at llvm.org
Fri May 29 00:40:48 PDT 2026
================
@@ -109,6 +119,77 @@ static bool mayBeValidWithoutTerminator(Block *block) {
return !op || op->mightHaveTrait<OpTrait::NoTerminator>();
}
+LogicalResult OperationVerifier::verifyTokenValue(
+ Operation &producer, Value value,
+ function_ref<InFlightDiagnostic()> emitProducerError) {
+ if (value.getType() != tokenType)
+ return success();
+
+ if (!producer.mightHaveTrait<OpTrait::TokenProducerTrait>())
+ return emitProducerError();
+
+ for (OpOperand &use : value.getUses()) {
+ Operation *user = use.getOwner();
+ if (user->mightHaveTrait<OpTrait::TokenConsumerTrait>())
+ continue;
+
+ return user->emitOpError()
+ << "consumes token operand #" << use.getOperandNumber()
+ << " but does not define the TokenConsumerTrait";
+ }
+
+ return success();
+}
+
+LogicalResult OperationVerifier::verifyTokenValues(Operation &op) {
+ for (auto resultIt : llvm::enumerate(op.getResults())) {
+ unsigned idx = resultIt.index();
+ OpResult result = resultIt.value();
+ if (failed(verifyTokenValue(op, result, [&]() {
+ return op.emitOpError()
+ << "produces token result #" << idx
+ << " but does not define the TokenProducerTrait";
----------------
jpienaar wrote:
s/define/have/ ? (define just makes me think its about the trait rather than op missing declaring the trait)
https://github.com/llvm/llvm-project/pull/195640
More information about the Mlir-commits
mailing list