MLIR
20.0.0git
lib
Target
LLVMIR
Dialect
ArmNeon
ArmNeonToLLVMIRTranslation.cpp
Go to the documentation of this file.
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-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file implements a translation between the MLIR ArmNeon dialect and
10
// 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
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 ArmNeon dialect to LLVM IR.
28
class
ArmNeonDialectLLVMIRTranslationInterface
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
36
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
}
// namespace
45
46
void
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
54
void
mlir::registerArmNeonDialectTranslation
(
MLIRContext
&context) {
55
DialectRegistry
registry;
56
registerArmNeonDialectTranslation
(registry);
57
context.
appendDialectRegistry
(registry);
58
}
ArmNeonDialect.h
ArmNeonToLLVMIRTranslation.h
Operation.h
ModuleTranslation.h
mlir::DialectRegistry
The DialectRegistry maps a dialect namespace to a constructor for the matching dialect.
Definition:
DialectRegistry.h:139
mlir::DialectRegistry::addExtension
bool addExtension(TypeID extensionID, std::unique_ptr< DialectExtensionBase > extension)
Add the given extension to the registry.
Definition:
DialectRegistry.h:211
mlir::DialectRegistry::insert
void insert()
Definition:
DialectRegistry.h:148
mlir::LLVMTranslationDialectInterface
Base class for dialect interfaces providing translation to LLVM IR.
Definition:
LLVMTranslationInterface.h:38
mlir::LLVMTranslationDialectInterface::LLVMTranslationDialectInterface
LLVMTranslationDialectInterface(Dialect *dialect)
Definition:
LLVMTranslationInterface.h:40
mlir::LLVM::ModuleTranslation
Implementation class for module translation.
Definition:
ModuleTranslation.h:58
mlir::MLIRContext
MLIRContext is the top-level object for a collection of MLIR operations.
Definition:
MLIRContext.h:60
mlir::MLIRContext::appendDialectRegistry
void appendDialectRegistry(const DialectRegistry ®istry)
Append the contents of the given dialect registry to the registry associated with this context.
Definition:
MLIRContext.cpp:419
mlir::Operation
Operation is the basic unit of execution within MLIR.
Definition:
Operation.h:88
mlir::LLVM
Definition:
ConvertFuncToLLVM.h:21
mlir
Include the generated interface declarations.
Definition:
LocalAliasAnalysis.h:20
mlir::registerArmNeonDialectTranslation
void registerArmNeonDialectTranslation(DialectRegistry ®istry)
Register the ArmNeon dialect and the translation from it to the LLVM IR in the given registry;.
Definition:
ArmNeonToLLVMIRTranslation.cpp:46
Generated on Tue Nov 19 2024 04:32:31 for MLIR by
1.9.1