summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
diff options
context:
space:
mode:
authorNicolai Haehnle <nhaehnle@gmail.com>2018-06-21 13:37:45 +0000
committerNicolai Haehnle <nhaehnle@gmail.com>2018-06-21 13:37:45 +0000
commitdb6911a6f9592fa394c0e0a1c0cf268a696e018f (patch)
tree3ec101f3343c0b9944d9f6384f37f95e000274bb /llvm/lib/Target/AMDGPU/SIISelLowering.cpp
parentb29ee701229ba46c160e365234c214c2d59b7702 (diff)
downloadbcm5719-llvm-db6911a6f9592fa394c0e0a1c0cf268a696e018f.tar.gz
bcm5719-llvm-db6911a6f9592fa394c0e0a1c0cf268a696e018f.zip
AMDGPU: Remove old-style image intrinsics
Summary: This also removes the need for atomic pseudo instructions, since we select the correct encoding directly in SITargetLowering::lowerImage for dimension-aware image intrinsics. Mesa uses dimension-aware image intrinsics since commit a9a7993441. Change-Id: I7473d20009476a4ed6d919cae4e6dca9ff42e77a Reviewers: arsenm, rampitec, mareko, tpr, b-sumner Subscribers: kzhuravl, wdng, yaxunl, dstuttard, t-tye, llvm-commits Differential Revision: https://reviews.llvm.org/D48167 llvm-svn: 335231
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIISelLowering.cpp')
-rw-r--r--llvm/lib/Target/AMDGPU/SIISelLowering.cpp303
1 files changed, 0 insertions, 303 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
index e17cef855d9..77fa76d1cdf 100644
--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -3519,163 +3519,6 @@ SDValue SITargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
return SDValue();
}
-static unsigned getImageOpcode(unsigned IID) {
- switch (IID) {
- case Intrinsic::amdgcn_image_load:
- return AMDGPUISD::IMAGE_LOAD;
- case Intrinsic::amdgcn_image_load_mip:
- return AMDGPUISD::IMAGE_LOAD_MIP;
-
- // Basic sample.
- case Intrinsic::amdgcn_image_sample:
- return AMDGPUISD::IMAGE_SAMPLE;
- case Intrinsic::amdgcn_image_sample_cl:
- return AMDGPUISD::IMAGE_SAMPLE_CL;
- case Intrinsic::amdgcn_image_sample_d:
- return AMDGPUISD::IMAGE_SAMPLE_D;
- case Intrinsic::amdgcn_image_sample_d_cl:
- return AMDGPUISD::IMAGE_SAMPLE_D_CL;
- case Intrinsic::amdgcn_image_sample_l:
- return AMDGPUISD::IMAGE_SAMPLE_L;
- case Intrinsic::amdgcn_image_sample_b:
- return AMDGPUISD::IMAGE_SAMPLE_B;
- case Intrinsic::amdgcn_image_sample_b_cl:
- return AMDGPUISD::IMAGE_SAMPLE_B_CL;
- case Intrinsic::amdgcn_image_sample_lz:
- return AMDGPUISD::IMAGE_SAMPLE_LZ;
- case Intrinsic::amdgcn_image_sample_cd:
- return AMDGPUISD::IMAGE_SAMPLE_CD;
- case Intrinsic::amdgcn_image_sample_cd_cl:
- return AMDGPUISD::IMAGE_SAMPLE_CD_CL;
-
- // Sample with comparison.
- case Intrinsic::amdgcn_image_sample_c:
- return AMDGPUISD::IMAGE_SAMPLE_C;
- case Intrinsic::amdgcn_image_sample_c_cl:
- return AMDGPUISD::IMAGE_SAMPLE_C_CL;
- case Intrinsic::amdgcn_image_sample_c_d:
- return AMDGPUISD::IMAGE_SAMPLE_C_D;
- case Intrinsic::amdgcn_image_sample_c_d_cl:
- return AMDGPUISD::IMAGE_SAMPLE_C_D_CL;
- case Intrinsic::amdgcn_image_sample_c_l:
- return AMDGPUISD::IMAGE_SAMPLE_C_L;
- case Intrinsic::amdgcn_image_sample_c_b:
- return AMDGPUISD::IMAGE_SAMPLE_C_B;
- case Intrinsic::amdgcn_image_sample_c_b_cl:
- return AMDGPUISD::IMAGE_SAMPLE_C_B_CL;
- case Intrinsic::amdgcn_image_sample_c_lz:
- return AMDGPUISD::IMAGE_SAMPLE_C_LZ;
- case Intrinsic::amdgcn_image_sample_c_cd:
- return AMDGPUISD::IMAGE_SAMPLE_C_CD;
- case Intrinsic::amdgcn_image_sample_c_cd_cl:
- return AMDGPUISD::IMAGE_SAMPLE_C_CD_CL;
-
- // Sample with offsets.
- case Intrinsic::amdgcn_image_sample_o:
- return AMDGPUISD::IMAGE_SAMPLE_O;
- case Intrinsic::amdgcn_image_sample_cl_o:
- return AMDGPUISD::IMAGE_SAMPLE_CL_O;
- case Intrinsic::amdgcn_image_sample_d_o:
- return AMDGPUISD::IMAGE_SAMPLE_D_O;
- case Intrinsic::amdgcn_image_sample_d_cl_o:
- return AMDGPUISD::IMAGE_SAMPLE_D_CL_O;
- case Intrinsic::amdgcn_image_sample_l_o:
- return AMDGPUISD::IMAGE_SAMPLE_L_O;
- case Intrinsic::amdgcn_image_sample_b_o:
- return AMDGPUISD::IMAGE_SAMPLE_B_O;
- case Intrinsic::amdgcn_image_sample_b_cl_o:
- return AMDGPUISD::IMAGE_SAMPLE_B_CL_O;
- case Intrinsic::amdgcn_image_sample_lz_o:
- return AMDGPUISD::IMAGE_SAMPLE_LZ_O;
- case Intrinsic::amdgcn_image_sample_cd_o:
- return AMDGPUISD::IMAGE_SAMPLE_CD_O;
- case Intrinsic::amdgcn_image_sample_cd_cl_o:
- return AMDGPUISD::IMAGE_SAMPLE_CD_CL_O;
-
- // Sample with comparison and offsets.
- case Intrinsic::amdgcn_image_sample_c_o:
- return AMDGPUISD::IMAGE_SAMPLE_C_O;
- case Intrinsic::amdgcn_image_sample_c_cl_o:
- return AMDGPUISD::IMAGE_SAMPLE_C_CL_O;
- case Intrinsic::amdgcn_image_sample_c_d_o:
- return AMDGPUISD::IMAGE_SAMPLE_C_D_O;
- case Intrinsic::amdgcn_image_sample_c_d_cl_o:
- return AMDGPUISD::IMAGE_SAMPLE_C_D_CL_O;
- case Intrinsic::amdgcn_image_sample_c_l_o:
- return AMDGPUISD::IMAGE_SAMPLE_C_L_O;
- case Intrinsic::amdgcn_image_sample_c_b_o:
- return AMDGPUISD::IMAGE_SAMPLE_C_B_O;
- case Intrinsic::amdgcn_image_sample_c_b_cl_o:
- return AMDGPUISD::IMAGE_SAMPLE_C_B_CL_O;
- case Intrinsic::amdgcn_image_sample_c_lz_o:
- return AMDGPUISD::IMAGE_SAMPLE_C_LZ_O;
- case Intrinsic::amdgcn_image_sample_c_cd_o:
- return AMDGPUISD::IMAGE_SAMPLE_C_CD_O;
- case Intrinsic::amdgcn_image_sample_c_cd_cl_o:
- return AMDGPUISD::IMAGE_SAMPLE_C_CD_CL_O;
-
- // Basic gather4.
- case Intrinsic::amdgcn_image_gather4:
- return AMDGPUISD::IMAGE_GATHER4;
- case Intrinsic::amdgcn_image_gather4_cl:
- return AMDGPUISD::IMAGE_GATHER4_CL;
- case Intrinsic::amdgcn_image_gather4_l:
- return AMDGPUISD::IMAGE_GATHER4_L;
- case Intrinsic::amdgcn_image_gather4_b:
- return AMDGPUISD::IMAGE_GATHER4_B;
- case Intrinsic::amdgcn_image_gather4_b_cl:
- return AMDGPUISD::IMAGE_GATHER4_B_CL;
- case Intrinsic::amdgcn_image_gather4_lz:
- return AMDGPUISD::IMAGE_GATHER4_LZ;
-
- // Gather4 with comparison.
- case Intrinsic::amdgcn_image_gather4_c:
- return AMDGPUISD::IMAGE_GATHER4_C;
- case Intrinsic::amdgcn_image_gather4_c_cl:
- return AMDGPUISD::IMAGE_GATHER4_C_CL;
- case Intrinsic::amdgcn_image_gather4_c_l:
- return AMDGPUISD::IMAGE_GATHER4_C_L;
- case Intrinsic::amdgcn_image_gather4_c_b:
- return AMDGPUISD::IMAGE_GATHER4_C_B;
- case Intrinsic::amdgcn_image_gather4_c_b_cl:
- return AMDGPUISD::IMAGE_GATHER4_C_B_CL;
- case Intrinsic::amdgcn_image_gather4_c_lz:
- return AMDGPUISD::IMAGE_GATHER4_C_LZ;
-
- // Gather4 with offsets.
- case Intrinsic::amdgcn_image_gather4_o:
- return AMDGPUISD::IMAGE_GATHER4_O;
- case Intrinsic::amdgcn_image_gather4_cl_o:
- return AMDGPUISD::IMAGE_GATHER4_CL_O;
- case Intrinsic::amdgcn_image_gather4_l_o:
- return AMDGPUISD::IMAGE_GATHER4_L_O;
- case Intrinsic::amdgcn_image_gather4_b_o:
- return AMDGPUISD::IMAGE_GATHER4_B_O;
- case Intrinsic::amdgcn_image_gather4_b_cl_o:
- return AMDGPUISD::IMAGE_GATHER4_B_CL_O;
- case Intrinsic::amdgcn_image_gather4_lz_o:
- return AMDGPUISD::IMAGE_GATHER4_LZ_O;
-
- // Gather4 with comparison and offsets.
- case Intrinsic::amdgcn_image_gather4_c_o:
- return AMDGPUISD::IMAGE_GATHER4_C_O;
- case Intrinsic::amdgcn_image_gather4_c_cl_o:
- return AMDGPUISD::IMAGE_GATHER4_C_CL_O;
- case Intrinsic::amdgcn_image_gather4_c_l_o:
- return AMDGPUISD::IMAGE_GATHER4_C_L_O;
- case Intrinsic::amdgcn_image_gather4_c_b_o:
- return AMDGPUISD::IMAGE_GATHER4_C_B_O;
- case Intrinsic::amdgcn_image_gather4_c_b_cl_o:
- return AMDGPUISD::IMAGE_GATHER4_C_B_CL_O;
- case Intrinsic::amdgcn_image_gather4_c_lz_o:
- return AMDGPUISD::IMAGE_GATHER4_C_LZ_O;
-
- default:
- break;
- }
- return 0;
-}
-
static SDValue adjustLoadValueTypeImpl(SDValue Result, EVT LoadVT,
const SDLoc &DL,
SelectionDAG &DAG, bool Unpacked) {
@@ -5081,16 +4924,6 @@ SDValue SITargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
return SDValue(DAG.getMachineNode(AMDGPU::WWM, DL, Src.getValueType(), Src),
0);
}
- case Intrinsic::amdgcn_image_getlod:
- case Intrinsic::amdgcn_image_getresinfo: {
- unsigned Idx = (IntrinsicID == Intrinsic::amdgcn_image_getresinfo) ? 3 : 4;
-
- // Replace dmask with everything disabled with undef.
- const ConstantSDNode *DMask = dyn_cast<ConstantSDNode>(Op.getOperand(Idx));
- if (!DMask || DMask->isNullValue())
- return DAG.getUNDEF(Op.getValueType());
- return SDValue();
- }
default:
if (const AMDGPU::ImageDimIntrinsicInfo *ImageDimIntr =
AMDGPU::getImageDimIntrinsicInfo(IntrinsicID))
@@ -5269,113 +5102,6 @@ SDValue SITargetLowering::LowerINTRINSIC_W_CHAIN(SDValue Op,
Op->getVTList(), Ops, VT, M->getMemOperand());
}
- case Intrinsic::amdgcn_image_load:
- case Intrinsic::amdgcn_image_load_mip: {
- EVT VT = Op.getValueType();
- if (Subtarget->hasUnpackedD16VMem() &&
- VT.isVector() && VT.getScalarSizeInBits() == 16) {
- return adjustLoadValueType(getImageOpcode(IntrID), cast<MemSDNode>(Op),
- DAG);
- }
-
- return SDValue();
- }
-
- // Basic sample.
- case Intrinsic::amdgcn_image_sample:
- case Intrinsic::amdgcn_image_sample_cl:
- case Intrinsic::amdgcn_image_sample_d:
- case Intrinsic::amdgcn_image_sample_d_cl:
- case Intrinsic::amdgcn_image_sample_l:
- case Intrinsic::amdgcn_image_sample_b:
- case Intrinsic::amdgcn_image_sample_b_cl:
- case Intrinsic::amdgcn_image_sample_lz:
- case Intrinsic::amdgcn_image_sample_cd:
- case Intrinsic::amdgcn_image_sample_cd_cl:
-
- // Sample with comparison.
- case Intrinsic::amdgcn_image_sample_c:
- case Intrinsic::amdgcn_image_sample_c_cl:
- case Intrinsic::amdgcn_image_sample_c_d:
- case Intrinsic::amdgcn_image_sample_c_d_cl:
- case Intrinsic::amdgcn_image_sample_c_l:
- case Intrinsic::amdgcn_image_sample_c_b:
- case Intrinsic::amdgcn_image_sample_c_b_cl:
- case Intrinsic::amdgcn_image_sample_c_lz:
- case Intrinsic::amdgcn_image_sample_c_cd:
- case Intrinsic::amdgcn_image_sample_c_cd_cl:
-
- // Sample with offsets.
- case Intrinsic::amdgcn_image_sample_o:
- case Intrinsic::amdgcn_image_sample_cl_o:
- case Intrinsic::amdgcn_image_sample_d_o:
- case Intrinsic::amdgcn_image_sample_d_cl_o:
- case Intrinsic::amdgcn_image_sample_l_o:
- case Intrinsic::amdgcn_image_sample_b_o:
- case Intrinsic::amdgcn_image_sample_b_cl_o:
- case Intrinsic::amdgcn_image_sample_lz_o:
- case Intrinsic::amdgcn_image_sample_cd_o:
- case Intrinsic::amdgcn_image_sample_cd_cl_o:
-
- // Sample with comparison and offsets.
- case Intrinsic::amdgcn_image_sample_c_o:
- case Intrinsic::amdgcn_image_sample_c_cl_o:
- case Intrinsic::amdgcn_image_sample_c_d_o:
- case Intrinsic::amdgcn_image_sample_c_d_cl_o:
- case Intrinsic::amdgcn_image_sample_c_l_o:
- case Intrinsic::amdgcn_image_sample_c_b_o:
- case Intrinsic::amdgcn_image_sample_c_b_cl_o:
- case Intrinsic::amdgcn_image_sample_c_lz_o:
- case Intrinsic::amdgcn_image_sample_c_cd_o:
- case Intrinsic::amdgcn_image_sample_c_cd_cl_o:
-
- // Basic gather4
- case Intrinsic::amdgcn_image_gather4:
- case Intrinsic::amdgcn_image_gather4_cl:
- case Intrinsic::amdgcn_image_gather4_l:
- case Intrinsic::amdgcn_image_gather4_b:
- case Intrinsic::amdgcn_image_gather4_b_cl:
- case Intrinsic::amdgcn_image_gather4_lz:
-
- // Gather4 with comparison
- case Intrinsic::amdgcn_image_gather4_c:
- case Intrinsic::amdgcn_image_gather4_c_cl:
- case Intrinsic::amdgcn_image_gather4_c_l:
- case Intrinsic::amdgcn_image_gather4_c_b:
- case Intrinsic::amdgcn_image_gather4_c_b_cl:
- case Intrinsic::amdgcn_image_gather4_c_lz:
-
- // Gather4 with offsets
- case Intrinsic::amdgcn_image_gather4_o:
- case Intrinsic::amdgcn_image_gather4_cl_o:
- case Intrinsic::amdgcn_image_gather4_l_o:
- case Intrinsic::amdgcn_image_gather4_b_o:
- case Intrinsic::amdgcn_image_gather4_b_cl_o:
- case Intrinsic::amdgcn_image_gather4_lz_o:
-
- // Gather4 with comparison and offsets
- case Intrinsic::amdgcn_image_gather4_c_o:
- case Intrinsic::amdgcn_image_gather4_c_cl_o:
- case Intrinsic::amdgcn_image_gather4_c_l_o:
- case Intrinsic::amdgcn_image_gather4_c_b_o:
- case Intrinsic::amdgcn_image_gather4_c_b_cl_o:
- case Intrinsic::amdgcn_image_gather4_c_lz_o: {
- // Replace dmask with everything disabled with undef.
- const ConstantSDNode *DMask = dyn_cast<ConstantSDNode>(Op.getOperand(5));
- if (!DMask || DMask->isNullValue()) {
- SDValue Undef = DAG.getUNDEF(Op.getValueType());
- return DAG.getMergeValues({ Undef, Op.getOperand(0) }, SDLoc(Op));
- }
-
- if (Subtarget->hasUnpackedD16VMem() &&
- Op.getValueType().isVector() &&
- Op.getValueType().getScalarSizeInBits() == 16) {
- return adjustLoadValueType(getImageOpcode(IntrID), cast<MemSDNode>(Op),
- DAG);
- }
-
- return SDValue();
- }
default:
if (const AMDGPU::ImageDimIntrinsicInfo *ImageDimIntr =
AMDGPU::getImageDimIntrinsicInfo(IntrID))
@@ -5599,35 +5325,6 @@ SDValue SITargetLowering::LowerINTRINSIC_VOID(SDValue Op,
return DAG.getMemIntrinsicNode(Opc, DL, Op->getVTList(), Ops,
M->getMemoryVT(), M->getMemOperand());
}
- case Intrinsic::amdgcn_image_store:
- case Intrinsic::amdgcn_image_store_mip: {
- SDValue VData = Op.getOperand(2);
- EVT VT = VData.getValueType();
- if (Subtarget->hasUnpackedD16VMem() &&
- VT.isVector() && VT.getScalarSizeInBits() == 16) {
- SDValue Chain = Op.getOperand(0);
-
- VData = handleD16VData(VData, DAG);
- SDValue Ops[] = {
- Chain, // Chain
- VData, // vdata
- Op.getOperand(3), // vaddr
- Op.getOperand(4), // rsrc
- Op.getOperand(5), // dmask
- Op.getOperand(6), // glc
- Op.getOperand(7), // slc
- Op.getOperand(8), // lwe
- Op.getOperand(9) // da
- };
- unsigned Opc = (IntrinsicID == Intrinsic::amdgcn_image_store) ?
- AMDGPUISD::IMAGE_STORE : AMDGPUISD::IMAGE_STORE_MIP;
- MemSDNode *M = cast<MemSDNode>(Op);
- return DAG.getMemIntrinsicNode(Opc, DL, Op->getVTList(), Ops,
- M->getMemoryVT(), M->getMemOperand());
- }
-
- return SDValue();
- }
default: {
if (const AMDGPU::ImageDimIntrinsicInfo *ImageDimIntr =
AMDGPU::getImageDimIntrinsicInfo(IntrinsicID))
OpenPOWER on IntegriCloud