Should be RNDZ. The llvm.trunc is same as libm trunc(), which means rounding toward zero.
> -----Original Message----- > From: Beignet [mailto:beignet-boun...@lists.freedesktop.org] On Behalf Of > xionghu....@intel.com > Sent: Thursday, January 15, 2015 7:05 PM > To: beignet@lists.freedesktop.org > Cc: Luo, Xionghu > Subject: [Beignet] [PATCH v2] fix llvm.trunc.float instruction bug. > > From: Luo <xionghu....@intel.com> > > float to float trunc should use RNDU IR instruction. > > v2: fix typo. should be RNDD instead of RNDU. > Signed-off-by: Luo <xionghu....@intel.com> > --- > backend/src/llvm/llvm_gen_backend.cpp | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/backend/src/llvm/llvm_gen_backend.cpp > b/backend/src/llvm/llvm_gen_backend.cpp > index 53dec0a..ee5b6a3 100644 > --- a/backend/src/llvm/llvm_gen_backend.cpp > +++ b/backend/src/llvm/llvm_gen_backend.cpp > @@ -3310,11 +3310,9 @@ error: > ir::Type srcType = getType(ctx, llvmSrcType); > GBE_ASSERT(srcType == dstType); > > - const ir::Register tmp = ctx.reg(getFamily(ir::TYPE_S32)); > const ir::Register dst = this->getRegister(&I); > const ir::Register src = this->getRegister(I.getOperand(0)); > - ctx.CVT(ir::TYPE_S32, srcType, tmp, src); > - ctx.CVT(dstType, ir::TYPE_S32, dst, tmp); > + ctx.RNDD(dstType, dst, src); > } > break; > case Intrinsic::copysign: > -- > 1.9.1 > > _______________________________________________ > Beignet mailing list > Beignet@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet