On Mon, Jun 6, 2016 at 3:25 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > Like floats, we should use the round toward 0 mode instead of the > nearest one (which is the default) for doubles to integers. > > This fixes all arb_gpu_shader_fp64 piglits which convert doubles to > integers (16 tests). > > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > Cc: "11.2 12.0" <mesa-sta...@lists.freedesktop.org> > --- > src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > index cd98f70..fcd4b22 100644 > --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp > @@ -3598,7 +3598,11 @@ Converter::handleInstruction(const struct > tgsi_full_instruction *insn) > src0 = fetchSrc(0, pos); > src1 = fetchSrc(0, pos + 1); > mkOp2(OP_MERGE, TYPE_U64, dreg, src0, src1); > - mkCvt(OP_CVT, dstTy, dst0[c], srcTy, dreg); > + Instruction *cvt = mkCvt(OP_CVT, dstTy, dst0[c], srcTy, dreg); > + if (tgsi.getOpcode() == TGSI_OPCODE_D2I || > + tgsi.getOpcode() == TGSI_OPCODE_D2U) { > + cvt->rnd = ROUND_Z; > + }
How about if (!isFloatType(dstTy)) cvt->rnd = ROUND_Z; That way you're not explicitly listing out the opcodes. With that, Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu> > pos += 2; > } > break; > -- > 2.8.3 > > _______________________________________________ > 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