LLVM 22.0.0git
|
#include "NVPTXISelDAGToDAG.h"
#include "NVPTX.h"
#include "NVPTXUtilities.h"
#include "llvm/ADT/APInt.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/CodeGen/ISDOpcodes.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/CodeGen/SelectionDAGNodes.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicsNVPTX.h"
#include "llvm/IR/NVVMIntrinsicUtils.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/MathExtras.h"
#include <optional>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "nvptx-isel" |
#define | PASS_NAME "NVPTX DAG->DAG Pattern Instruction Selection" |
#define | TCGEN05_LD_OPCODE(SHAPE, NUM) |
#define | CP_ASYNC_BULK_TENSOR_OPCODE(dir, dim, mode, is_s32, suffix) |
#define | GET_CP_ASYNC_BULK_TENSOR_OPCODE_S2G_RED(dim, mode, is_ch, is_s32) |
#define | GET_CP_ASYNC_BULK_TENSOR_OPCODE_G2S(dim, mode, is_mc, is_ch, is_s32) |
#define | TCGEN05_ST_OPCODE(SHAPE, NUM) |
Variables | |
static cl::opt< bool > | EnableRsqrtOpt ("nvptx-rsqrt-approx-opt", cl::init(true), cl::Hidden, cl::desc("Enable reciprocal sqrt optimization")) |
#define CP_ASYNC_BULK_TENSOR_OPCODE | ( | dir, | |
dim, | |||
mode, | |||
is_s32, | |||
suffix ) |
Definition at line 1851 of file NVPTXISelDAGToDAG.cpp.
#define DEBUG_TYPE "nvptx-isel" |
Definition at line 34 of file NVPTXISelDAGToDAG.cpp.
#define GET_CP_ASYNC_BULK_TENSOR_OPCODE_G2S | ( | dim, | |
mode, | |||
is_mc, | |||
is_ch, | |||
is_s32 ) |
Definition at line 1860 of file NVPTXISelDAGToDAG.cpp.
Referenced by GetCpAsyncBulkTensorG2SOpcode().
#define GET_CP_ASYNC_BULK_TENSOR_OPCODE_S2G_RED | ( | dim, | |
mode, | |||
is_ch, | |||
is_s32 ) |
Definition at line 1856 of file NVPTXISelDAGToDAG.cpp.
Referenced by GetCpAsyncBulkTensorS2GReductionOpcode().
#define PASS_NAME "NVPTX DAG->DAG Pattern Instruction Selection" |
Definition at line 35 of file NVPTXISelDAGToDAG.cpp.
#define TCGEN05_LD_OPCODE | ( | SHAPE, | |
NUM ) |
Definition at line 189 of file NVPTXISelDAGToDAG.cpp.
Referenced by getTcgen05LdOpcode().
#define TCGEN05_ST_OPCODE | ( | SHAPE, | |
NUM ) |
Definition at line 2044 of file NVPTXISelDAGToDAG.cpp.
Referenced by getTcgen05StOpcode().
|
static |
Definition at line 1057 of file NVPTXISelDAGToDAG.cpp.
References DL, llvm::dyn_cast(), llvm::SDNode::getOperand(), llvm::SDValue::getOperand(), llvm::APInt::getSExtValue(), llvm::SelectionDAG::getSignedTargetConstant(), isAddLike(), llvm::APInt::sext(), and stripAssertAlign().
Referenced by selectADDR().
|
static |
Definition at line 774 of file NVPTXISelDAGToDAG.cpp.
References llvm::NVPTX::Global, llvm::NVPTXSubtarget::hasLDG(), and N.
|
static |
Definition at line 482 of file NVPTXISelDAGToDAG.cpp.
References llvm::NVPTXAS::ADDRESS_SPACE_CONST, llvm::NVPTXAS::ADDRESS_SPACE_GENERIC, llvm::NVPTXAS::ADDRESS_SPACE_GLOBAL, llvm::NVPTXAS::ADDRESS_SPACE_LOCAL, llvm::NVPTXAS::ADDRESS_SPACE_PARAM, llvm::NVPTXAS::ADDRESS_SPACE_SHARED, llvm::NVPTXAS::ADDRESS_SPACE_SHARED_CLUSTER, llvm::NVPTX::Const, llvm::NVPTX::Generic, llvm::NVPTX::Global, llvm::NVPTX::Local, llvm::NVPTX::Param, llvm::NVPTX::Shared, and llvm::NVPTX::SharedCluster.
Referenced by llvm::NVPTXDAGToDAGISel::getAddrSpace().
|
static |
Definition at line 1914 of file NVPTXISelDAGToDAG.cpp.
References D(), GET_CP_ASYNC_BULK_TENSOR_OPCODE_G2S, and llvm_unreachable.
|
static |
Definition at line 1871 of file NVPTXISelDAGToDAG.cpp.
References D(), GET_CP_ASYNC_BULK_TENSOR_OPCODE_S2G_RED, and llvm_unreachable.
|
static |
Definition at line 1956 of file NVPTXISelDAGToDAG.cpp.
References llvm_unreachable.
|
static |
Definition at line 782 of file NVPTXISelDAGToDAG.cpp.
References llvm::NVPTX::Acquire, llvm::NVPTX::AcquireRelease, llvm::NVPTX::Block, llvm::NVPTX::Cluster, llvm::NVPTX::DefaultDevice, llvm::NVPTX::Device, llvm::formatv(), llvm_unreachable, llvm::NVPTX::NotAtomic, llvm::NVPTX::Relaxed, llvm::NVPTX::RelaxedMMIO, llvm::NVPTX::Release, llvm::report_fatal_error(), llvm::NVPTX::SequentiallyConsistent, llvm::NVPTX::System, T, llvm::NVPTX::Thread, and llvm::NVPTX::Volatile.
Definition at line 1152 of file NVPTXISelDAGToDAG.cpp.
References llvm_unreachable, N, llvm::NVPTXISD::StoreV2, llvm::NVPTXISD::StoreV4, and llvm::NVPTXISD::StoreV8.
Definition at line 193 of file NVPTXISelDAGToDAG.cpp.
References llvm_unreachable, and TCGEN05_LD_OPCODE.
Definition at line 2048 of file NVPTXISelDAGToDAG.cpp.
References llvm_unreachable, and TCGEN05_ST_OPCODE.
Definition at line 1029 of file NVPTXISelDAGToDAG.cpp.
References llvm::ISD::ADD, and llvm::ISD::OR.
Referenced by accumulateOffset().
|
static |
Definition at line 1005 of file NVPTXISelDAGToDAG.cpp.
|
static |
Definition at line 1076 of file NVPTXISelDAGToDAG.cpp.
References accumulateOffset(), llvm::sampleprof::Base, llvm::Offset, and selectBaseADDR().
Referenced by llvm::NVPTXDAGToDAGISel::SelectInlineAsmMemoryOperand().
|
static |
Definition at line 1042 of file NVPTXISelDAGToDAG.cpp.
References llvm::dyn_cast(), llvm::SelectionDAG::getTargetExternalSymbol(), llvm::SelectionDAG::getTargetFrameIndex(), llvm::SelectionDAG::getTargetGlobalAddress(), N, and stripAssertAlign().
Referenced by selectADDR().
Definition at line 1034 of file NVPTXISelDAGToDAG.cpp.
References llvm::ISD::AssertAlign, and N.
Referenced by accumulateOffset(), and selectBaseADDR().