mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-30 21:29:28 +00:00
be the first encoded as the first feature. It then uses the CPU name to look up features / scheduling itineray even though clients know full well the CPU name being used to query these properties. The fix is to just have the clients explictly pass the CPU name! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134127 91177308-0d34-0410-b5e6-96231b3b80d8
68 lines
2.2 KiB
C++
68 lines
2.2 KiB
C++
//===-- BlackfinTargetMachine.h - TargetMachine for Blackfin ----*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file declares the Blackfin specific subclass of TargetMachine.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef BLACKFINTARGETMACHINE_H
|
|
#define BLACKFINTARGETMACHINE_H
|
|
|
|
#include "BlackfinInstrInfo.h"
|
|
#include "BlackfinIntrinsicInfo.h"
|
|
#include "BlackfinISelLowering.h"
|
|
#include "BlackfinFrameLowering.h"
|
|
#include "BlackfinSubtarget.h"
|
|
#include "BlackfinSelectionDAGInfo.h"
|
|
#include "llvm/Target/TargetMachine.h"
|
|
#include "llvm/Target/TargetData.h"
|
|
#include "llvm/Target/TargetFrameLowering.h"
|
|
|
|
namespace llvm {
|
|
|
|
class BlackfinTargetMachine : public LLVMTargetMachine {
|
|
const TargetData DataLayout;
|
|
BlackfinSubtarget Subtarget;
|
|
BlackfinTargetLowering TLInfo;
|
|
BlackfinSelectionDAGInfo TSInfo;
|
|
BlackfinInstrInfo InstrInfo;
|
|
BlackfinFrameLowering FrameLowering;
|
|
BlackfinIntrinsicInfo IntrinsicInfo;
|
|
public:
|
|
BlackfinTargetMachine(const Target &T, const std::string &TT,
|
|
const std::string &CPU, const std::string &FS);
|
|
|
|
virtual const BlackfinInstrInfo *getInstrInfo() const { return &InstrInfo; }
|
|
virtual const TargetFrameLowering *getFrameLowering() const {
|
|
return &FrameLowering;
|
|
}
|
|
virtual const BlackfinSubtarget *getSubtargetImpl() const {
|
|
return &Subtarget;
|
|
}
|
|
virtual const BlackfinRegisterInfo *getRegisterInfo() const {
|
|
return &InstrInfo.getRegisterInfo();
|
|
}
|
|
virtual const BlackfinTargetLowering* getTargetLowering() const {
|
|
return &TLInfo;
|
|
}
|
|
virtual const BlackfinSelectionDAGInfo* getSelectionDAGInfo() const {
|
|
return &TSInfo;
|
|
}
|
|
virtual const TargetData *getTargetData() const { return &DataLayout; }
|
|
virtual bool addInstSelector(PassManagerBase &PM,
|
|
CodeGenOpt::Level OptLevel);
|
|
const TargetIntrinsicInfo *getIntrinsicInfo() const {
|
|
return &IntrinsicInfo;
|
|
}
|
|
};
|
|
|
|
} // end namespace llvm
|
|
|
|
#endif
|