Rename getEntryNode -> getEntryBlock()
[oota-llvm.git] / include / llvm / CodeGen / InstrSelectionSupport.h
index 0d5a40e9b206fa409cbfab3e957806866fdd6a5d..663396e5d8f32f2acc2cb4772a0012c19630ecfa 100644 (file)
@@ -1,96 +1,18 @@
-// $Id$ -*-c++-*-
-//***************************************************************************
-// File:
-//     InstrSelectionSupport.h
-// 
-// Purpose:
-//     Target-independent instruction selection code.
-//      See SparcInstrSelection.cpp for usage.
+//===-- llvm/CodeGen/InstrSelectionSupport.h --------------------*- C++ -*-===//
+//
+//  Target-independent instruction selection code.  See SparcInstrSelection.cpp
+//  for usage.
 //      
-// History:
-//     10/10/01         -  Vikram Adve  -  Created
-//**************************************************************************/
+//===----------------------------------------------------------------------===//
 
 #ifndef LLVM_CODEGEN_INSTR_SELECTION_SUPPORT_H
 #define LLVM_CODEGEN_INSTR_SELECTION_SUPPORT_H
 
-#include "llvm/Instruction.h"
 #include "llvm/CodeGen/MachineInstr.h"
+#include "Support/DataTypes.h"
 class InstructionNode;
 class TargetMachine;
-
-
-//---------------------------------------------------------------------------
-// Function GetConstantValueAsSignedInt
-// 
-// Convenience function to get the value of an integer constant, for an
-// appropriate integer or non-integer type that can be held in an integer.
-// The type of the argument must be the following:
-//      Signed or unsigned integer
-//      Boolean
-//      Pointer
-// 
-// isValidConstant is set to true if a valid constant was found.
-//---------------------------------------------------------------------------
-
-int64_t         GetConstantValueAsSignedInt     (const Value *V,
-                                                 bool &isValidConstant);
-
-
-//---------------------------------------------------------------------------
-// Function: FoldGetElemChain
-// 
-// Purpose:
-//   Fold a chain of GetElementPtr instructions into an equivalent
-//   (Pointer, IndexVector) pair.  Returns the pointer Value, and
-//   stores the resulting IndexVector in argument chainIdxVec.
-//---------------------------------------------------------------------------
-
-Value*         FoldGetElemChain    (const InstructionNode* getElemInstrNode,
-                                    std::vector<Value*>& chainIdxVec);
-
-
-//------------------------------------------------------------------------ 
-// Function Set2OperandsFromInstr
-// Function Set3OperandsFromInstr
-// 
-// Purpose:
-// 
-// For the common case of 2- and 3-operand arithmetic/logical instructions,
-// set the m/c instr. operands directly from the VM instruction's operands.
-// Check whether the first or second operand is 0 and can use a dedicated
-// "0" register.
-// Check whether the second operand should use an immediate field or register.
-// (First and third operands are never immediates for such instructions.)
-// 
-// Arguments:
-// canDiscardResult: Specifies that the result operand can be discarded
-//                  by using the dedicated "0"
-// 
-// op1position, op2position and resultPosition: Specify in which position
-//                  in the machine instruction the 3 operands (arg1, arg2
-//                  and result) should go.
-// 
-// RETURN VALUE: unsigned int flags, where
-//     flags & 0x01    => operand 1 is constant and needs a register
-//     flags & 0x02    => operand 2 is constant and needs a register
-//------------------------------------------------------------------------ 
-
-void           Set2OperandsFromInstr   (MachineInstr* minstr,
-                                        InstructionNode* vmInstrNode,
-                                        const TargetMachine& targetMachine,
-                                        bool canDiscardResult = false,
-                                        int op1Position = 0,
-                                        int resultPosition = 1);
-
-void           Set3OperandsFromInstr   (MachineInstr* minstr,
-                                        InstructionNode* vmInstrNode,
-                                        const TargetMachine& targetMachine,
-                                        bool canDiscardResult = false,
-                                        int op1Position = 0,
-                                        int op2Position = 1,
-                                        int resultPosition = 2);
-
+class Instruction;
 
 //---------------------------------------------------------------------------
 // Function: ChooseRegOrImmed
@@ -104,27 +26,15 @@ MachineOperand::MachineOperandType ChooseRegOrImmed(
                                          MachineOpCode opCode,
                                          const TargetMachine& targetMachine,
                                          bool canUseImmed,
-                                         unsigned int& getMachineRegNum,
+                                         unsigned& getMachineRegNum,
                                          int64_t& getImmedValue);
 
-
-//---------------------------------------------------------------------------
-// Function: FixConstantOperandsForInstr
-// 
-// Purpose:
-// Special handling for constant operands of a machine instruction
-// -- if the constant is 0, use the hardwired 0 register, if any;
-// -- if the constant fits in the IMMEDIATE field, use that field;
-// -- else create instructions to put the constant into a register, either
-//    directly or by loading explicitly from the constant pool.
-// 
-// In the first 2 cases, the operand of `minstr' is modified in place.
-// Returns a vector of machine instructions generated for operands that
-// fall under case 3; these must be inserted before `minstr'.
-//---------------------------------------------------------------------------
-
-std::vector<MachineInstr*> FixConstantOperandsForInstr (Instruction* vmInstr,
-                                                        MachineInstr* minstr,
-                                                        TargetMachine& target);
+MachineOperand::MachineOperandType ChooseRegOrImmed(int64_t intValue,
+                                         bool isSigned,
+                                         MachineOpCode opCode,
+                                         const TargetMachine& target,
+                                         bool canUseImmed,
+                                         unsigned& getMachineRegNum,
+                                         int64_t& getImmedValue);
 
 #endif