xref: /freebsd/contrib/llvm-project/clang/lib/Basic/Targets/Le64.h (revision 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e)
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