1*7330f729Sjoerg //===--- Le64.h - Declare Le64 target feature support -----------*- C++ -*-===// 2*7330f729Sjoerg // 3*7330f729Sjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*7330f729Sjoerg // See https://llvm.org/LICENSE.txt for license information. 5*7330f729Sjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*7330f729Sjoerg // 7*7330f729Sjoerg //===----------------------------------------------------------------------===// 8*7330f729Sjoerg // 9*7330f729Sjoerg // This file declares Le64 TargetInfo objects. 10*7330f729Sjoerg // 11*7330f729Sjoerg //===----------------------------------------------------------------------===// 12*7330f729Sjoerg 13*7330f729Sjoerg #ifndef LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 14*7330f729Sjoerg #define LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 15*7330f729Sjoerg 16*7330f729Sjoerg #include "clang/Basic/TargetInfo.h" 17*7330f729Sjoerg #include "clang/Basic/TargetOptions.h" 18*7330f729Sjoerg #include "llvm/ADT/Triple.h" 19*7330f729Sjoerg #include "llvm/Support/Compiler.h" 20*7330f729Sjoerg 21*7330f729Sjoerg namespace clang { 22*7330f729Sjoerg namespace targets { 23*7330f729Sjoerg 24*7330f729Sjoerg class LLVM_LIBRARY_VISIBILITY Le64TargetInfo : public TargetInfo { 25*7330f729Sjoerg 26*7330f729Sjoerg public: Le64TargetInfo(const llvm::Triple & Triple,const TargetOptions &)27*7330f729Sjoerg Le64TargetInfo(const llvm::Triple &Triple, const TargetOptions &) 28*7330f729Sjoerg : TargetInfo(Triple) { 29*7330f729Sjoerg NoAsmVariants = true; 30*7330f729Sjoerg LongWidth = LongAlign = PointerWidth = PointerAlign = 64; 31*7330f729Sjoerg MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; 32*7330f729Sjoerg resetDataLayout("e-m:e-v128:32-v16:16-v32:32-v96:32-n8:16:32:64-S128"); 33*7330f729Sjoerg } 34*7330f729Sjoerg 35*7330f729Sjoerg void getTargetDefines(const LangOptions &Opts, 36*7330f729Sjoerg MacroBuilder &Builder) const override; 37*7330f729Sjoerg 38*7330f729Sjoerg ArrayRef<Builtin::Info> getTargetBuiltins() const override; 39*7330f729Sjoerg getBuiltinVaListKind()40*7330f729Sjoerg BuiltinVaListKind getBuiltinVaListKind() const override { 41*7330f729Sjoerg return TargetInfo::PNaClABIBuiltinVaList; 42*7330f729Sjoerg } 43*7330f729Sjoerg getClobbers()44*7330f729Sjoerg const char *getClobbers() const override { return ""; } 45*7330f729Sjoerg getGCCRegNames()46*7330f729Sjoerg ArrayRef<const char *> getGCCRegNames() const override { return None; } 47*7330f729Sjoerg getGCCRegAliases()48*7330f729Sjoerg ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override { 49*7330f729Sjoerg return None; 50*7330f729Sjoerg } 51*7330f729Sjoerg validateAsmConstraint(const char * & Name,TargetInfo::ConstraintInfo & Info)52*7330f729Sjoerg bool validateAsmConstraint(const char *&Name, 53*7330f729Sjoerg TargetInfo::ConstraintInfo &Info) const override { 54*7330f729Sjoerg return false; 55*7330f729Sjoerg } 56*7330f729Sjoerg hasProtectedVisibility()57*7330f729Sjoerg bool hasProtectedVisibility() const override { return false; } 58*7330f729Sjoerg }; 59*7330f729Sjoerg 60*7330f729Sjoerg } // namespace targets 61*7330f729Sjoerg } // namespace clang 62*7330f729Sjoerg #endif // LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 63