Patchset (1/7) Reviewed-by: Bruce Cherniak <bruce.chern...@intel.com>
> On May 23, 2018, at 2:58 PM, Alok Hota <alok.h...@intel.com> wrote: > > SCATTERPS previously assumed it was being used with an existing basic > block > --- > .../drivers/swr/rasterizer/jitter/builder_mem.cpp | 29 +++++++++++++++------- > 1 file changed, 20 insertions(+), 9 deletions(-) > > diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp > b/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp > index 6e17888..77c2095 100644 > --- a/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp > +++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp > @@ -617,17 +617,28 @@ namespace SwrJit > > Value* pIsUndef = ICMP_EQ(pIndex, C(32)); > > - // Split current block > - BasicBlock* pPostLoop = > pCurBB->splitBasicBlock(cast<Instruction>(pIsUndef)->getNextNode()); > + // Split current block or create new one if building inline > + BasicBlock* pPostLoop; > + if (pCurBB->getTerminator()) > + { > + pPostLoop = > pCurBB->splitBasicBlock(cast<Instruction>(pIsUndef)->getNextNode()); > > - // Remove unconditional jump created by splitBasicBlock > - pCurBB->getTerminator()->eraseFromParent(); > + // Remove unconditional jump created by splitBasicBlock > + pCurBB->getTerminator()->eraseFromParent(); > > - // Add terminator to end of original block > - IRB()->SetInsertPoint(pCurBB); > + // Add terminator to end of original block > + IRB()->SetInsertPoint(pCurBB); > > - // Add conditional branch > - COND_BR(pIsUndef, pPostLoop, pLoop); > + // Add conditional branch > + COND_BR(pIsUndef, pPostLoop, pLoop); > + } > + else > + { > + pPostLoop = BasicBlock::Create(mpJitMgr->mContext, > "PostScatter_Loop", pFunc); > + > + // Add conditional branch > + COND_BR(pIsUndef, pPostLoop, pLoop); > + } > > // Add loop basic block contents > IRB()->SetInsertPoint(pLoop); > @@ -642,7 +653,7 @@ namespace SwrJit > Value* pOffsetElem = LOADV(pOffsetsArrayPtr, { pIndexPhi }); > > // GEP to this offset in dst > - Value* pCurDst = GEP(pDst, pOffsetElem); > + Value* pCurDst = GEP(pDst, pOffsetElem, mInt8PtrTy); > pCurDst = POINTER_CAST(pCurDst, PointerType::get(pSrcTy, 0)); > STORE(pSrcElem, pCurDst); > > -- > 2.7.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev