1 //===--- Le64.h - Declare Le64 target feature support -----------*- C++ -*-===// 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 declares Le64 TargetInfo objects. 10 // 11 //===----------------------------------------------------------------------===// 12 13 #ifndef LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 14 #define LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 15 16 #include "clang/Basic/TargetInfo.h" 17 #include "clang/Basic/TargetOptions.h" 18 #include "llvm/ADT/Triple.h" 19 #include "llvm/Support/Compiler.h" 20 21 namespace clang { 22 namespace targets { 23 24 class LLVM_LIBRARY_VISIBILITY Le64TargetInfo : public TargetInfo { 25 static const Builtin::Info BuiltinInfo[]; 26 27 public: 28 Le64TargetInfo(const llvm::Triple &Triple, const TargetOptions &) 29 : TargetInfo(Triple) { 30 NoAsmVariants = true; 31 LongWidth = LongAlign = PointerWidth = PointerAlign = 64; 32 MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; 33 resetDataLayout("e-m:e-v128:32-v16:16-v32:32-v96:32-n8:16:32:64-S128"); 34 } 35 36 void getTargetDefines(const LangOptions &Opts, 37 MacroBuilder &Builder) const override; 38 39 ArrayRef<Builtin::Info> getTargetBuiltins() const override; 40 41 BuiltinVaListKind getBuiltinVaListKind() const override { 42 return TargetInfo::PNaClABIBuiltinVaList; 43 } 44 45 const char *getClobbers() const override { return ""; } 46 47 ArrayRef<const char *> getGCCRegNames() const override { return None; } 48 49 ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override { 50 return None; 51 } 52 53 bool validateAsmConstraint(const char *&Name, 54 TargetInfo::ConstraintInfo &Info) const override { 55 return false; 56 } 57 58 bool hasProtectedVisibility() const override { return false; } 59 }; 60 61 } // namespace targets 62 } // namespace clang 63 #endif // LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 64