SystemZISelLowering.h revision 4403b930f867f61b48304a23a6843026b0b9a32a
1//==-- SystemZISelLowering.h - SystemZ DAG Lowering Interface ----*- C++ -*-==// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file defines the interfaces that SystemZ uses to lower LLVM code into a 11// selection DAG. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_TARGET_SystemZ_ISELLOWERING_H 16#define LLVM_TARGET_SystemZ_ISELLOWERING_H 17 18#include "SystemZ.h" 19#include "llvm/CodeGen/SelectionDAG.h" 20#include "llvm/Target/TargetLowering.h" 21 22namespace llvm { 23 namespace SystemZISD { 24 enum { 25 FIRST_NUMBER = ISD::BUILTIN_OP_END 26 }; 27 } 28 29 class SystemZSubtarget; 30 class SystemZTargetMachine; 31 32 class SystemZTargetLowering : public TargetLowering { 33 public: 34 explicit SystemZTargetLowering(SystemZTargetMachine &TM); 35 36 /// LowerOperation - Provide custom lowering hooks for some operations. 37 virtual SDValue LowerOperation(SDValue Op, SelectionDAG &DAG); 38 39 /// getTargetNodeName - This method returns the name of a target specific 40 /// DAG node. 41 virtual const char *getTargetNodeName(unsigned Opcode) const; 42 43 private: 44 const SystemZSubtarget &Subtarget; 45 const SystemZTargetMachine &TM; 46 }; 47} // namespace llvm 48 49#endif // LLVM_TARGET_SystemZ_ISELLOWERING_H 50