brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · cb809b9 Raw
55 lines · c
1//===-- XCoreTargetTransformInfo.h - XCore specific TTI ---------*- 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/// \file9/// This file a TargetTransformInfoImplBase conforming object specific to the10/// XCore target machine. It uses the target's detailed information to11/// provide more precise answers to certain TTI queries, while letting the12/// target independent and default TTI implementations handle the rest.13///14//===----------------------------------------------------------------------===//15 16#ifndef LLVM_LIB_TARGET_XCORE_XCORETARGETTRANSFORMINFO_H17#define LLVM_LIB_TARGET_XCORE_XCORETARGETTRANSFORMINFO_H18 19#include "XCore.h"20#include "XCoreTargetMachine.h"21#include "llvm/Analysis/TargetTransformInfo.h"22#include "llvm/CodeGen/BasicTTIImpl.h"23#include "llvm/CodeGen/TargetLowering.h"24 25namespace llvm {26 27class XCoreTTIImpl final : public BasicTTIImplBase<XCoreTTIImpl> {28  typedef BasicTTIImplBase<XCoreTTIImpl> BaseT;29  typedef TargetTransformInfo TTI;30  friend BaseT;31 32  const XCoreSubtarget *ST;33  const XCoreTargetLowering *TLI;34 35  const XCoreSubtarget *getST() const { return ST; }36  const XCoreTargetLowering *getTLI() const { return TLI; }37 38public:39  explicit XCoreTTIImpl(const XCoreTargetMachine *TM, const Function &F)40      : BaseT(TM, F.getDataLayout()), ST(TM->getSubtargetImpl()),41        TLI(ST->getTargetLowering()) {}42 43  unsigned getNumberOfRegisters(unsigned ClassID) const override {44    bool Vector = (ClassID == 1);45    if (Vector) {46      return 0;47    }48    return 12;49  }50};51 52} // end namespace llvm53 54#endif55