diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-02-16 02:01:13 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-02-16 02:01:13 +0000 |
commit | d2c8a337aa58d449bb5513245ab017f93e51b404 (patch) | |
tree | 33b8979153b7d8ac88024fb34834826f3b99dccc /llvm/lib | |
parent | 1473e5429e8e374cf31219684a914763045ecf93 (diff) | |
download | bcm5719-llvm-d2c8a337aa58d449bb5513245ab017f93e51b404.tar.gz bcm5719-llvm-d2c8a337aa58d449bb5513245ab017f93e51b404.zip |
AMDGPU: Remove SI_fs_constant and SI_fs_interp intrinsics
Update test uses with expansion in terms of new intrinsics.
llvm-svn: 295269
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp | 23 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 25 | ||||
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIIntrinsics.td | 5 |
3 files changed, 3 insertions, 50 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp index f3c94182730..6d2e2f0bbbb 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp @@ -255,16 +255,8 @@ int AMDGPUTTIImpl::getVectorInstrCost(unsigned Opcode, Type *ValTy, } } -static bool isIntrinsicSourceOfDivergence(const TargetIntrinsicInfo *TII, - const IntrinsicInst *I) { +static bool isIntrinsicSourceOfDivergence(const IntrinsicInst *I) { switch (I->getIntrinsicID()) { - default: - return false; - case Intrinsic::not_intrinsic: - // This means we have an intrinsic that isn't defined in - // IntrinsicsAMDGPU.td - break; - case Intrinsic::amdgcn_workitem_id_x: case Intrinsic::amdgcn_workitem_id_y: case Intrinsic::amdgcn_workitem_id_z: @@ -305,15 +297,8 @@ static bool isIntrinsicSourceOfDivergence(const TargetIntrinsicInfo *TII, case Intrinsic::amdgcn_ps_live: case Intrinsic::amdgcn_ds_swizzle: return true; - } - - StringRef Name = I->getCalledFunction()->getName(); - switch (TII->lookupName((const char *)Name.bytes_begin(), Name.size())) { default: return false; - case AMDGPUIntrinsic::SI_fs_interp: - case AMDGPUIntrinsic::SI_fs_constant: - return true; } } @@ -357,10 +342,8 @@ bool AMDGPUTTIImpl::isSourceOfDivergence(const Value *V) const { if (isa<AtomicRMWInst>(V) || isa<AtomicCmpXchgInst>(V)) return true; - if (const IntrinsicInst *Intrinsic = dyn_cast<IntrinsicInst>(V)) { - const TargetMachine &TM = getTLI()->getTargetMachine(); - return isIntrinsicSourceOfDivergence(TM.getIntrinsicInfo(), Intrinsic); - } + if (const IntrinsicInst *Intrinsic = dyn_cast<IntrinsicInst>(V)) + return isIntrinsicSourceOfDivergence(Intrinsic); // Assume all function calls are a source of divergence. if (isa<CallInst>(V) || isa<InvokeInst>(V)) diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index 491880794f5..e14cf35a49a 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -2684,35 +2684,10 @@ SDValue SITargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op, Op.getOperand(1), Op.getOperand(2), Op.getOperand(3)); - - case AMDGPUIntrinsic::SI_fs_constant: { - SDValue M0 = copyToM0(DAG, DAG.getEntryNode(), DL, Op.getOperand(3)); - SDValue Glue = M0.getValue(1); - return DAG.getNode(AMDGPUISD::INTERP_MOV, DL, MVT::f32, - DAG.getConstant(2, DL, MVT::i32), // P0 - Op.getOperand(1), Op.getOperand(2), Glue); - } case AMDGPUIntrinsic::SI_packf16: if (Op.getOperand(1).isUndef() && Op.getOperand(2).isUndef()) return DAG.getUNDEF(MVT::i32); return Op; - case AMDGPUIntrinsic::SI_fs_interp: { - SDValue IJ = Op.getOperand(4); - SDValue I = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, MVT::i32, IJ, - DAG.getConstant(0, DL, MVT::i32)); - SDValue J = DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, MVT::i32, IJ, - DAG.getConstant(1, DL, MVT::i32)); - I = DAG.getNode(ISD::BITCAST, DL, MVT::f32, I); - J = DAG.getNode(ISD::BITCAST, DL, MVT::f32, J); - SDValue M0 = copyToM0(DAG, DAG.getEntryNode(), DL, Op.getOperand(3)); - SDValue Glue = M0.getValue(1); - SDValue P1 = DAG.getNode(AMDGPUISD::INTERP_P1, DL, - DAG.getVTList(MVT::f32, MVT::Glue), - I, Op.getOperand(1), Op.getOperand(2), Glue); - Glue = SDValue(P1.getNode(), 1); - return DAG.getNode(AMDGPUISD::INTERP_P2, DL, MVT::f32, P1, J, - Op.getOperand(1), Op.getOperand(2), Glue); - } case Intrinsic::amdgcn_interp_mov: { SDValue M0 = copyToM0(DAG, DAG.getEntryNode(), DL, Op.getOperand(4)); SDValue Glue = M0.getValue(1); diff --git a/llvm/lib/Target/AMDGPU/SIIntrinsics.td b/llvm/lib/Target/AMDGPU/SIIntrinsics.td index 5da37546871..f98feeca430 100644 --- a/llvm/lib/Target/AMDGPU/SIIntrinsics.td +++ b/llvm/lib/Target/AMDGPU/SIIntrinsics.td @@ -183,11 +183,6 @@ let TargetPrefix = "SI", isTarget = 1 in { def int_SI_image_load : Image; def int_SI_image_load_mip : Image; def int_SI_getresinfo : Image; - - /* Interpolation Intrinsics */ - - def int_SI_fs_constant : Intrinsic <[llvm_float_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>; - def int_SI_fs_interp : Intrinsic <[llvm_float_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_v2i32_ty], [IntrNoMem]>; } // End TargetPrefix = "SI", isTarget = 1 let TargetPrefix = "amdgcn", isTarget = 1 in { |