1 //===- X86VectorToLLVMIRTranslation.cpp - Translate X86Vector to LLVM IR---===// 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 // This file implements a translation between the MLIR X86Vector dialect and 10 // LLVM IR. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #include "mlir/Target/LLVMIR/Dialect/X86Vector/X86VectorToLLVMIRTranslation.h" 15 #include "mlir/Dialect/X86Vector/X86VectorDialect.h" 16 #include "mlir/IR/Operation.h" 17 #include "mlir/Target/LLVMIR/ModuleTranslation.h" 18 19 #include "llvm/IR/IRBuilder.h" 20 #include "llvm/IR/IntrinsicsX86.h" 21 22 using namespace mlir; 23 using namespace mlir::LLVM; 24 25 namespace { 26 /// Implementation of the dialect interface that converts operations belonging 27 /// to the X86Vector dialect to LLVM IR. 28 class X86VectorDialectLLVMIRTranslationInterface 29 : public LLVMTranslationDialectInterface { 30 public: 31 using LLVMTranslationDialectInterface::LLVMTranslationDialectInterface; 32 33 /// Translates the given operation to LLVM IR using the provided IR builder 34 /// and saving the state in `moduleTranslation`. 35 LogicalResult convertOperation(Operation * op,llvm::IRBuilderBase & builder,LLVM::ModuleTranslation & moduleTranslation) const36 convertOperation(Operation *op, llvm::IRBuilderBase &builder, 37 LLVM::ModuleTranslation &moduleTranslation) const final { 38 Operation &opInst = *op; 39 #include "mlir/Dialect/X86Vector/X86VectorConversions.inc" 40 41 return failure(); 42 } 43 }; 44 } // namespace 45 registerX86VectorDialectTranslation(DialectRegistry & registry)46void mlir::registerX86VectorDialectTranslation(DialectRegistry ®istry) { 47 registry.insert<x86vector::X86VectorDialect>(); 48 registry.addExtension( 49 +[](MLIRContext *ctx, x86vector::X86VectorDialect *dialect) { 50 dialect->addInterfaces<X86VectorDialectLLVMIRTranslationInterface>(); 51 }); 52 } 53 registerX86VectorDialectTranslation(MLIRContext & context)54void mlir::registerX86VectorDialectTranslation(MLIRContext &context) { 55 DialectRegistry registry; 56 registerX86VectorDialectTranslation(registry); 57 context.appendDialectRegistry(registry); 58 } 59