LLVM API Documentation

Defines | Functions
SystemZISelLowering.cpp File Reference
#include "SystemZISelLowering.h"
#include "SystemZCallingConv.h"
#include "SystemZConstantPoolValue.h"
#include "SystemZMachineFunctionInfo.h"
#include "SystemZTargetMachine.h"
#include "llvm/CodeGen/CallingConvLower.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
#include <cctype>
#include "SystemZGenCallingConv.inc"
Include dependency graph for SystemZISelLowering.cpp:

Go to the source code of this file.

Defines

#define DEBUG_TYPE   "systemz-lower"
#define CONV(X)
#define OPCODE(NAME)   case SystemZISD::NAME: return "SystemZISD::" #NAME

Functions

static bool is32Bit (EVT VT)
static MachineOperand earlyUseOperand (MachineOperand Op)
static std::pair< unsigned,
const TargetRegisterClass * > 
parseRegisterNumber (const std::string &Constraint, const TargetRegisterClass *RC, const unsigned *Map)
static SDValue convertLocVTToValVT (SelectionDAG &DAG, SDLoc DL, CCValAssign &VA, SDValue Chain, SDValue Value)
static SDValue convertValVTToLocVT (SelectionDAG &DAG, SDLoc DL, CCValAssign &VA, SDValue Value)
static bool canUseSiblingCall (CCState ArgCCInfo, SmallVectorImpl< CCValAssign > &ArgLocs)
static unsigned CCMaskForCondCode (ISD::CondCode CC)
static IPMConversion getIPMConversion (unsigned CCValid, unsigned CCMask)
static void adjustZeroCmp (SelectionDAG &DAG, Comparison &C)
static void adjustSubwordCmp (SelectionDAG &DAG, Comparison &C)
static bool isNaturalMemoryOperand (SDValue Op, unsigned ICmpType)
static bool shouldSwapCmpOperands (const Comparison &C)
static unsigned reverseCCMask (unsigned CCMask)
static void adjustForSubtraction (SelectionDAG &DAG, Comparison &C)
static void adjustForFNeg (Comparison &C)
static void adjustForLTGFR (Comparison &C)
static void adjustICmpTruncate (SelectionDAG &DAG, Comparison &C)
static bool isSimpleShift (SDValue N, unsigned &ShiftVal)
static unsigned getTestUnderMaskCond (unsigned BitSize, unsigned CCMask, uint64_t Mask, uint64_t CmpVal, unsigned ICmpType)
static void adjustForTestUnderMask (SelectionDAG &DAG, Comparison &C)
static Comparison getCmp (SelectionDAG &DAG, SDValue CmpOp0, SDValue CmpOp1, ISD::CondCode Cond)
static SDValue emitCmp (SelectionDAG &DAG, SDLoc DL, Comparison &C)
static void lowerMUL_LOHI32 (SelectionDAG &DAG, SDLoc DL, unsigned Extend, SDValue Op0, SDValue Op1, SDValue &Hi, SDValue &Lo)
static void lowerGR128Binary (SelectionDAG &DAG, SDLoc DL, EVT VT, unsigned Extend, unsigned Opcode, SDValue Op0, SDValue Op1, SDValue &Even, SDValue &Odd)
static SDValue emitSETCC (SelectionDAG &DAG, SDLoc DL, SDValue Glue, unsigned CCValid, unsigned CCMask)
static bool isAbsolute (SDValue CmpOp, SDValue Pos, SDValue Neg)
static SDValue getAbsolute (SelectionDAG &DAG, SDLoc DL, SDValue Op, bool IsNegative)
static MachineBasicBlockemitBlockAfter (MachineBasicBlock *MBB)
static MachineBasicBlocksplitBlockAfter (MachineInstr *MI, MachineBasicBlock *MBB)
static MachineBasicBlocksplitBlockBefore (MachineInstr *MI, MachineBasicBlock *MBB)
static unsigned forceReg (MachineInstr *MI, MachineOperand &Base, const SystemZInstrInfo *TII)

Define Documentation

#define CONV (   X)
Value:
case ISD::SET##X: return SystemZ::CCMASK_CMP_##X; \
  case ISD::SETO##X: return SystemZ::CCMASK_CMP_##X; \
  case ISD::SETU##X: return SystemZ::CCMASK_CMP_UO | SystemZ::CCMASK_CMP_##X

Referenced by CCMaskForCondCode().

#define DEBUG_TYPE   "systemz-lower"

Definition at line 27 of file SystemZISelLowering.cpp.

#define OPCODE (   NAME)    case SystemZISD::NAME: return "SystemZISD::" #NAME

Function Documentation

static void adjustForFNeg ( Comparison &  C) [static]

Definition at line 1313 of file SystemZISelLowering.cpp.

References llvm::dyn_cast(), llvm::ISD::FNEG, llvm::SDNode::getOpcode(), I, N, and reverseCCMask().

Referenced by getCmp().

static void adjustForLTGFR ( Comparison &  C) [static]
static void adjustForSubtraction ( SelectionDAG DAG,
Comparison &  C 
) [static]
static void adjustForTestUnderMask ( SelectionDAG DAG,
Comparison &  C 
) [static]
static void adjustICmpTruncate ( SelectionDAG DAG,
Comparison &  C 
) [static]
static void adjustSubwordCmp ( SelectionDAG DAG,
Comparison &  C 
) [static]
static void adjustZeroCmp ( SelectionDAG DAG,
Comparison &  C 
) [static]
static bool canUseSiblingCall ( CCState  ArgCCInfo,
SmallVectorImpl< CCValAssign > &  ArgLocs 
) [static]
static unsigned CCMaskForCondCode ( ISD::CondCode  CC) [static]
static SDValue convertLocVTToValVT ( SelectionDAG DAG,
SDLoc  DL,
CCValAssign VA,
SDValue  Chain,
SDValue  Value 
) [static]
static SDValue convertValVTToLocVT ( SelectionDAG DAG,
SDLoc  DL,
CCValAssign VA,
SDValue  Value 
) [static]
static MachineBasicBlock* emitBlockAfter ( MachineBasicBlock MBB) [static]
static SDValue emitCmp ( SelectionDAG DAG,
SDLoc  DL,
Comparison &  C 
) [static]
static SDValue emitSETCC ( SelectionDAG DAG,
SDLoc  DL,
SDValue  Glue,
unsigned  CCValid,
unsigned  CCMask 
) [static]
static unsigned forceReg ( MachineInstr MI,
MachineOperand Base,
const SystemZInstrInfo TII 
) [static]
static SDValue getAbsolute ( SelectionDAG DAG,
SDLoc  DL,
SDValue  Op,
bool  IsNegative 
) [static]
static Comparison getCmp ( SelectionDAG DAG,
SDValue  CmpOp0,
SDValue  CmpOp1,
ISD::CondCode  Cond 
) [static]
static IPMConversion getIPMConversion ( unsigned  CCValid,
unsigned  CCMask 
) [static]
static unsigned getTestUnderMaskCond ( unsigned  BitSize,
unsigned  CCMask,
uint64_t  Mask,
uint64_t  CmpVal,
unsigned  ICmpType 
) [static]
static bool is32Bit ( EVT  VT) [static]
static bool isAbsolute ( SDValue  CmpOp,
SDValue  Pos,
SDValue  Neg 
) [static]
static bool isNaturalMemoryOperand ( SDValue  Op,
unsigned  ICmpType 
) [static]
static bool isSimpleShift ( SDValue  N,
unsigned ShiftVal 
) [static]
static void lowerGR128Binary ( SelectionDAG DAG,
SDLoc  DL,
EVT  VT,
unsigned  Extend,
unsigned  Opcode,
SDValue  Op0,
SDValue  Op1,
SDValue Even,
SDValue Odd 
) [static]
static void lowerMUL_LOHI32 ( SelectionDAG DAG,
SDLoc  DL,
unsigned  Extend,
SDValue  Op0,
SDValue  Op1,
SDValue Hi,
SDValue Lo 
) [static]
static std::pair<unsigned, const TargetRegisterClass *> parseRegisterNumber ( const std::string &  Constraint,
const TargetRegisterClass RC,
const unsigned Map 
) [static]
static unsigned reverseCCMask ( unsigned  CCMask) [static]
static bool shouldSwapCmpOperands ( const Comparison &  C) [static]
static MachineBasicBlock* splitBlockAfter ( MachineInstr MI,
MachineBasicBlock MBB 
) [static]
static MachineBasicBlock* splitBlockBefore ( MachineInstr MI,
MachineBasicBlock MBB 
) [static]