LLVM API Documentation

DAGCombiner.cpp File Reference

#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Target/TargetLowering.h"
#include <algorithm>
#include <cmath>
#include <iostream>

Include dependency graph for DAGCombiner.cpp:

Go to the source code of this file.

Classes

struct  ms
struct  mu

Defines

#define DEBUG_TYPE   "dagcombine"

Functions

static ms magic32 (int32_t d)
static mu magicu32 (uint32_t d)
static ms magic64 (int64_t d)
static mu magicu64 (uint64_t d)
static bool isSetCCEquivalent (SDOperand N, SDOperand &LHS, SDOperand &RHS, SDOperand &CC)
static bool isOneUseSetCC (SDOperand N)
static bool isCommutativeBinOp (unsigned Opcode)

Variables

Statistic NodesCombined ("dagcombiner","Number of dag nodes combined")
SelectionDAGDAG
TargetLoweringTLI
bool AfterLegalize
std::vector< SDNode * > WorkList


Define Documentation

#define DEBUG_TYPE   "dagcombine"

Definition at line 32 of file DAGCombiner.cpp.


Function Documentation

static bool isCommutativeBinOp ( unsigned  Opcode  )  [static]

Definition at line 481 of file DAGCombiner.cpp.

References llvm::ISD::ADD, llvm::ISD::AND, llvm::ISD::MUL, llvm::ISD::OR, and llvm::ISD::XOR.

Referenced by llvm::SelectionDAG::getNode().

static bool isOneUseSetCC ( SDOperand  N  )  [static]

Definition at line 472 of file DAGCombiner.cpp.

References llvm::SDNode::hasOneUse(), isSetCCEquivalent(), and llvm::SDOperand::Val.

static bool isSetCCEquivalent ( SDOperand  N,
SDOperand LHS,
SDOperand RHS,
SDOperand CC 
) [static]

Definition at line 448 of file DAGCombiner.cpp.

References llvm::ISD::Constant, llvm::SDOperand::getOpcode(), llvm::SDOperand::getOperand(), llvm::ISD::SELECT_CC, and llvm::ISD::SETCC.

Referenced by isOneUseSetCC().

static ms magic32 ( int32_t  d  )  [static]

magic - calculate the magic numbers required to codegen an integer sdiv as a sequence of multiply and shifts. Requires that the divisor not be 0, 1, or -1.

Definition at line 285 of file DAGCombiner.cpp.

References ms::m, ms::s, and U.

static ms magic64 ( int64_t  d  )  [static]

magic - calculate the magic numbers required to codegen an integer sdiv as a sequence of multiply and shifts. Requires that the divisor not be 0, 1, or -1.

Definition at line 365 of file DAGCombiner.cpp.

References ms::m, and ms::s.

static mu magicu32 ( uint32_t  d  )  [static]

magicu - calculate the magic numbers required to codegen an integer udiv as a sequence of multiply, add and shifts. Requires that the divisor not be 0.

Definition at line 324 of file DAGCombiner.cpp.

References mu::a, mu::m, and mu::s.

static mu magicu64 ( uint64_t  d  )  [static]

magicu - calculate the magic numbers required to codegen an integer udiv as a sequence of multiply, add and shifts. Requires that the divisor not be 0.

Definition at line 404 of file DAGCombiner.cpp.

References mu::a, mu::m, and mu::s.


Variable Documentation

bool AfterLegalize

Definition at line 49 of file DAGCombiner.cpp.

SelectionDAG& DAG

Definition at line 47 of file DAGCombiner.cpp.

Referenced by CommuteVectorShuffle(), llvm::createBFS_DAGScheduler(), llvm::createBURRListDAGScheduler(), llvm::createSimpleDAGScheduler(), llvm::createTDListDAGScheduler(), llvm::AlphaTargetLowering::CustomPromoteOperation(), llvm::PPC::get_VSPLTI_elt(), getMemBasePlusOffset(), getMemsetStringVal(), getMemsetValue(), llvm::X86TargetLowering::getReturnAddressFrameIndex(), llvm::SelectionDAGLowering::getRoot(), llvm::X86TargetLowering::LowerArguments(), llvm::TargetLowering::LowerArguments(), llvm::PPCTargetLowering::LowerArguments(), llvm::IA64TargetLowering::LowerArguments(), llvm::AlphaTargetLowering::LowerArguments(), llvm::X86TargetLowering::LowerCallTo(), llvm::PPCTargetLowering::LowerCallTo(), llvm::IA64TargetLowering::LowerCallTo(), llvm::AlphaTargetLowering::LowerCallTo(), llvm::X86TargetLowering::LowerFrameReturnAddress(), llvm::TargetLowering::LowerFrameReturnAddress(), llvm::X86TargetLowering::LowerOperation(), llvm::PPCTargetLowering::LowerOperation(), llvm::IA64TargetLowering::LowerOperation(), llvm::AlphaTargetLowering::LowerOperation(), llvm::PPCTargetLowering::PerformDAGCombine(), llvm::SelectionDAGISel::ScheduleAndEmitDAG(), and llvm::SelectionDAGISel::SelectInlineAsmMemoryOperands().

Statistic NodesCombined("dagcombiner","Number of dag nodes combined") [static]

TargetLowering& TLI

Definition at line 48 of file DAGCombiner.cpp.

Referenced by llvm::createLoopStrengthReducePass(), getMemsetStringVal(), llvm::SDNode::getOperationName(), isAllocatableRegister(), isTargetConstant(), MeetsMaxMemopRequirement(), MoveImmediateValues(), and SetValueTypeAction().

std::vector<SDNode*> WorkList

Definition at line 52 of file DAGCombiner.cpp.