xref: /llvm-project/mlir/lib/Dialect/DLTI/Traits.cpp (revision abd95342f0b94e140b36ac954b8f8c29b1393861)
1 //===- Traits.cpp - Traits for MLIR DLTI dialect --------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "mlir/Dialect/DLTI/Traits.h"
10 #include "mlir/Dialect/DLTI/DLTI.h"
11 #include "mlir/Interfaces/DataLayoutInterfaces.h"
12 
13 using namespace mlir;
14 
verifyHasDefaultDLTIDataLayoutTrait(Operation * op)15 LogicalResult mlir::impl::verifyHasDefaultDLTIDataLayoutTrait(Operation *op) {
16   // TODO: consider having trait inheritance so that HasDefaultDLTIDataLayout
17   // trait can inherit DataLayoutOpInterface::Trait and enforce the validity of
18   // the assertion below.
19   assert(
20       isa<DataLayoutOpInterface>(op) &&
21       "HasDefaultDLTIDataLayout trait unexpectedly attached to an op that does "
22       "not implement DataLayoutOpInterface");
23   return success();
24 }
25 
getDataLayoutSpec(Operation * op)26 DataLayoutSpecInterface mlir::impl::getDataLayoutSpec(Operation *op) {
27   return op->getAttrOfType<DataLayoutSpecAttr>(
28       DLTIDialect::kDataLayoutAttrName);
29 }
30 
getTargetSystemSpec(Operation * op)31 TargetSystemSpecInterface mlir::impl::getTargetSystemSpec(Operation *op) {
32   return op->getAttrOfType<TargetSystemSpecAttr>(
33       DLTIDialect::kTargetSystemDescAttrName);
34 }
35