59 lines · cpp
1//===- ArmNeonToLLVMIRTranslation.cpp - Translate ArmNeon 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-exception6//7//===----------------------------------------------------------------------===//8//9// This file implements a translation between the MLIR ArmNeon dialect and10// LLVM IR.11//12//===----------------------------------------------------------------------===//13 14#include "mlir/Target/LLVMIR/Dialect/ArmNeon/ArmNeonToLLVMIRTranslation.h"15#include "mlir/Dialect/ArmNeon/ArmNeonDialect.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/IntrinsicsAArch64.h"21 22using namespace mlir;23using namespace mlir::LLVM;24 25namespace {26/// Implementation of the dialect interface that converts operations belonging27/// to the ArmNeon dialect to LLVM IR.28class ArmNeonDialectLLVMIRTranslationInterface29 : public LLVMTranslationDialectInterface {30public:31 using LLVMTranslationDialectInterface::LLVMTranslationDialectInterface;32 33 /// Translates the given operation to LLVM IR using the provided IR builder34 /// and saving the state in `moduleTranslation`.35 LogicalResult36 convertOperation(Operation *op, llvm::IRBuilderBase &builder,37 LLVM::ModuleTranslation &moduleTranslation) const final {38 Operation &opInst = *op;39#include "mlir/Dialect/ArmNeon/ArmNeonConversions.inc"40 41 return failure();42 }43};44} // namespace45 46void mlir::registerArmNeonDialectTranslation(DialectRegistry ®istry) {47 registry.insert<arm_neon::ArmNeonDialect>();48 registry.addExtension(49 +[](MLIRContext *ctx, arm_neon::ArmNeonDialect *dialect) {50 dialect->addInterfaces<ArmNeonDialectLLVMIRTranslationInterface>();51 });52}53 54void mlir::registerArmNeonDialectTranslation(MLIRContext &context) {55 DialectRegistry registry;56 registerArmNeonDialectTranslation(registry);57 context.appendDialectRegistry(registry);58}59