10b57cec5SDimitry Andric //===--- Le64.h - Declare Le64 target feature support -----------*- C++ -*-===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric // 90b57cec5SDimitry Andric // This file declares Le64 TargetInfo objects. 100b57cec5SDimitry Andric // 110b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric #ifndef LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 140b57cec5SDimitry Andric #define LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 150b57cec5SDimitry Andric 160b57cec5SDimitry Andric #include "clang/Basic/TargetInfo.h" 170b57cec5SDimitry Andric #include "clang/Basic/TargetOptions.h" 180b57cec5SDimitry Andric #include "llvm/Support/Compiler.h" 19*06c3fb27SDimitry Andric #include "llvm/TargetParser/Triple.h" 200b57cec5SDimitry Andric 210b57cec5SDimitry Andric namespace clang { 220b57cec5SDimitry Andric namespace targets { 230b57cec5SDimitry Andric 240b57cec5SDimitry Andric class LLVM_LIBRARY_VISIBILITY Le64TargetInfo : public TargetInfo { 250b57cec5SDimitry Andric 260b57cec5SDimitry Andric public: Le64TargetInfo(const llvm::Triple & Triple,const TargetOptions &)270b57cec5SDimitry Andric Le64TargetInfo(const llvm::Triple &Triple, const TargetOptions &) 280b57cec5SDimitry Andric : TargetInfo(Triple) { 290b57cec5SDimitry Andric NoAsmVariants = true; 300b57cec5SDimitry Andric LongWidth = LongAlign = PointerWidth = PointerAlign = 64; 310b57cec5SDimitry Andric MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64; 320b57cec5SDimitry Andric resetDataLayout("e-m:e-v128:32-v16:16-v32:32-v96:32-n8:16:32:64-S128"); 330b57cec5SDimitry Andric } 340b57cec5SDimitry Andric 350b57cec5SDimitry Andric void getTargetDefines(const LangOptions &Opts, 360b57cec5SDimitry Andric MacroBuilder &Builder) const override; 370b57cec5SDimitry Andric 380b57cec5SDimitry Andric ArrayRef<Builtin::Info> getTargetBuiltins() const override; 390b57cec5SDimitry Andric getBuiltinVaListKind()400b57cec5SDimitry Andric BuiltinVaListKind getBuiltinVaListKind() const override { 410b57cec5SDimitry Andric return TargetInfo::PNaClABIBuiltinVaList; 420b57cec5SDimitry Andric } 430b57cec5SDimitry Andric getClobbers()44*06c3fb27SDimitry Andric std::string_view getClobbers() const override { return ""; } 450b57cec5SDimitry Andric getGCCRegNames()46bdd1243dSDimitry Andric ArrayRef<const char *> getGCCRegNames() const override { 47bdd1243dSDimitry Andric return std::nullopt; 48bdd1243dSDimitry Andric } 490b57cec5SDimitry Andric getGCCRegAliases()500b57cec5SDimitry Andric ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override { 51bdd1243dSDimitry Andric return std::nullopt; 520b57cec5SDimitry Andric } 530b57cec5SDimitry Andric validateAsmConstraint(const char * & Name,TargetInfo::ConstraintInfo & Info)540b57cec5SDimitry Andric bool validateAsmConstraint(const char *&Name, 550b57cec5SDimitry Andric TargetInfo::ConstraintInfo &Info) const override { 560b57cec5SDimitry Andric return false; 570b57cec5SDimitry Andric } 580b57cec5SDimitry Andric hasProtectedVisibility()590b57cec5SDimitry Andric bool hasProtectedVisibility() const override { return false; } 600b57cec5SDimitry Andric }; 610b57cec5SDimitry Andric 620b57cec5SDimitry Andric } // namespace targets 630b57cec5SDimitry Andric } // namespace clang 640b57cec5SDimitry Andric #endif // LLVM_CLANG_LIB_BASIC_TARGETS_LE64_H 65