LLVM
17.0.0git
lib
Target
AArch64
TargetInfo
AArch64TargetInfo.cpp
Go to the documentation of this file.
1
//===-- AArch64TargetInfo.cpp - AArch64 Target Implementation -----------------===//
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
#include "
TargetInfo/AArch64TargetInfo.h
"
10
#include "
llvm/MC/TargetRegistry.h
"
11
12
using namespace
llvm
;
13
Target
&
llvm::getTheAArch64leTarget
() {
14
static
Target
TheAArch64leTarget;
15
return
TheAArch64leTarget;
16
}
17
Target
&
llvm::getTheAArch64beTarget
() {
18
static
Target
TheAArch64beTarget;
19
return
TheAArch64beTarget;
20
}
21
Target
&
llvm::getTheAArch64_32Target
() {
22
static
Target
TheAArch64leTarget;
23
return
TheAArch64leTarget;
24
}
25
Target
&
llvm::getTheARM64Target
() {
26
static
Target
TheARM64Target;
27
return
TheARM64Target;
28
}
29
Target
&
llvm::getTheARM64_32Target
() {
30
static
Target
TheARM64_32Target;
31
return
TheARM64_32Target;
32
}
33
34
extern
"C"
LLVM_EXTERNAL_VISIBILITY
void
LLVMInitializeAArch64TargetInfo
() {
35
// Now register the "arm64" name for use with "-march". We don't want it to
36
// take possession of the Triple::aarch64 tags though.
37
TargetRegistry::RegisterTarget
(
getTheARM64Target
(),
"arm64"
,
38
"ARM64 (little endian)"
,
"AArch64"
,
39
[](
Triple::ArchType
) {
return
false
; },
true
);
40
TargetRegistry::RegisterTarget
(
getTheARM64_32Target
(),
"arm64_32"
,
41
"ARM64 (little endian ILP32)"
,
"AArch64"
,
42
[](
Triple::ArchType
) {
return
false
; },
true
);
43
44
RegisterTarget
<
Triple::aarch64
,
/*HasJIT=*/
true
>
Z
(
45
getTheAArch64leTarget
(),
"aarch64"
,
"AArch64 (little endian)"
,
"AArch64"
);
46
RegisterTarget
<
Triple::aarch64_be
,
/*HasJIT=*/
true
>
W
(
47
getTheAArch64beTarget
(),
"aarch64_be"
,
"AArch64 (big endian)"
,
"AArch64"
);
48
RegisterTarget
<
Triple::aarch64_32
,
/*HasJIT=*/
true
>
X
(
49
getTheAArch64_32Target
(),
"aarch64_32"
,
"AArch64 (little endian ILP32)"
,
"AArch64"
);
50
}
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
llvm::Target
Target - Wrapper for Target specific information.
Definition:
TargetRegistry.h:149
llvm::RISCVFenceField::W
@ W
Definition:
RISCVBaseInfo.h:276
llvm::getTheAArch64_32Target
Target & getTheAArch64_32Target()
Definition:
AArch64TargetInfo.cpp:21
llvm::Triple::aarch64_32
@ aarch64_32
Definition:
Triple.h:53
llvm::Triple::ArchType
ArchType
Definition:
Triple.h:46
llvm::getTheAArch64leTarget
Target & getTheAArch64leTarget()
Definition:
AArch64TargetInfo.cpp:13
X
static GCMetadataPrinterRegistry::Add< ErlangGCPrinter > X("erlang", "erlang-compatible garbage collector")
LLVM_EXTERNAL_VISIBILITY
#define LLVM_EXTERNAL_VISIBILITY
Definition:
Compiler.h:127
llvm::TargetRegistry::RegisterTarget
static void RegisterTarget(Target &T, const char *Name, const char *ShortDesc, const char *BackendName, Target::ArchMatchFnTy ArchMatchFn, bool HasJIT=false)
RegisterTarget - Register the given target.
Definition:
TargetRegistry.cpp:88
llvm::getTheARM64_32Target
Target & getTheARM64_32Target()
Definition:
AArch64TargetInfo.cpp:29
LLVMInitializeAArch64TargetInfo
LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64TargetInfo()
Definition:
AArch64TargetInfo.cpp:34
llvm::Triple::aarch64_be
@ aarch64_be
Definition:
Triple.h:52
llvm::RegisterTarget
RegisterTarget - Helper template for registering a target, for use in the target's initialization fun...
Definition:
TargetRegistry.h:1136
llvm::getTheAArch64beTarget
Target & getTheAArch64beTarget()
Definition:
AArch64TargetInfo.cpp:17
llvm::ARCCC::Z
@ Z
Definition:
ARCInfo.h:41
llvm::getTheARM64Target
Target & getTheARM64Target()
Definition:
AArch64TargetInfo.cpp:25
TargetRegistry.h
llvm::Triple::aarch64
@ aarch64
Definition:
Triple.h:51
AArch64TargetInfo.h
Generated on Sat Jan 28 2023 09:54:02 for LLVM by
1.8.17