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