LLVM
8.0.1
|
#include "NVPTXISelDAGToDAG.h"
#include "NVPTXUtilities.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/Instructions.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetIntrinsicInfo.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "nvptx-isel" |
Functions | |
static unsigned | getPTXCmpMode (const CondCodeSDNode &CondCode, bool FTZ) |
static unsigned int | getCodeAddrSpace (MemSDNode *N) |
static bool | canLowerToLDG (MemSDNode *N, const NVPTXSubtarget &Subtarget, unsigned CodeAddrSpace, MachineFunction *F) |
static Optional< unsigned > | pickOpcodeForVT (MVT::SimpleValueType VT, unsigned Opcode_i8, unsigned Opcode_i16, unsigned Opcode_i32, Optional< unsigned > Opcode_i64, unsigned Opcode_f16, unsigned Opcode_f16x2, unsigned Opcode_f32, Optional< unsigned > Opcode_f64) |
#define DEBUG_TYPE "nvptx-isel" |
Definition at line 28 of file NVPTXISelDAGToDAG.cpp.
|
static |
Definition at line 675 of file NVPTXISelDAGToDAG.cpp.
References llvm::ADDRESS_SPACE_CONST, llvm::ADDRESS_SPACE_GENERIC, llvm::ADDRESS_SPACE_GLOBAL, llvm::ADDRESS_SPACE_LOCAL, llvm::ADDRESS_SPACE_PARAM, llvm::ADDRESS_SPACE_SHARED, llvm::all_of(), assert(), llvm::SelectionDAGISel::CurDAG, llvm::MachineFunction::getDataLayout(), llvm::AddrSpaceCastSDNode::getDestAddressSpace(), llvm::MachineFunction::getFunction(), llvm::SelectionDAG::getMachineNode(), llvm::MemSDNode::getMemOperand(), llvm::SDValue::getOperand(), llvm::SDNode::getOperand(), llvm::AddrSpaceCastSDNode::getSrcAddressSpace(), llvm::GetUnderlyingObjects(), llvm::MachineMemOperand::getValue(), llvm::SDNode::getValueType(), llvm::NVPTX::PTXLdStInstCode::GLOBAL, llvm::NVPTXSubtarget::hasLDG(), llvm::MVT::i64, llvm::NVPTXTargetMachine::is64Bit(), llvm::MemSDNode::isInvariant(), llvm::isKernelFunction(), N, llvm::Intrinsic::nvvm_ptr_gen_to_param, llvm::Intrinsic::nvvm_texsurf_handle_internal, llvm::SelectionDAGISel::ReplaceNode(), llvm::report_fatal_error(), and Wrapper.
Referenced by pickOpcodeForVT().
Definition at line 655 of file NVPTXISelDAGToDAG.cpp.
References llvm::ADDRESS_SPACE_CONST, llvm::ADDRESS_SPACE_GENERIC, llvm::ADDRESS_SPACE_GLOBAL, llvm::ADDRESS_SPACE_LOCAL, llvm::ADDRESS_SPACE_PARAM, llvm::ADDRESS_SPACE_SHARED, llvm::NVPTX::PTXLdStInstCode::CONSTANT, llvm::NVPTX::PTXLdStInstCode::GENERIC, llvm::MemSDNode::getMemOperand(), llvm::Value::getType(), llvm::MachineMemOperand::getValue(), llvm::NVPTX::PTXLdStInstCode::GLOBAL, llvm::NVPTX::PTXLdStInstCode::LOCAL, llvm::NVPTX::PTXLdStInstCode::PARAM, and llvm::NVPTX::PTXLdStInstCode::SHARED.
Referenced by pickOpcodeForVT().
|
static |
Definition at line 536 of file NVPTXISelDAGToDAG.cpp.
References llvm::ISD::BITCAST, llvm::SelectionDAGISel::CurDAG, llvm::SmallVectorBase::empty(), EQ, llvm::NVPTX::PTXCmpMode::EQU, llvm::ISD::EXTRACT_VECTOR_ELT, llvm::MVT::f16, llvm::NVPTX::PTXCmpMode::FTZ_FLAG, llvm::AArch64CC::GE, llvm::CondCodeSDNode::get(), llvm::SelectionDAG::getMachineNode(), llvm::SDValue::getNode(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::SDValue::getSimpleValueType(), llvm::SelectionDAG::getTargetConstant(), llvm::NVPTX::PTXCmpMode::GEU, llvm::AArch64CC::GT, llvm::NVPTX::PTXCmpMode::GTU, llvm::MVT::i1, llvm::MVT::i32, llvm::AArch64CC::LE, llvm::NVPTX::PTXCmpMode::LEU, llvm_unreachable, llvm::AArch64CC::LT, llvm::NVPTX::PTXCmpMode::LTU, llvm::AArch64CC::NE, llvm::NVPTX::PTXCmpMode::NEU, llvm::NVPTX::PTXCmpMode::NotANumber, llvm::NVPTX::PTXCmpMode::NUM, llvm::SmallVectorTemplateBase< T >::push_back(), llvm::SelectionDAGISel::ReplaceNode(), llvm::ISD::SETEQ, llvm::ISD::SETGE, llvm::ISD::SETGT, llvm::ISD::SETLE, llvm::ISD::SETLT, llvm::ISD::SETNE, llvm::ISD::SETO, llvm::ISD::SETOEQ, llvm::ISD::SETOGE, llvm::ISD::SETOGT, llvm::ISD::SETOLE, llvm::ISD::SETOLT, llvm::ISD::SETONE, llvm::ISD::SETUEQ, llvm::ISD::SETUGE, llvm::ISD::SETUGT, llvm::ISD::SETULE, llvm::ISD::SETULT, llvm::ISD::SETUNE, llvm::ISD::SETUO, llvm::Sched::Source, llvm::SDNode::uses(), and llvm::MVT::v2f16.
|
static |
Definition at line 811 of file NVPTXISelDAGToDAG.cpp.
References assert(), canLowerToLDG(), llvm::NVPTX::PTXLdStInstCode::CONSTANT, llvm::SelectionDAGISel::CurDAG, llvm::dyn_cast(), llvm::MVT::f16, llvm::MVT::f32, llvm::MVT::f64, llvm::NVPTX::PTXLdStInstCode::Float, llvm::NVPTX::PTXLdStInstCode::GENERIC, llvm::MemSDNode::getAddressSpace(), llvm::MemSDNode::getBasePtr(), llvm::MemSDNode::getChain(), getCodeAddrSpace(), llvm::SelectionDAG::getDataLayout(), llvm::LoadSDNode::getExtensionType(), llvm::SelectionDAG::getMachineNode(), llvm::MemSDNode::getMemOperand(), llvm::MemSDNode::getMemoryVT(), llvm::SDValue::getNode(), llvm::SDNode::getNumOperands(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::MemSDNode::getOrdering(), llvm::DataLayout::getPointerSizeInBits(), llvm::MVT::getScalarType(), llvm::SDNode::getSimpleValueType(), llvm::EVT::getSimpleVT(), llvm::MVT::getSizeInBits(), llvm::SelectionDAG::getTargetConstant(), llvm::Optional< T >::getValue(), llvm::SDValue::getValueType(), llvm::SDNode::getValueType(), llvm::EVT::getVectorElementType(), llvm::EVT::getVectorNumElements(), llvm::SelectionDAG::getVTList(), llvm::SDNode::getVTList(), llvm::NVPTX::PTXLdStInstCode::GLOBAL, llvm::MVT::i1, llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::i8, llvm::ISD::INTRINSIC_W_CHAIN, llvm::NVPTXTargetMachine::is64Bit(), llvm::MVT::isFloatingPoint(), llvm::EVT::isSimple(), llvm::isStrongerThanMonotonic(), llvm::EVT::isVector(), llvm::MVT::isVector(), llvm::AMDGPU::HSAMD::Kernel::Arg::Key::IsVolatile, isVolatile(), llvm::MemSDNode::isVolatile(), llvm::ARM_MB::LD, llvm::NVPTXISD::LDGV2, llvm::NVPTXISD::LDGV4, llvm::NVPTXISD::LDUV2, llvm::NVPTXISD::LDUV4, llvm::ISD::LOAD, llvm::NVPTXISD::LoadV2, llvm::NVPTXISD::LoadV4, llvm::max(), llvm::SelectionDAGISel::MF, llvm::Monotonic, N, llvm::None, llvm::NVPTX::PTXCvtMode::NONE, llvm::Intrinsic::nvvm_ldg_global_f, llvm::Intrinsic::nvvm_ldg_global_i, llvm::Intrinsic::nvvm_ldg_global_p, llvm::Intrinsic::nvvm_ldu_global_f, llvm::Intrinsic::nvvm_ldu_global_i, llvm::Intrinsic::nvvm_ldu_global_p, llvm::MVT::Other, llvm::SmallVectorTemplateBase< T >::push_back(), llvm::MemSDNode::readMem(), llvm::SelectionDAGISel::ReplaceNode(), llvm::SelectionDAGISel::ReplaceUses(), llvm::report_fatal_error(), llvm::NVPTX::PTXLdStInstCode::Scalar, llvm::SelectionDAG::setNodeMemRefs(), llvm::ISD::SEXTLOAD, llvm::NVPTX::PTXLdStInstCode::SHARED, llvm::NVPTX::PTXLdStInstCode::Signed, llvm::MVT::SimpleTy, llvm::ARM_MB::ST, llvm::NVPTXISD::StoreV2, llvm::NVPTXISD::StoreV4, llvm::NVPTXDAGToDAGISel::Subtarget, llvm::NVPTX::PTXLdStInstCode::Unsigned, llvm::NVPTX::PTXLdStInstCode::Untyped, llvm::NVPTX::PTXLdStInstCode::V2, llvm::MVT::v2f16, llvm::NVPTX::PTXLdStInstCode::V4, and llvm::MemSDNode::writeMem().