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