xref: /netbsd-src/external/apache2/llvm/dist/clang/lib/Basic/Targets/M68k.h (revision e038c9c4676b0f19b1b7dd08a940c6ed64a6d5ae)
1*e038c9c4Sjoerg //===--- M68k.h - Declare M68k target feature support -------*- C++ -*-===//
2*e038c9c4Sjoerg //
3*e038c9c4Sjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*e038c9c4Sjoerg // See https://llvm.org/LICENSE.txt for license information.
5*e038c9c4Sjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*e038c9c4Sjoerg //
7*e038c9c4Sjoerg //===----------------------------------------------------------------------===//
8*e038c9c4Sjoerg //
9*e038c9c4Sjoerg // This file declares M68k TargetInfo objects.
10*e038c9c4Sjoerg //
11*e038c9c4Sjoerg //===----------------------------------------------------------------------===//
12*e038c9c4Sjoerg 
13*e038c9c4Sjoerg #ifndef LLVM_CLANG_LIB_BASIC_TARGETS_M68K_H
14*e038c9c4Sjoerg #define LLVM_CLANG_LIB_BASIC_TARGETS_M68K_H
15*e038c9c4Sjoerg 
16*e038c9c4Sjoerg #include "OSTargets.h"
17*e038c9c4Sjoerg #include "clang/Basic/TargetInfo.h"
18*e038c9c4Sjoerg #include "clang/Basic/TargetOptions.h"
19*e038c9c4Sjoerg #include "llvm/ADT/Triple.h"
20*e038c9c4Sjoerg #include "llvm/Support/Compiler.h"
21*e038c9c4Sjoerg 
22*e038c9c4Sjoerg namespace clang {
23*e038c9c4Sjoerg namespace targets {
24*e038c9c4Sjoerg 
25*e038c9c4Sjoerg class LLVM_LIBRARY_VISIBILITY M68kTargetInfo : public TargetInfo {
26*e038c9c4Sjoerg   static const char *const GCCRegNames[];
27*e038c9c4Sjoerg 
28*e038c9c4Sjoerg   enum CPUKind {
29*e038c9c4Sjoerg     CK_Unknown,
30*e038c9c4Sjoerg     CK_68000,
31*e038c9c4Sjoerg     CK_68010,
32*e038c9c4Sjoerg     CK_68020,
33*e038c9c4Sjoerg     CK_68030,
34*e038c9c4Sjoerg     CK_68040,
35*e038c9c4Sjoerg     CK_68060
36*e038c9c4Sjoerg   } CPU = CK_Unknown;
37*e038c9c4Sjoerg 
38*e038c9c4Sjoerg public:
39*e038c9c4Sjoerg   M68kTargetInfo(const llvm::Triple &Triple, const TargetOptions &);
40*e038c9c4Sjoerg 
41*e038c9c4Sjoerg   void getTargetDefines(const LangOptions &Opts,
42*e038c9c4Sjoerg                         MacroBuilder &Builder) const override;
43*e038c9c4Sjoerg   ArrayRef<Builtin::Info> getTargetBuiltins() const override;
44*e038c9c4Sjoerg   bool hasFeature(StringRef Feature) const override;
45*e038c9c4Sjoerg   ArrayRef<const char *> getGCCRegNames() const override;
46*e038c9c4Sjoerg   ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override;
47*e038c9c4Sjoerg   std::string convertConstraint(const char *&Constraint) const override;
48*e038c9c4Sjoerg   bool validateAsmConstraint(const char *&Name,
49*e038c9c4Sjoerg                              TargetInfo::ConstraintInfo &info) const override;
50*e038c9c4Sjoerg   const char *getClobbers() const override;
51*e038c9c4Sjoerg   BuiltinVaListKind getBuiltinVaListKind() const override;
52*e038c9c4Sjoerg   bool setCPU(const std::string &Name) override;
53*e038c9c4Sjoerg };
54*e038c9c4Sjoerg 
55*e038c9c4Sjoerg } // namespace targets
56*e038c9c4Sjoerg } // namespace clang
57*e038c9c4Sjoerg 
58*e038c9c4Sjoerg #endif
59