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 #include "llvm/Support/Compiler.h" 12 13 using namespace llvm; 14 Target &llvm::getTheAArch64leTarget() { 15 static Target TheAArch64leTarget; 16 return TheAArch64leTarget; 17 } 18 Target &llvm::getTheAArch64beTarget() { 19 static Target TheAArch64beTarget; 20 return TheAArch64beTarget; 21 } 22 Target &llvm::getTheAArch64_32Target() { 23 static Target TheAArch64leTarget; 24 return TheAArch64leTarget; 25 } 26 Target &llvm::getTheARM64Target() { 27 static Target TheARM64Target; 28 return TheARM64Target; 29 } 30 Target &llvm::getTheARM64_32Target() { 31 static Target TheARM64_32Target; 32 return TheARM64_32Target; 33 } 34 35 extern "C" LLVM_ABI LLVM_EXTERNAL_VISIBILITY void 36 LLVMInitializeAArch64TargetInfo() { 37 // Now register the "arm64" name for use with "-march". We don't want it to 38 // take possession of the Triple::aarch64 tags though. 39 TargetRegistry::RegisterTarget(getTheARM64Target(), "arm64", 40 "ARM64 (little endian)", "AArch64", 41 [](Triple::ArchType) { return false; }, true); 42 TargetRegistry::RegisterTarget(getTheARM64_32Target(), "arm64_32", 43 "ARM64 (little endian ILP32)", "AArch64", 44 [](Triple::ArchType) { return false; }, true); 45 46 RegisterTarget<Triple::aarch64, /*HasJIT=*/true> Z( 47 getTheAArch64leTarget(), "aarch64", "AArch64 (little endian)", "AArch64"); 48 RegisterTarget<Triple::aarch64_be, /*HasJIT=*/true> W( 49 getTheAArch64beTarget(), "aarch64_be", "AArch64 (big endian)", "AArch64"); 50 RegisterTarget<Triple::aarch64_32, /*HasJIT=*/true> X( 51 getTheAArch64_32Target(), "aarch64_32", "AArch64 (little endian ILP32)", "AArch64"); 52 } 53