On Tue, Nov 27, 2012 at 07:55:05PM +0100, Michel Dänzer wrote: > From: Michel Dänzer <michel.daen...@amd.com> > > Fixes 4 piglit tests and prevents many more from crashing. > > Signed-off-by: Michel Dänzer <michel.daen...@amd.com> > --- > src/gallium/drivers/radeonsi/radeonsi_shader.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c > b/src/gallium/drivers/radeonsi/radeonsi_shader.c > index d6e37ac..d5d56c4 100644 > --- a/src/gallium/drivers/radeonsi/radeonsi_shader.c > +++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c > @@ -496,7 +496,11 @@ static void si_llvm_init_export_args(struct > lp_build_tgsi_context *bld_base, > > LLVMInt32TypeInContext(base->gallivm->context), > args, 2, > LLVMReadNoneAttribute); > - args[chan + 7] = args[chan + 5]; > + args[chan + 7] = args[chan + 5] = > + LLVMBuildBitCast(base->gallivm->builder, > + args[chan + 5], > + > LLVMFloatTypeInContext(base->gallivm->context), > + ""); > }
I think a better fix would be to change the return type of llvm.SI.packf16 intrinsic from i32 to v2f16. This is more correct and would allow us to use the intrinsic elsewhere if needed. Actually, we could also replace the llvm.SI.packf16 intrinsic with LLVM IR: llvm.SI.packf16(A, B) => build_vector(fptrunc (f32 A to f16), fptrunc (f32 B to f16)) This will also require a new export intrinsic to handle the packed floats, and you'll need to add the v2f16 type to the register class definitions. -Tom > > /* Set COMPR flag */ > -- > 1.7.10.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev