Jordan Justen <[email protected]> writes:

> On 2016-02-22 18:52:13, Francisco Jerez wrote:
>> Jordan Justen <[email protected]> writes:
>> 
>> > Without this, on SIMD 16 the send instruction destination will appear
>> > to write more than one destination register, causing the simulator to
>> > report an error.
>> >
>> > Of course, the send instruction can actually write more than one
>> > destination register regardless of the type set for the destination,
>> > so this is a bit strange.
>> >
>> > Suggested-by: Kenneth Graunke <[email protected]>
>> > Signed-off-by: Jordan Justen <[email protected]>
>> > ---
>> >  src/mesa/drivers/dri/i965/brw_eu_emit.c        | 4 +++-
>> >  src/mesa/drivers/dri/i965/brw_fs_generator.cpp | 2 +-
>> >  2 files changed, 4 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c 
>> > b/src/mesa/drivers/dri/i965/brw_eu_emit.c
>> > index 35d8039..83b262b 100644
>> > --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c
>> > +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c
>> > @@ -2601,6 +2601,7 @@ brw_send_indirect_surface_message(struct brw_codegen 
>> > *p,
>> >        surface = addr;
>> >     }
>> >  
>> > +   dst = retype(dst, BRW_REGISTER_TYPE_UW);
>> 
>> Any reason you didn't change this in brw_send_indirect_message()
>> instead?  That would also make sure that anything calling it directly
>> instead of going through brw_send_indirect_surface_message() would get
>> the destination type fixed up too.
>> 
>
> Yeah, that works too. r-b with that?
>
Yeah, feel free to put my R-b with that change.

> -Jordan
>
>> >     insn = brw_send_indirect_message(p, sfid, dst, payload, surface);
>> >     brw_inst_set_mlen(devinfo, insn, message_len);
>> >     brw_inst_set_rlen(devinfo, insn, response_len);
>> > @@ -3207,6 +3208,7 @@ brw_memory_fence(struct brw_codegen *p,
>> >      * message doesn't write anything back.
>> >      */
>> >     insn = next_insn(p, BRW_OPCODE_SEND);
>> > +   dst = retype(dst, BRW_REGISTER_TYPE_UW);
>> >     brw_set_dest(p, insn, dst);
>> >     brw_set_src0(p, insn, dst);
>> >     brw_set_memory_fence_message(p, insn, GEN7_SFID_DATAPORT_DATA_CACHE,
>> > @@ -3473,7 +3475,7 @@ brw_barrier(struct brw_codegen *p, struct brw_reg 
>> > src)
>> >     assert(devinfo->gen >= 7);
>> >  
>> >     inst = next_insn(p, BRW_OPCODE_SEND);
>> > -   brw_set_dest(p, inst, brw_null_reg());
>> > +   brw_set_dest(p, inst, retype(brw_null_reg(), BRW_REGISTER_TYPE_UW));
>> >     brw_set_src0(p, inst, src);
>> >     brw_set_src1(p, inst, brw_null_reg());
>> >  
>> > diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp 
>> > b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
>> > index ef58584..b58c938 100644
>> > --- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
>> > +++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
>> > @@ -431,7 +431,7 @@ fs_generator::generate_cs_terminate(fs_inst *inst, 
>> > struct brw_reg payload)
>> >  
>> >     insn = brw_next_insn(p, BRW_OPCODE_SEND);
>> >  
>> > -   brw_set_dest(p, insn, brw_null_reg());
>> > +   brw_set_dest(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_UW));
>> >     brw_set_src0(p, insn, payload);
>> >     brw_set_src1(p, insn, brw_imm_d(0));
>> >  
>> > -- 
>> > 2.7.0
>> >
>> > _______________________________________________
>> > mesa-dev mailing list
>> > [email protected]
>> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to