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 "llvm/Support/Visibility.h"
#include <algorithm>
#include <cmath>
#include <iostream>

Include dependency graph for DAGCombiner.cpp:

Go to the source code of this file.

Defines

#define DEBUG_TYPE   "dagcombine"

Functions

static bool isSetCCEquivalent (SDOperand N, SDOperand &LHS, SDOperand &RHS, SDOperand &CC)
static bool isOneUseSetCC (SDOperand N)
static bool isCommutativeBinOp (unsigned Opcode)

Variables

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


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 314 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 305 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 281 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().


Variable Documentation

bool AfterLegalize

Definition at line 51 of file DAGCombiner.cpp.

SelectionDAG& DAG

Definition at line 49 of file DAGCombiner.cpp.

Referenced by BuildIntrinsicOp(), llvm::TargetLowering::BuildSDIV(), BuildSplatI(), llvm::TargetLowering::BuildUDIV(), BuildVSLDOI(), CommuteVectorShuffle(), llvm::createBFS_DAGScheduler(), llvm::createBURRListDAGScheduler(), llvm::createSimpleDAGScheduler(), llvm::createTDListDAGScheduler(), llvm::createTDRRListDAGScheduler(), llvm::AlphaTargetLowering::CustomPromoteOperation(), GeneratePerfectShuffle(), llvm::PPC::get_VSPLTI_elt(), getMemBasePlusOffset(), getMemsetStringVal(), getMemsetValue(), getMOVLMask(), llvm::X86TargetLowering::getReturnAddressFrameIndex(), llvm::SelectionDAGLowering::getRoot(), getShuffleScalarElt(), getShuffleVectorZeroOrUndef(), getUnpackhMask(), getUnpacklMask(), getZeroVector(), isBLACompatibleAddress(), llvm::TargetLowering::LowerArguments(), llvm::IA64TargetLowering::LowerArguments(), LowerBUILD_VECTOR(), LowerBuildVectorv16i8(), LowerBuildVectorv8i16(), LowerCALL(), llvm::TargetLowering::LowerCallTo(), llvm::IA64TargetLowering::LowerCallTo(), llvm::AlphaTargetLowering::LowerCallTo(), LowerConstantPool(), LowerFORMAL_ARGUMENT(), LowerFORMAL_ARGUMENTS(), LowerFP_TO_SINT(), llvm::X86TargetLowering::LowerFrameReturnAddress(), llvm::TargetLowering::LowerFrameReturnAddress(), LowerGlobalAddress(), LowerINTRINSIC_WO_CHAIN(), LowerJumpTable(), LowerMUL(), llvm::X86TargetLowering::LowerOperation(), llvm::PPCTargetLowering::LowerOperation(), llvm::IA64TargetLowering::LowerOperation(), llvm::AlphaTargetLowering::LowerOperation(), LowerRET(), LowerSCALAR_TO_VECTOR(), LowerSELECT_CC(), LowerSETCC(), LowerSHL(), LowerSINT_TO_FP(), LowerSRA(), LowerSRL(), LowerVASTART(), LowerVECTOR_SHUFFLE(), NormalizeMask(), llvm::X86TargetLowering::PerformDAGCombine(), llvm::PPCTargetLowering::PerformDAGCombine(), PerformShuffleCombine(), PromoteSplat(), llvm::SelectionDAGISel::ScheduleAndEmitDAG(), and llvm::SelectionDAGISel::SelectInlineAsmMemoryOperands().

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

TargetLowering& TLI

Definition at line 50 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 54 of file DAGCombiner.cpp.