LLVM  8.0.1
Functions
R600ISelLowering.cpp File Reference

Custom DAG lowering for R600. More...

#include "R600ISelLowering.h"
#include "AMDGPUFrameLowering.h"
#include "AMDGPUSubtarget.h"
#include "R600Defines.h"
#include "R600FrameLowering.h"
#include "R600InstrInfo.h"
#include "R600MachineFunctionInfo.h"
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "Utils/AMDGPUBaseInfo.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/CodeGen/CallingConvLower.h"
#include "llvm/CodeGen/DAGCombine.h"
#include "llvm/CodeGen/ISDOpcodes.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MachineValueType.h"
#include <cassert>
#include <cstdint>
#include <iterator>
#include <utility>
#include <vector>
#include "R600GenCallingConv.inc"
Include dependency graph for R600ISelLowering.cpp:

Go to the source code of this file.

Functions

static bool isEOP (MachineBasicBlock::iterator I)
 
static int ConstantAddressBlock (unsigned AddressSpace)
 
static SDValue CompactSwizzlableVector (SelectionDAG &DAG, SDValue VectorEntry, DenseMap< unsigned, unsigned > &RemapSwizzle)
 
static SDValue ReorganizeVector (SelectionDAG &DAG, SDValue VectorEntry, DenseMap< unsigned, unsigned > &RemapSwizzle)
 

Detailed Description

Custom DAG lowering for R600.

Definition in file R600ISelLowering.cpp.

Function Documentation

◆ CompactSwizzlableVector()

static SDValue CompactSwizzlableVector ( SelectionDAG DAG,
SDValue  VectorEntry,
DenseMap< unsigned, unsigned > &  RemapSwizzle 
)
static

◆ ConstantAddressBlock()

static int ConstantAddressBlock ( unsigned  AddressSpace)
static

Definition at line 1342 of file R600ISelLowering.cpp.

References llvm::ISD::ADD, llvm::ISD::AND, assert(), llvm::EVT::bitsLT(), llvm::AMDGPUISD::BRANCH_COND, llvm::AMDGPUISD::CONST_ADDRESS, AMDGPUAS::CONSTANT_BUFFER_0, AMDGPUAS::CONSTANT_BUFFER_1, AMDGPUAS::CONSTANT_BUFFER_10, AMDGPUAS::CONSTANT_BUFFER_11, AMDGPUAS::CONSTANT_BUFFER_12, AMDGPUAS::CONSTANT_BUFFER_13, AMDGPUAS::CONSTANT_BUFFER_14, AMDGPUAS::CONSTANT_BUFFER_15, AMDGPUAS::CONSTANT_BUFFER_2, AMDGPUAS::CONSTANT_BUFFER_3, AMDGPUAS::CONSTANT_BUFFER_4, AMDGPUAS::CONSTANT_BUFFER_5, AMDGPUAS::CONSTANT_BUFFER_6, AMDGPUAS::CONSTANT_BUFFER_7, AMDGPUAS::CONSTANT_BUFFER_8, AMDGPUAS::CONSTANT_BUFFER_9, llvm::AMDGPUISD::DWORDADDR, llvm::ISD::EXTLOAD, llvm::ISD::EXTRACT_VECTOR_ELT, llvm::ISD::FrameIndex, llvm::UndefValue::get(), llvm::MemSDNode::getAddressSpace(), llvm::MemSDNode::getAlignment(), llvm::LoadSDNode::getBasePtr(), llvm::MemSDNode::getChain(), llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getContext(), llvm::LoadSDNode::getExtensionType(), llvm::SelectionDAG::getExtLoad(), llvm::MachineMemOperand::getFlags(), llvm::R600FrameLowering::getFrameIndexReference(), llvm::R600Subtarget::getFrameLowering(), llvm::FrameIndexSDNode::getIndex(), llvm::Type::getInt32PtrTy(), llvm::SelectionDAG::getLoad(), llvm::SelectionDAG::getMachineFunction(), llvm::MemSDNode::getMemOperand(), llvm::MemSDNode::getMemoryVT(), llvm::SelectionDAG::getMergeValues(), llvm::SelectionDAG::getNode(), llvm::LoadSDNode::getOffset(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::MemSDNode::getPointerInfo(), llvm::EVT::getScalarType(), llvm::AMDGPUFrameLowering::getStackWidth(), llvm::EVT::getStoreSize(), llvm::MachineMemOperand::getValue(), llvm::SDValue::getValueType(), llvm::SelectionDAG::getValueType(), llvm::SelectionDAG::getZeroExtendInReg(), llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i8, llvm::SDValue::isUndef(), llvm::EVT::isVector(), llvm::SPII::Load, AMDGPUAS::LOCAL_ADDRESS, llvm::ISD::NON_EXTLOAD, AMDGPUAS::PRIVATE_ADDRESS, llvm::MipsISD::Ret, llvm::TargetLowering::scalarizeVectorLoad(), llvm::ISD::SEXTLOAD, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SRL, llvm::MVT::v4i32, and llvm::ISD::ZEXTLOAD.

Referenced by ReorganizeVector().

◆ isEOP()

static bool isEOP ( MachineBasicBlock::iterator  I)
inlinestatic

◆ ReorganizeVector()

static SDValue ReorganizeVector ( SelectionDAG DAG,
SDValue  VectorEntry,
DenseMap< unsigned, unsigned > &  RemapSwizzle 
)
static