diff options
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td | 5 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 9 | ||||
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIInstructions.td | 5 | 
5 files changed, 21 insertions, 2 deletions
| diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp index 7bf414facda..8435551c3c5 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp @@ -2699,7 +2699,9 @@ const char* AMDGPUTargetLowering::getTargetNodeName(unsigned Opcode) const {    NODE_NAME_CASE(TRIG_PREOP)    NODE_NAME_CASE(RCP)    NODE_NAME_CASE(RSQ) +  NODE_NAME_CASE(RCP_LEGACY)    NODE_NAME_CASE(RSQ_LEGACY) +  NODE_NAME_CASE(FMUL_LEGACY)    NODE_NAME_CASE(RSQ_CLAMP)    NODE_NAME_CASE(LDEXP)    NODE_NAME_CASE(FP_CLASS) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h index e79bb6724b7..f1fde8069a1 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h +++ b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.h @@ -249,7 +249,9 @@ enum NodeType : unsigned {    //            For f64, max error 2^29 ULP, handles denormals.    RCP,    RSQ, +  RCP_LEGACY,    RSQ_LEGACY, +  FMUL_LEGACY,    RSQ_CLAMP,    LDEXP,    FP_CLASS, diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td b/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td index 85675c800cf..f16ea8de429 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td +++ b/llvm/lib/Target/AMDGPU/AMDGPUInstrInfo.td @@ -67,6 +67,7 @@ def AMDGPUrcp : SDNode<"AMDGPUISD::RCP", SDTFPUnaryOp>;  def AMDGPUrsq : SDNode<"AMDGPUISD::RSQ", SDTFPUnaryOp>;  // out = 1.0 / sqrt(a) +def AMDGPUrcp_legacy : SDNode<"AMDGPUISD::RCP_LEGACY", SDTFPUnaryOp>;  def AMDGPUrsq_legacy : SDNode<"AMDGPUISD::RSQ_LEGACY", SDTFPUnaryOp>;  // out = 1.0 / sqrt(a) result clamped to +/- max_float. @@ -84,6 +85,10 @@ def AMDGPUfmax_legacy : SDNode<"AMDGPUISD::FMAX_LEGACY", SDTFPBinOp,    []  >; +def AMDGPUfmul_legacy : SDNode<"AMDGPUISD::FMUL_LEGACY", SDTFPBinOp, +  [SDNPCommutative, SDNPAssociative] +>; +  def AMDGPUclamp : SDNode<"AMDGPUISD::CLAMP", SDTFPTernaryOp, []>;  // out = max(a, b) a and b are signed ints diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index 323525f2151..6746c8a97f1 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -1996,6 +1996,11 @@ SDValue SITargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,      return DAG.getNode(AMDGPUISD::RSQ_LEGACY, DL, VT, Op.getOperand(1));    } +  case Intrinsic::amdgcn_rcp_legacy: { +    if (Subtarget->getGeneration() >= SISubtarget::VOLCANIC_ISLANDS) +      return emitRemovedIntrinsicError(DAG, DL, VT); +    return DAG.getNode(AMDGPUISD::RCP_LEGACY, DL, VT, Op.getOperand(1)); +  }    case Intrinsic::amdgcn_rsq_clamp: {      if (Subtarget->getGeneration() < SISubtarget::VOLCANIC_ISLANDS)        return DAG.getNode(AMDGPUISD::RSQ_CLAMP, DL, VT, Op.getOperand(1)); @@ -2208,6 +2213,9 @@ SDValue SITargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,      return DAG.getNode(AMDGPUISD::DIV_SCALE, DL, Op->getVTList(), Src0,                         Denominator, Numerator);    } +  case Intrinsic::amdgcn_fmul_legacy: +    return DAG.getNode(AMDGPUISD::FMUL_LEGACY, DL, VT, +                       Op.getOperand(1), Op.getOperand(2));    case Intrinsic::amdgcn_sffbh:    case AMDGPUIntrinsic::AMDGPU_flbit_i32: // Legacy name.      return DAG.getNode(AMDGPUISD::FFBH_I32, DL, VT, Op.getOperand(1)); @@ -3356,6 +3364,7 @@ SDValue SITargetLowering::PerformDAGCombine(SDNode *N,    case AMDGPUISD::FRACT:    case AMDGPUISD::RCP:    case AMDGPUISD::RSQ: +  case AMDGPUISD::RCP_LEGACY:    case AMDGPUISD::RSQ_LEGACY:    case AMDGPUISD::RSQ_CLAMP:    case AMDGPUISD::LDEXP: { diff --git a/llvm/lib/Target/AMDGPU/SIInstructions.td b/llvm/lib/Target/AMDGPU/SIInstructions.td index 944248a7fdd..61460057803 100644 --- a/llvm/lib/Target/AMDGPU/SIInstructions.td +++ b/llvm/lib/Target/AMDGPU/SIInstructions.td @@ -1402,7 +1402,8 @@ defm V_MOV_FED_B32 : VOP1InstSI <vop1<0x9>, "v_mov_fed_b32", VOP_I32_I32>;  defm V_LOG_CLAMP_F32 : VOP1InstSI <vop1<0x26>, "v_log_clamp_f32",    VOP_F32_F32, int_amdgcn_log_clamp>;  defm V_RCP_CLAMP_F32 : VOP1InstSI <vop1<0x28>, "v_rcp_clamp_f32", VOP_F32_F32>; -defm V_RCP_LEGACY_F32 : VOP1InstSI <vop1<0x29>, "v_rcp_legacy_f32", VOP_F32_F32>; +defm V_RCP_LEGACY_F32 : VOP1InstSI <vop1<0x29>, "v_rcp_legacy_f32", +  VOP_F32_F32, AMDGPUrcp_legacy>;  defm V_RSQ_CLAMP_F32 : VOP1InstSI <vop1<0x2c>, "v_rsq_clamp_f32",    VOP_F32_F32, AMDGPUrsq_clamp  >; @@ -1496,7 +1497,7 @@ defm V_SUBREV_F32 : VOP2Inst <vop2<0x5, 0x3>, "v_subrev_f32",  let isCommutable = 1 in {  defm V_MUL_LEGACY_F32 : VOP2Inst <vop2<0x7, 0x4>, "v_mul_legacy_f32", -  VOP_F32_F32_F32 +  VOP_F32_F32_F32, AMDGPUfmul_legacy  >;  defm V_MUL_F32 : VOP2Inst <vop2<0x8, 0x5>, "v_mul_f32", | 

