commit | 1be15602c6ed72c90fa5263e5dbf5a5c28d97502 | [log] [tgz] |
---|---|---|
author | Stanislav Funiak <stano@cerebras.net> | Fri Nov 26 17:57:30 2021 +0530 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Nov 26 04:42:28 2021 -0800 |
tree | c13a52291b9ab66de510402b6f01460c034a5a34 | |
parent | 5854f83733470d1e7f9b52d4b242becb0704a111 [diff] |
Defines new PDLInterp operations needed for multi-root matching in PDL. This is commit 1 of 4 for the multi-root matching in PDL, discussed in https://llvm.discourse.group/t/rfc-multi-root-pdl-patterns-for-kernel-matching/4148 (topic flagged for review). These operations are: * pdl.get_accepting_ops: Returns a list of operations accepting the given value or a range of values at the specified position. Thus if there are two operations `%op1 = "foo"(%val)` and `%op2 = "bar"(%val)` accepting a value at position 0, `%ops = pdl_interp.get_accepting_ops of %val : !pdl.value at 0` will return both of them. This allows us to traverse upwards from a value to operations accepting the value. * pdl.choose_op: Iteratively chooses one operation from a range of operations. Therefore, writing `%op = pdl_interp.choose_op from %ops` in the example above will select either `%op1`or `%op2`. Testing: Added the corresponding test cases to mlir/test/Dialect/PDLInterp/ops.mlir. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D108543 GitOrigin-RevId: 842b6861c01cc6961f170d58332ecf0fb0232441
See https://mlir.llvm.org/ for more information.