| // RUN: mlir-tblgen -gen-op-decls -I %S/../../include %s | FileCheck %s --check-prefix=DECL |
| // RUN: mlir-tblgen -gen-op-defs -I %S/../../include %s | FileCheck %s --check-prefix=DEF |
| |
| include "mlir/IR/OpBase.td" |
| |
| // Check using the dialect name as the namespace |
| def A_Dialect : Dialect { |
| let name = "a"; |
| } |
| |
| def A_SomeOp : Op<A_Dialect, "some_op", []>; |
| |
| // Check a single namespace |
| def B_Dialect : Dialect { |
| let name = "b"; |
| let cppNamespace = "BNS"; |
| } |
| |
| // Check nested namespaces |
| def B_SomeOp : Op<B_Dialect, "some_op", []>; |
| |
| def C_Dialect : Dialect { |
| let name = "c"; |
| let cppNamespace = "::C::CC"; |
| } |
| |
| def C_SomeOp : Op<C_Dialect, "some_op", []>; |
| |
| // Check no namespaces |
| def D_Dialect : Dialect { |
| let name = "d"; |
| let cppNamespace = ""; |
| } |
| |
| def D_DSomeOp : Op<D_Dialect, "some_op", []>; |
| |
| // Check op with namespace override. |
| def E_Dialect : Dialect { |
| let name = "e"; |
| let cppNamespace = "ENS"; |
| } |
| |
| def E_SomeOp : Op<E_Dialect, "some_op", []>; |
| def E_SpecialNSOp : Op<E_Dialect, "special_ns_op", []> { |
| let cppNamespace = "::E::SPECIAL_NS"; |
| } |
| |
| // DEF-LABEL: GET_OP_LIST |
| // DEF: a::SomeOp |
| // DEF-NEXT: BNS::SomeOp |
| // DEF-NEXT: ::C::CC::SomeOp |
| // DEF-NEXT: DSomeOp |
| // DEF-NEXT: ENS::SomeOp |
| // DEF-NEXT: ::E::SPECIAL_NS::SpecialNSOp |
| |
| // DEF-LABEL: GET_OP_CLASSES |
| // DEF: a::SomeOp definitions |
| // DEF: BNS::SomeOp definitions |
| // DEF: ::C::CC::SomeOp definitions |
| // DEF: DSomeOp definitions |
| // DEF: ENS::SomeOp definitions |
| // DEF: ::E::SPECIAL_NS::SpecialNSOp definitions |
| |
| // DECL-LABEL: GET_OP_CLASSES |
| // DECL: a::SomeOp declarations |
| // DECL: BNS::SomeOp declarations |
| // DECL: ::C::CC::SomeOp declarations |
| // DECL: DSomeOp declarations |
| // DECL: ENS::SomeOp declarations |
| // DECL: ::E::SPECIAL_NS::SpecialNSOp declarations |