1 //==-- MSP430ISelLowering.h - MSP430 DAG Lowering Interface ------*- C++ -*-==//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines the interfaces that MSP430 uses to lower LLVM code into a
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_TARGET_MSP430_ISELLOWERING_H
16 #define LLVM_TARGET_MSP430_ISELLOWERING_H
19 #include "llvm/CodeGen/SelectionDAG.h"
20 #include "llvm/Target/TargetLowering.h"
25 FIRST_NUMBER
= ISD::BUILTIN_OP_END
,
27 /// Return with a flag operand. Operand 0 is the chain operand.
30 /// Y = RRA X, rotate right arithmetically
33 /// CALL/TAILCALL - These operations represent an abstract call
34 /// instruction, which includes a bunch of information.
37 /// Wrapper - A wrapper node for TargetConstantPool, TargetExternalSymbol,
38 /// and TargetGlobalAddress.
43 class MSP430Subtarget
;
44 class MSP430TargetMachine
;
46 class MSP430TargetLowering
: public TargetLowering
{
48 explicit MSP430TargetLowering(MSP430TargetMachine
&TM
);
50 /// LowerOperation - Provide custom lowering hooks for some operations.
51 virtual SDValue
LowerOperation(SDValue Op
, SelectionDAG
&DAG
);
53 /// getTargetNodeName - This method returns the name of a target specific
55 virtual const char *getTargetNodeName(unsigned Opcode
) const;
57 SDValue
LowerFORMAL_ARGUMENTS(SDValue Op
, SelectionDAG
&DAG
);
58 SDValue
LowerCALL(SDValue Op
, SelectionDAG
&DAG
);
59 SDValue
LowerRET(SDValue Op
, SelectionDAG
&DAG
);
60 SDValue
LowerCCCArguments(SDValue Op
, SelectionDAG
&DAG
);
61 SDValue
LowerShifts(SDValue Op
, SelectionDAG
&DAG
);
62 SDValue
LowerGlobalAddress(SDValue Op
, SelectionDAG
&DAG
);
64 SDValue
LowerCCCCallTo(SDValue Op
, SelectionDAG
&DAG
,
66 SDNode
* LowerCallResult(SDValue Chain
, SDValue InFlag
,
68 unsigned CallingConv
, SelectionDAG
&DAG
);
72 const MSP430Subtarget
&Subtarget
;
73 const MSP430TargetMachine
&TM
;
77 #endif // LLVM_TARGET_MSP430_ISELLOWERING_H