xref: /llvm-project/mlir/lib/Dialect/DLTI/Traits.cpp (revision abd95342f0b94e140b36ac954b8f8c29b1393861)
13ba14fa0SAlex Zinenko //===- Traits.cpp - Traits for MLIR DLTI dialect --------------------------===//
23ba14fa0SAlex Zinenko //
33ba14fa0SAlex Zinenko // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
43ba14fa0SAlex Zinenko // See https://llvm.org/LICENSE.txt for license information.
53ba14fa0SAlex Zinenko // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
63ba14fa0SAlex Zinenko //
73ba14fa0SAlex Zinenko //===----------------------------------------------------------------------===//
83ba14fa0SAlex Zinenko 
93ba14fa0SAlex Zinenko #include "mlir/Dialect/DLTI/Traits.h"
103ba14fa0SAlex Zinenko #include "mlir/Dialect/DLTI/DLTI.h"
113ba14fa0SAlex Zinenko #include "mlir/Interfaces/DataLayoutInterfaces.h"
123ba14fa0SAlex Zinenko 
133ba14fa0SAlex Zinenko using namespace mlir;
143ba14fa0SAlex Zinenko 
verifyHasDefaultDLTIDataLayoutTrait(Operation * op)153ba14fa0SAlex Zinenko LogicalResult mlir::impl::verifyHasDefaultDLTIDataLayoutTrait(Operation *op) {
163ba14fa0SAlex Zinenko   // TODO: consider having trait inheritance so that HasDefaultDLTIDataLayout
173ba14fa0SAlex Zinenko   // trait can inherit DataLayoutOpInterface::Trait and enforce the validity of
183ba14fa0SAlex Zinenko   // the assertion below.
193ba14fa0SAlex Zinenko   assert(
203ba14fa0SAlex Zinenko       isa<DataLayoutOpInterface>(op) &&
213ba14fa0SAlex Zinenko       "HasDefaultDLTIDataLayout trait unexpectedly attached to an op that does "
223ba14fa0SAlex Zinenko       "not implement DataLayoutOpInterface");
233ba14fa0SAlex Zinenko   return success();
243ba14fa0SAlex Zinenko }
253ba14fa0SAlex Zinenko 
getDataLayoutSpec(Operation * op)263ba14fa0SAlex Zinenko DataLayoutSpecInterface mlir::impl::getDataLayoutSpec(Operation *op) {
273ba14fa0SAlex Zinenko   return op->getAttrOfType<DataLayoutSpecAttr>(
283ba14fa0SAlex Zinenko       DLTIDialect::kDataLayoutAttrName);
293ba14fa0SAlex Zinenko }
30*abd95342SNiranjan Hasabnis 
getTargetSystemSpec(Operation * op)31*abd95342SNiranjan Hasabnis TargetSystemSpecInterface mlir::impl::getTargetSystemSpec(Operation *op) {
32*abd95342SNiranjan Hasabnis   return op->getAttrOfType<TargetSystemSpecAttr>(
33*abd95342SNiranjan Hasabnis       DLTIDialect::kTargetSystemDescAttrName);
34*abd95342SNiranjan Hasabnis }
35