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