XCoreTargetMachine.h revision cd81d94322a39503e4a3e87b6ee03d4fcb3465fb
1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//===-- XCoreTargetMachine.h - Define TargetMachine for XCore ---*- C++ -*-===// 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// The LLVM Compiler Infrastructure 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// This file is distributed under the University of Illinois Open Source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// License. See LICENSE.TXT for details. 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//===----------------------------------------------------------------------===// 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// This file declares the XCore specific subclass of TargetMachine. 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//===----------------------------------------------------------------------===// 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef XCORETARGETMACHINE_H 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define XCORETARGETMACHINE_H 16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include "XCoreSubtarget.h" 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include "llvm/Target/TargetMachine.h" 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnamespace llvm { 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass XCoreTargetMachine : public LLVMTargetMachine { 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org XCoreSubtarget Subtarget; 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org XCoreTargetMachine(const Target &T, StringRef TT, 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org StringRef CPU, StringRef FS, const TargetOptions &Options, 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org Reloc::Model RM, CodeModel::Model CM, 28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org CodeGenOpt::Level OL); 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const XCoreInstrInfo *getInstrInfo() const override { 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return getSubtargetImpl()->getInstrInfo(); 32fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org } 33fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org const XCoreFrameLowering *getFrameLowering() const override { 34fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org return getSubtargetImpl()->getFrameLowering(); 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 36fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org const XCoreSubtarget *getSubtargetImpl() const override { return &Subtarget; } 37fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org const XCoreTargetLowering *getTargetLowering() const override { 38fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org return getSubtargetImpl()->getTargetLowering(); 39fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org } 40fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org const XCoreSelectionDAGInfo* getSelectionDAGInfo() const override { 41fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org return getSubtargetImpl()->getSelectionDAGInfo(); 42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org const TargetRegisterInfo *getRegisterInfo() const override { 44fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org return getSubtargetImpl()->getRegisterInfo(); 45fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org } 46fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org const DataLayout *getDataLayout() const override { 47fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org return getSubtargetImpl()->getDataLayout(); 48fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org } 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Pass Pipeline Configuration 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TargetPassConfig *createPassConfig(PassManagerBase &PM) override; 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void addAnalysisPasses(PassManagerBase &PM) override; 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} // end namespace llvm 57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org