Files
clang-p2996/mlir/test/mlir-pdll/CodeGen/MLIR/stmt.pdll
River Riddle 95b4e88b1d [mlir:PDLL] Add support for PDL MLIR code generation
This commits starts to plumb PDLL down into MLIR and adds an initial
PDL generator. After this commit, we will have conceptually support
end-to-end execution of PDLL. Followups will add CPP generation to
match the current DRR setup, and begin to add various end-to-end
tests to test PDLL execution.

Differential Revision: https://reviews.llvm.org/D119779
2022-02-26 11:08:51 -08:00

62 lines
1.8 KiB
Plaintext

// RUN: mlir-pdll %s -I %S -split-input-file -x mlir | FileCheck %s
//===----------------------------------------------------------------------===//
// EraseStmt
//===----------------------------------------------------------------------===//
// CHECK: pdl.pattern @EraseStmt
// CHECK: %[[OP:.*]] = operation
// CHECK: rewrite %[[OP]]
// CHECK: erase %[[OP]]
Pattern EraseStmt => erase op<>;
// -----
// CHECK: pdl.pattern @EraseStmtNested
// CHECK: %[[OP:.*]] = operation
// CHECK: rewrite %[[OP]]
// CHECK: erase %[[OP]]
Pattern EraseStmtNested => rewrite root: Op with { erase root; };
// -----
//===----------------------------------------------------------------------===//
// ReplaceStmt
//===----------------------------------------------------------------------===//
// CHECK: pdl.pattern @ReplaceStmt
// CHECK: %[[OPERANDS:.*]] = operands
// CHECK: %[[OP:.*]] = operation(%[[OPERANDS]]
// CHECK: rewrite %[[OP]]
// CHECK: replace %[[OP]] with(%[[OPERANDS]] : !pdl.range<value>)
Pattern ReplaceStmt => replace op<>(operands: ValueRange) with operands;
// -----
// CHECK: pdl.pattern @ReplaceStmtNested
// CHECK: %[[OPERANDS:.*]] = operands
// CHECK: %[[OP:.*]] = operation(%[[OPERANDS]]
// CHECK: rewrite %[[OP]]
// CHECK: replace %[[OP]] with(%[[OPERANDS]] : !pdl.range<value>)
Pattern ReplaceStmtNested {
let root = op<>(operands: ValueRange);
rewrite root with { replace root with operands; };
}
// -----
//===----------------------------------------------------------------------===//
// RewriteStmt
//===----------------------------------------------------------------------===//
// CHECK: pdl.pattern @RewriteStmtNested
// CHECK: %[[OP:.*]] = operation
// CHECK: rewrite %[[OP]]
// CHECK: erase %[[OP]]
Pattern RewriteStmtNested {
rewrite root: Op with {
rewrite root with { erase root; };
};
}