brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 9af9e06 Raw
83 lines · c
1//===--- XCore.h - Declare XCore 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 XCore TargetInfo objects.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_CLANG_LIB_BASIC_TARGETS_XCORE_H14#define LLVM_CLANG_LIB_BASIC_TARGETS_XCORE_H15 16#include "clang/Basic/TargetInfo.h"17#include "clang/Basic/TargetOptions.h"18#include "llvm/Support/Compiler.h"19#include "llvm/TargetParser/Triple.h"20 21namespace clang {22namespace targets {23 24class LLVM_LIBRARY_VISIBILITY XCoreTargetInfo : public TargetInfo {25 26public:27  XCoreTargetInfo(const llvm::Triple &Triple, const TargetOptions &)28      : TargetInfo(Triple) {29    NoAsmVariants = true;30    LongLongAlign = 32;31    SuitableAlign = 32;32    DoubleAlign = LongDoubleAlign = 32;33    SizeType = UnsignedInt;34    PtrDiffType = SignedInt;35    IntPtrType = SignedInt;36    WCharType = UnsignedChar;37    WIntType = UnsignedInt;38    UseZeroLengthBitfieldAlignment = true;39    resetDataLayout("e-m:e-p:32:32-i1:8:32-i8:8:32-i16:16:32-i64:32"40                    "-f64:32-a:0:32-n32");41  }42 43  void getTargetDefines(const LangOptions &Opts,44                        MacroBuilder &Builder) const override;45 46  llvm::SmallVector<Builtin::InfosShard> getTargetBuiltins() const override;47 48  BuiltinVaListKind getBuiltinVaListKind() const override {49    return TargetInfo::VoidPtrBuiltinVaList;50  }51 52  std::string_view getClobbers() const override { return ""; }53 54  ArrayRef<const char *> getGCCRegNames() const override {55    static const char *const GCCRegNames[] = {56        "r0", "r1", "r2",  "r3",  "r4", "r5", "r6", "r7",57        "r8", "r9", "r10", "r11", "cp", "dp", "sp", "lr"58    };59    return llvm::ArrayRef(GCCRegNames);60  }61 62  ArrayRef<TargetInfo::GCCRegAlias> getGCCRegAliases() const override {63    return {};64  }65 66  bool validateAsmConstraint(const char *&Name,67                             TargetInfo::ConstraintInfo &Info) const override {68    return false;69  }70 71  int getEHDataRegisterNumber(unsigned RegNo) const override {72    // R0=ExceptionPointerRegister R1=ExceptionSelectorRegister73    return (RegNo < 2) ? RegNo : -1;74  }75 76  bool allowsLargerPreferedTypeAlignment() const override { return false; }77 78  bool hasBitIntType() const override { return true; }79};80} // namespace targets81} // namespace clang82#endif // LLVM_CLANG_LIB_BASIC_TARGETS_XCORE_H83