[Beignet] [PATCH 2/2] do not care dst for printf

Yan Wang yan.wang at linux.intel.com
Wed Nov 30 06:22:13 UTC 2016


LGTM.
Thanks.

Yan Wang

On Mon, 2016-11-21 at 18:16 +0800, Guo, Yejun wrote:
> acutally, the dst of printf means nothing, don't need to touch it.
> 
> Signed-off-by: Guo, Yejun <yejun.guo at intel.com>
> ---
>  backend/src/backend/gen_context.cpp        | 14 ++------------
>  backend/src/backend/gen_insn_selection.cpp | 20 +++++++++-----------
>  2 files changed, 11 insertions(+), 23 deletions(-)
> 
> diff --git a/backend/src/backend/gen_context.cpp
> b/backend/src/backend/gen_context.cpp
> index 186c8d9..a73ccb6 100644
> --- a/backend/src/backend/gen_context.cpp
> +++ b/backend/src/backend/gen_context.cpp
> @@ -3469,9 +3469,8 @@ namespace gbe
>    }
>  
>    void GenContext::emitPrintfInstruction(const SelectionInstruction
> &insn) {
> -    const GenRegister dst = ra->genReg(insn.dst(0));
> -    const GenRegister tmp0 = ra->genReg(insn.dst(1));
> -    const GenRegister tmp1 = ra->genReg(insn.dst(2));
> +    const GenRegister tmp0 = ra->genReg(insn.dst(0));
> +    const GenRegister tmp1 = ra->genReg(insn.dst(1));
>      GenRegister src;
>      uint32_t srcNum = insn.srcNum;
>  
> @@ -3518,15 +3517,6 @@ namespace gbe
>          emitPrintfLongInstruction(addr, data, src,
> insn.extra.printfBTI);
>        }
>      }
> -
> -    if (dst.hstride == GEN_HORIZONTAL_STRIDE_0) {
> -      p->push();
> -      p->curr.execWidth = 1;
> -    }
> -    p->MOV(dst, GenRegister::immd(0));
> -    if (dst.hstride == GEN_HORIZONTAL_STRIDE_0) {
> -      p->pop();
> -    }
>    }
>  
>    void GenContext::setA0Content(uint16_t new_a0[16], uint16_t
> max_offset, int sz) {
> diff --git a/backend/src/backend/gen_insn_selection.cpp
> b/backend/src/backend/gen_insn_selection.cpp
> index 1808c7b..88fe1a6 100644
> --- a/backend/src/backend/gen_insn_selection.cpp
> +++ b/backend/src/backend/gen_insn_selection.cpp
> @@ -705,7 +705,7 @@ namespace gbe
>      /*! Store the profiling info */
>      void STORE_PROFILING(uint32_t profilingType, uint32_t bti,
> GenRegister tmp0, GenRegister tmp1, GenRegister ts[5], int tsNum);
>      /*! Printf */
> -    void PRINTF(GenRegister dst, uint8_t bti, GenRegister tmp0,
> GenRegister tmp1, GenRegister src[8],
> +    void PRINTF(uint8_t bti, GenRegister tmp0, GenRegister tmp1,
> GenRegister src[8],
>                  int srcNum, uint16_t num, bool isContinue, uint32_t
> totalSize);
>      /*! Multiply 64-bit integers */
>      void I64MUL(Reg dst, Reg src0, Reg src1, GenRegister *tmp, bool
> native_long);
> @@ -2129,20 +2129,19 @@ namespace gbe
>      }
>    }
>  
> -  void Selection::Opaque::PRINTF(GenRegister dst, uint8_t bti,
> GenRegister tmp0, GenRegister tmp1,
> +  void Selection::Opaque::PRINTF(uint8_t bti, GenRegister tmp0,
> GenRegister tmp1,
>                 GenRegister src[8], int srcNum, uint16_t num, bool
> isContinue, uint32_t totalSize) {
> -    SelectionInstruction *insn = this->appendInsn(SEL_OP_PRINTF, 3,
> srcNum);
> +    SelectionInstruction *insn = this->appendInsn(SEL_OP_PRINTF, 2,
> srcNum);
>      SelectionVector *vector = this->appendVector();
>  
>      for (int i = 0; i < srcNum; i++)
>        insn->src(i) = src[i];
>  
> -    insn->dst(0) = dst;
> -    insn->dst(1) = tmp0;
> -    insn->dst(2) = tmp1;
> +    insn->dst(0) = tmp0;
> +    insn->dst(1) = tmp1;
>  
>      vector->regNum = 2;
> -    vector->reg = &insn->dst(1);
> +    vector->reg = &insn->dst(0);
>      vector->offsetID = 0;
>      vector->isSrc = 0;
>  
> @@ -7041,8 +7040,7 @@ extern bool OCL_DEBUGINFO; // first defined by
> calling BVAR in program.cpp
>        uint8_t BTI = insn.getBti();
>        GenRegister tmp0, tmp1;
>        uint32_t srcNum = insn.getSrcNum();
> -      GenRegister dst = sel.selReg(insn.getDst(0), TYPE_S32);
> -      //GBE_ASSERT(srcNum);
> +
>        uint32_t i = 0;
>        uint32_t totalSize = 0;
>        bool isContinue = false;
> @@ -7063,14 +7061,14 @@ extern bool OCL_DEBUGINFO; // first defined
> by calling BVAR in program.cpp
>        i = 0;
>        GenRegister regs[8];
>        if (srcNum == 0) {
> -          sel.PRINTF(dst, BTI, tmp0, tmp1, regs, srcNum, num,
> isContinue, totalSize);
> +          sel.PRINTF(BTI, tmp0, tmp1, regs, srcNum, num, isContinue,
> totalSize);
>        } else {
>          do {
>            uint32_t s = srcNum < 8 ? srcNum : 8;
>            for (uint32_t j = 0; j < s; j++) {
>              regs[j] = sel.selReg(insn.getSrc(i + j), insn.getType(i
> + j));
>            }
> -          sel.PRINTF(dst, BTI, tmp0, tmp1, regs, s, num, isContinue,
> totalSize);
> +          sel.PRINTF(BTI, tmp0, tmp1, regs, s, num, isContinue,
> totalSize);
>  
>            if (srcNum > 8) {
>              srcNum -= 8;


More information about the Beignet mailing list