[Mesa-dev] [PATCH 2/7] gk110/ir: add emission for OP_MADSP

Ilia Mirkin imirkin at alum.mit.edu
Wed Apr 20 20:29:55 UTC 2016


Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

On Wed, Apr 20, 2016 at 4:25 PM, Samuel Pitoiset
<samuel.pitoiset at gmail.com> wrote:
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  .../drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp | 23 ++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
>
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
> index c8cb266..16d9421 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
> @@ -95,6 +95,7 @@ private:
>     void emitISAD(const Instruction *);
>     void emitFMAD(const Instruction *);
>     void emitDMAD(const Instruction *);
> +   void emitMADSP(const Instruction *i);
>
>     void emitNOT(const Instruction *);
>     void emitLogicOp(const Instruction *, uint8_t subOp);
> @@ -517,6 +518,25 @@ CodeEmitterGK110::emitDMAD(const Instruction *i)
>  }
>
>  void
> +CodeEmitterGK110::emitMADSP(const Instruction *i)
> +{
> +   emitForm_21(i, 0x140, 0xa40);
> +
> +   if (i->subOp == NV50_IR_SUBOP_MADSP_SD) {
> +      code[1] |= 0x00c00000;
> +   } else {
> +      code[1] |= (i->subOp & 0x00f) << 19; // imadp1
> +      code[1] |= (i->subOp & 0x0f0) << 20; // imadp2
> +      code[1] |= (i->subOp & 0x100) << 11; // imadp3
> +      code[1] |= (i->subOp & 0x200) << 15; // imadp3
> +      code[1] |= (i->subOp & 0xc00) << 12; // imadp3
> +   }
> +
> +   if (i->flagsDef >= 0)
> +      code[1] |= 1 << 18;
> +}
> +
> +void
>  CodeEmitterGK110::emitFMUL(const Instruction *i)
>  {
>     bool neg = (i->src(0).mod ^ i->src(1).mod).neg();
> @@ -2001,6 +2021,9 @@ CodeEmitterGK110::emitInstruction(Instruction *insn)
>        else
>           emitIMAD(insn);
>        break;
> +   case OP_MADSP:
> +      emitMADSP(insn);
> +      break;
>     case OP_SAD:
>        emitISAD(insn);
>        break;
> --
> 2.8.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list