207 lines · plain
1// RUN: mlir-pdll %s -I %S -split-input-file | FileCheck %s2 3//===----------------------------------------------------------------------===//4// CompoundStmt5//===----------------------------------------------------------------------===//6 7// CHECK: Module8// CHECK: CompoundStmt9// CHECK: |-LetStmt10// CHECK: `-EraseStmt11Pattern {12 let root: Op;13 erase root;14}15 16// -----17 18//===----------------------------------------------------------------------===//19// EraseStmt20//===----------------------------------------------------------------------===//21 22// CHECK: Module23// CHECK: EraseStmt24// CHECK: `-DeclRefExpr {{.*}} Type<Op>25Pattern {26 erase _: Op;27}28 29// -----30 31//===----------------------------------------------------------------------===//32// LetStmt33//===----------------------------------------------------------------------===//34 35// CHECK: Module36// CHECK: LetStmt37// CHECK: `-VariableDecl {{.*}} Name<attrVar> Type<Attr>38// CHECK: `Constraints`39// CHECK: `-AttrConstraintDecl40// CHECK: `-VariableDecl {{.*}} Name<var> Type<Op>41// CHECK: `Constraints`42// CHECK: `-OpConstraintDecl43// CHECK: `-OpNameDecl44Pattern {45 let attrVar: Attr;46 let var: Op;47 erase var;48}49 50// -----51 52// Check for proper refinement between constraint types.53 54// CHECK: Module55// CHECK: LetStmt56// CHECK: `-VariableDecl {{.*}} Name<var> Type<Op<dialect.op>>57// CHECK: `Constraints`58// CHECK: `-OpConstraintDecl59// CHECK: `-OpNameDecl60// CHECK: `-OpConstraintDecl61// CHECK: `-OpNameDecl {{.*}} Name<dialect.op>62Pattern {63 let var: [Op, Op<dialect.op>];64 erase var;65}66 67// -----68 69// Check for proper conversion between initializer and constraint type.70 71// CHECK: Module72// CHECK: LetStmt73// CHECK: `-VariableDecl {{.*}} Name<var> Type<Op<dialect.op>>74// CHECK: `-DeclRefExpr {{.*}} Type<Op<dialect.op>>75// CHECK: `-VariableDecl {{.*}} Name<input>76// CHECK: `Constraints`77// CHECK: `-OpConstraintDecl78// CHECK: `-OpNameDecl79Pattern {80 let input: Op<dialect.op>;81 let var: Op = input;82 erase var;83}84 85// -----86 87// Check for proper conversion between initializer and constraint type.88 89// CHECK: Module90// CHECK: LetStmt91// CHECK: `-VariableDecl {{.*}} Name<var> Type<Value>92// CHECK: `-MemberAccessExpr {{.*}} Member<$results> Type<Value>93// CHECK: `-DeclRefExpr {{.*}} Type<Op<dialect.op>>94// CHECK: `-VariableDecl {{.*}} Name<input>95// CHECK: `Constraints`96// CHECK: `-ValueConstraintDecl97Pattern {98 let input: Op<dialect.op>;99 let var: Value = input;100 erase _: Op;101}102 103// -----104 105// Check for proper conversion between initializer and constraint type.106 107// CHECK: Module108// CHECK: LetStmt109// CHECK: `-VariableDecl {{.*}} Name<var> Type<ValueRange>110// CHECK: `-MemberAccessExpr {{.*}} Member<$results> Type<ValueRange>111// CHECK: `-DeclRefExpr {{.*}} Type<Op<dialect.op>>112// CHECK: `-VariableDecl {{.*}} Name<input>113// CHECK: `Constraints`114// CHECK: `-ValueRangeConstraintDecl115Pattern {116 let input: Op<dialect.op>;117 let var: ValueRange = input;118 erase _: Op;119}120 121// -----122 123// Check for proper handling of type constraints.124 125// CHECK: Module126// CHECK: LetStmt127// CHECK: `-VariableDecl {{.*}} Name<var> Type<Value>128// CHECK: `Constraints`129// CHECK: `-ValueConstraintDecl130// CHECK: `-DeclRefExpr {{.*}} Type<Type>131// CHECK: `-VariableDecl {{.*}} Name<_> Type<Type>132// CHECK: `Constraints`133// CHECK: `-TypeConstraintDecl134Pattern {135 let var: Value<_: Type>;136 erase _: Op;137}138 139// -----140 141// Check for proper handling of type constraints.142 143// CHECK: Module144// CHECK: LetStmt145// CHECK: `-VariableDecl {{.*}} Name<var> Type<ValueRange>146// CHECK: `Constraints`147// CHECK: `-ValueRangeConstraintDecl148// CHECK: `-DeclRefExpr {{.*}} Type<TypeRange>149// CHECK: `-VariableDecl {{.*}} Name<_> Type<TypeRange>150// CHECK: `Constraints`151// CHECK: `-TypeRangeConstraintDecl152Pattern {153 let var: ValueRange<_: TypeRange>;154 erase _: Op;155}156 157// -----158 159//===----------------------------------------------------------------------===//160// ReplaceStmt161//===----------------------------------------------------------------------===//162 163// CHECK: Module164// CHECK: `-ReplaceStmt165// CHECK: `-DeclRefExpr {{.*}} Type<Op>166// CHECK: ReplValues167// CHECK: `-OperationExpr {{.*}} Type<Op<my_dialect.foo>>168Pattern {169 replace _: Op with op<my_dialect.foo>;170}171 172// -----173 174// CHECK: Module175// CHECK: `-ReplaceStmt176// CHECK: `-DeclRefExpr {{.*}} Type<Op>177// CHECK: ReplValues178// CHECK: |-DeclRefExpr {{.*}} Type<Value>179// CHECK: |-DeclRefExpr {{.*}} Type<ValueRange>180// CHECK: `-MemberAccessExpr {{.*}} Member<$results> Type<ValueRange>181// CHECK: `-OperationExpr {{.*}} Type<Op<my_dialect.foo>>182Pattern {183 replace _: Op with (_: Value, _: ValueRange, op<my_dialect.foo>);184}185 186// -----187 188//===----------------------------------------------------------------------===//189// RewriteStmt190//===----------------------------------------------------------------------===//191 192// CHECK: Module193// CHECK: `-RewriteStmt194// CHECK: |-DeclRefExpr {{.*}} Type<Op>195// CHECK: `-CompoundStmt196// CHECK: |-OperationExpr {{.*}} Type<Op<my_dialect.some_op>>197// CHECK: `-ReplaceStmt {{.*}}198// CHECK: `-DeclRefExpr {{.*}} Type<Op>199// CHECK: `ReplValues`200// CHECK: `-OperationExpr {{.*}} Type<Op<my_dialect.foo>>201Pattern {202 rewrite root: Op with {203 op<my_dialect.some_op>;204 replace root with op<my_dialect.foo>;205 };206}207