[Mesa-dev] [PATCH 1/4] R600: Add helper function for setting instruction modifiers

Vincent Lejeune vljn at ovi.com
Tue Nov 13 07:46:50 PST 2012


Looks good to me.
Reviewed-by: Vincent Lejeune <vljn at ovi.com>


----- Mail original -----
> De : Tom Stellard <tom at stellard.net>
> À : mesa-dev at lists.freedesktop.org
> Cc : Tom Stellard <thomas.stellard at amd.com>
> Envoyé le : Vendredi 9 novembre 2012 21h47
> Objet : [Mesa-dev] [PATCH 1/4] R600: Add helper function for setting instruction modifiers
> 
> From: Tom Stellard <thomas.stellard at amd.com>
> 
> ---
> lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp | 11 +++--------
> lib/Target/AMDGPU/R600InstrInfo.cpp           | 11 ++++++++++-
> lib/Target/AMDGPU/R600InstrInfo.h             |  3 +++
> 3 files changed, 16 insertions(+), 9 deletions(-)
> 
> diff --git a/lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp 
> b/lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp
> index f9fd65d..e040e4c 100644
> --- a/lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp
> +++ b/lib/Target/AMDGPU/R600ExpandSpecialInstrs.cpp
> @@ -192,12 +192,9 @@ bool 
> R600ExpandSpecialInstrsPass::runOnMachineFunction(MachineFunction &MF) {
>                                              AMDGPU::ZERO);             // src1
>          TII->addFlag(PredSet, 0, MO_FLAG_MASK);
>          if (Flags & MO_FLAG_PUSH) {
> -          PredSet->getOperand(TII->getOperandIdx(
> -                  *PredSet, R600Operands::UPDATE_EXEC_MASK)).setImm(1);
> +          TII->setImmOperand(PredSet, R600Operands::UPDATE_EXEC_MASK, 1);
>          } else {
> -          PredSet->getOperand(
> -            TII->getOperandIdx(
> -                  *PredSet, R600Operands::UPDATE_PREDICATE)).setImm(1);
> +          TII->setImmOperand(PredSet, R600Operands::UPDATE_PREDICATE, 1);
>          }
>          MI.eraseFromParent();
>          continue;
> @@ -209,9 +206,7 @@ bool 
> R600ExpandSpecialInstrsPass::runOnMachineFunction(MachineFunction &MF) {
>                                            AMDGPU::ZERO,
>                                            AMDGPU::ZERO);
>          TII->addFlag(PredSet, 0, MO_FLAG_MASK);
> -        PredSet->getOperand(
> -          TII->getOperandIdx(
> -              *PredSet, R600Operands::UPDATE_EXEC_MASK)).setImm(1);
> +        TII->setImmOperand(PredSet, R600Operands::UPDATE_EXEC_MASK, 1);
> 
>          BuildMI(MBB, I, MBB.findDebugLoc(I),
>                  TII->get(AMDGPU::BREAK_LOGICALNZ_i32))
> diff --git a/lib/Target/AMDGPU/R600InstrInfo.cpp 
> b/lib/Target/AMDGPU/R600InstrInfo.cpp
> index 49169d7..7c5b19e 100644
> --- a/lib/Target/AMDGPU/R600InstrInfo.cpp
> +++ b/lib/Target/AMDGPU/R600InstrInfo.cpp
> @@ -528,7 +528,7 @@ MachineInstr *R600InstrInfo::buildMovImm(MachineBasicBlock 
> &BB,
> {
>    MachineInstr *MovImm = buildDefaultInstruction(BB, I, AMDGPU::MOV, DstReg,
>                                                    AMDGPU::ALU_LITERAL_X);
> -  MovImm->getOperand(getOperandIdx(*MovImm, R600Operands::IMM)).setImm(Imm);
> +  setImmOperand(MovImm, R600Operands::IMM, Imm);
>    return MovImm;
> }
> 
> @@ -573,6 +573,15 @@ int R600InstrInfo::getOperandIdx(const MachineInstr 
> &MI,
>    return OpTable[OpTableIdx][Op];
> }
> 
> +void R600InstrInfo::setImmOperand(MachineInstr *MI, R600Operands::Ops Op,
> +                                  int64_t Imm) const
> +{
> +  int Idx = getOperandIdx(*MI, Op);
> +  assert(Idx != -1 && "Operand not supported for this 
> instruction.");
> +  assert(MI->getOperand(Idx).isImm());
> +  MI->getOperand(Idx).setImm(Imm);
> +}
> +
> //===----------------------------------------------------------------------===//
> // Instruction flag getters/setters
> //===----------------------------------------------------------------------===//
> diff --git a/lib/Target/AMDGPU/R600InstrInfo.h 
> b/lib/Target/AMDGPU/R600InstrInfo.h
> index 3cf3cc1..cec1c3b 100644
> --- a/lib/Target/AMDGPU/R600InstrInfo.h
> +++ b/lib/Target/AMDGPU/R600InstrInfo.h
> @@ -130,6 +130,9 @@ namespace llvm {
>    /// if the Instruction does not contain the specified Op.
>    int getOperandIdx(const MachineInstr &MI, R600Operands::Ops Op) const;
> 
> +  /// setImmOperand - Helper function for setting instruction flag values.
> +  void setImmOperand(MachineInstr *MI, R600Operands::Ops Op, int64_t Imm) 
> const;
> +
>    ///hasFlagOperand - Returns true if this instruction has an operand for
>    /// storing target flags.
>    bool hasFlagOperand(const MachineInstr &MI) const;
> -- 
> 1.7.11.4
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


More information about the mesa-dev mailing list