brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 7098592 Raw
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 &registry) {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