[PATCH] R600/SI: Update VOP3b to not include obsolete operands

Tom Stellard tom at stellard.net
Tue Sep 30 07:10:00 PDT 2014


On Tue, Sep 30, 2014 at 02:50:01AM +0000, Matt Arsenault wrote:
> abs / neg are now part of the srcN_modifiers operands
> 
> http://reviews.llvm.org/D5534

LGTM.

> 
> Files:
>   lib/Target/R600/AMDGPUISelDAGToDAG.cpp
>   lib/Target/R600/SIInstrInfo.cpp
>   lib/Target/R600/SIInstrInfo.td

> Index: lib/Target/R600/AMDGPUISelDAGToDAG.cpp
> ===================================================================
> --- lib/Target/R600/AMDGPUISelDAGToDAG.cpp
> +++ lib/Target/R600/AMDGPUISelDAGToDAG.cpp
> @@ -736,15 +736,16 @@
>      = (VT == MVT::f64) ? AMDGPU::V_DIV_SCALE_F64 : AMDGPU::V_DIV_SCALE_F32;
>  
>    const SDValue Zero = CurDAG->getTargetConstant(0, MVT::i32);
> -
> +  const SDValue False = CurDAG->getTargetConstant(0, MVT::i1);
>    SDValue Ops[] = {
> -    N->getOperand(0),
> -    N->getOperand(1),
> -    N->getOperand(2),
> -    Zero,
> -    Zero,
> -    Zero,
> -    Zero
> +    Zero,             // src0_modifiers
> +    N->getOperand(0), // src0
> +    Zero,             // src1_modifiers
> +    N->getOperand(1), // src1
> +    Zero,             // src2_modifiers
> +    N->getOperand(2), // src2
> +    False,            // clamp
> +    Zero              // omod
>    };
>  
>    return CurDAG->SelectNodeTo(N, Opc, VT, MVT::i1, Ops);
> Index: lib/Target/R600/SIInstrInfo.cpp
> ===================================================================
> --- lib/Target/R600/SIInstrInfo.cpp
> +++ lib/Target/R600/SIInstrInfo.cpp
> @@ -711,8 +711,6 @@
>      }
>  
>      // XXX: Commute VOP3 instructions with abs and neg set .
> -    const MachineOperand *Abs = getNamedOperand(*MI, AMDGPU::OpName::abs);
> -    const MachineOperand *Neg = getNamedOperand(*MI, AMDGPU::OpName::neg);
>      const MachineOperand *Src0Mods = getNamedOperand(*MI,
>                                            AMDGPU::OpName::src0_modifiers);
>      const MachineOperand *Src1Mods = getNamedOperand(*MI,
> @@ -720,8 +718,8 @@
>      const MachineOperand *Src2Mods = getNamedOperand(*MI,
>                                            AMDGPU::OpName::src2_modifiers);
>  
> -    if ((Abs && Abs->getImm()) || (Neg && Neg->getImm()) ||
> -        (Src0Mods && Src0Mods->getImm()) || (Src1Mods && Src1Mods->getImm()) ||
> +    if ((Src0Mods && Src0Mods->getImm()) ||
> +        (Src1Mods && Src1Mods->getImm()) ||
>          (Src2Mods && Src2Mods->getImm()))
>        return nullptr;
>  
> Index: lib/Target/R600/SIInstrInfo.td
> ===================================================================
> --- lib/Target/R600/SIInstrInfo.td
> +++ lib/Target/R600/SIInstrInfo.td
> @@ -792,9 +792,11 @@
>                      string opName, list<dag> pattern> :
>    VOP3b_2_m <
>    op, (outs vrc:$dst0, SReg_64:$dst1),
> -  (ins arc:$src0, arc:$src1, arc:$src2,
> -   InstFlag:$abs, InstFlag:$clamp, InstFlag:$omod, InstFlag:$neg),
> -  opName#" $dst0, $dst1, $src0, $src1, $src2, $abs, $clamp, $omod, $neg", pattern,
> +      (ins InputModsNoDefault:$src0_modifiers, arc:$src0,
> +           InputModsNoDefault:$src1_modifiers, arc:$src1,
> +           InputModsNoDefault:$src2_modifiers, arc:$src2,
> +           i32imm:$clamp, i32imm:$omod),
> +  opName#" $dst0, $dst1, $src0_modifiers, $src1_modifiers, $src2_modifiers, $clamp, $omod", pattern,
>    opName, opName, 1, 1
>  >;
>  

> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list