xref: /netbsd-src/external/apache2/llvm/dist/clang/lib/Basic/Targets/Le64.h (revision e038c9c4676b0f19b1b7dd08a940c6ed64a6d5ae)
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