Please discard this patch and the following one ("[PATCH 13/13] nir/lower_double_ops: optimize set_exponent()"). We have moved this to i965 backend.
Sam On 12/04/16 10:05, Samuel Iglesias Gonsálvez wrote: > From: Iago Toral Quiroga <ito...@igalia.com> > > This is useful when we only need to modify the high 32-bit chunk of a double. > This is a common case, because this is the part that encodes the exponent > which we manipulate in some double lowering passes. Although we can accomplish > the same by using pack_double_2x32, this new opcode is better for register > pressure, since we don't have to unpack both parts of the double and keep > the low 32-bits around until we can recombine the new exponent. > > We will use this opcode in the set_exponent() function of the double lowering > pass and with that we will fix spilling issues in some dmat4 divide > piglit tests on Intel. > --- > src/compiler/nir/nir_opcodes.py | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py > index 9f62e08..f92dd8d 100644 > --- a/src/compiler/nir/nir_opcodes.py > +++ b/src/compiler/nir/nir_opcodes.py > @@ -276,6 +276,20 @@ di.i2 = src0.y; > dst.x = di.u64; > """) > > +opcode("pack_double_2x32_split_y", 0, tuint64, [0, 0], [tuint64, tuint32], > "", """ > +union { > + uint64_t u64; > + struct { > + uint32_t i1; > + uint32_t i2; > + }; > +} di; > + > +di.u64 = src0; > +di.i1 = src1; > +dst = di.u64; > +""") > + > unop_horiz("unpack_double_2x32", 2, tuint32, 1, tuint64, """ > union { > uint64_t u64; > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev