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 ZinenkoLogicalResult 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 ZinenkoDataLayoutSpecInterface 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 HasabnisTargetSystemSpecInterface mlir::impl::getTargetSystemSpec(Operation *op) { 32*abd95342SNiranjan Hasabnis return op->getAttrOfType<TargetSystemSpecAttr>( 33*abd95342SNiranjan Hasabnis DLTIDialect::kTargetSystemDescAttrName); 34*abd95342SNiranjan Hasabnis } 35