Le64.h revision 355940
1130803Smarcel//===--- Le64.h - Declare Le64 target feature support -----------*- C++ -*-===// 2130803Smarcel// 3130803Smarcel// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4130803Smarcel// See https://llvm.org/LICENSE.txt for license information. 5130803Smarcel// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6130803Smarcel// 7130803Smarcel//===----------------------------------------------------------------------===// 8130803Smarcel// 9130803Smarcel// This file declares Le64 TargetInfo objects. 10130803Smarcel// 11130803Smarcel//===----------------------------------------------------------------------===// 12130803Smarcel 13130803Smarcel#ifndef LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 14130803Smarcel#define LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 15130803Smarcel 16130803Smarcel#include "clang/Basic/TargetInfo.h" 17130803Smarcel#include "clang/Basic/TargetOptions.h" 18130803Smarcel#include "llvm/ADT/Triple.h" 19130803Smarcel#include "llvm/Support/Compiler.h" 20130803Smarcel 21130803Smarcelnamespace clang { 22130803Smarcelnamespace targets { 23130803Smarcel 24130803Smarcelclass LLVM_LIBRARY_VISIBILITY Le64TargetInfo : public TargetInfo { 25130803Smarcel static const Builtin::Info BuiltinInfo[]; 26130803Smarcel 27130803Smarcelpublic: 28130803Smarcel Le64TargetInfo(const llvm::Triple &Triple, const TargetOptions &) 29130803Smarcel : TargetInfo(Triple) { 30130803Smarcel NoAsmVariants = true; 31130803Smarcel LongWidth = LongAlign = PointerWidth = PointerAlign = 64; 32130803Smarcel MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; 33130803Smarcel resetDataLayout("e-m:e-v128:32-v16:16-v32:32-v96:32-n8:16:32:64-S128"); 34130803Smarcel } 35130803Smarcel 36130803Smarcel void getTargetDefines(const LangOptions &Opts, 37130803Smarcel MacroBuilder &Builder) const override; 38130803Smarcel 39130803Smarcel ArrayRef<Builtin::Info> getTargetBuiltins() const override; 40130803Smarcel 41130803Smarcel BuiltinVaListKind getBuiltinVaListKind() const override { 42130803Smarcel return TargetInfo::PNaClABIBuiltinVaList; 43130803Smarcel } 44130803Smarcel 45130803Smarcel const char *getClobbers() const override { return ""; } 46130803Smarcel 47130803Smarcel ArrayRef<const char *> getGCCRegNames() const override { return None; } 48130803Smarcel 49130803Smarcel ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override { 50130803Smarcel return None; 51130803Smarcel } 52130803Smarcel 53130803Smarcel bool validateAsmConstraint(const char *&Name, 54130803Smarcel TargetInfo::ConstraintInfo &Info) const override { 55130803Smarcel return false; 56130803Smarcel } 57130803Smarcel 58130803Smarcel bool hasProtectedVisibility() const override { return false; } 59130803Smarcel}; 60130803Smarcel 61130803Smarcel} // namespace targets 62130803Smarcel} // namespace clang 63130803Smarcel#endif // LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 64130803Smarcel