mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 21:50:12 +01:00
i965: Make brw_JMPI set predicate_control based on a parameter.
We use both predicated and unconditional JMPI instructions. But in each case, it's clear which we want. It's simpler to just specify it as a parameter, rather than relying on default state. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
3769a2d51f
commit
8deb91b2e7
3 changed files with 13 additions and 10 deletions
|
|
@ -335,7 +335,8 @@ struct brw_instruction *brw_CONT(struct brw_compile *p);
|
|||
struct brw_instruction *gen6_CONT(struct brw_compile *p);
|
||||
struct brw_instruction *gen6_HALT(struct brw_compile *p);
|
||||
|
||||
struct brw_instruction *brw_JMPI(struct brw_compile *p, struct brw_reg index);
|
||||
struct brw_instruction *brw_JMPI(struct brw_compile *p, struct brw_reg index,
|
||||
unsigned predicate_control);
|
||||
|
||||
void brw_NOP(struct brw_compile *p);
|
||||
|
||||
|
|
|
|||
|
|
@ -1189,7 +1189,8 @@ void brw_NOP(struct brw_compile *p)
|
|||
*/
|
||||
|
||||
struct brw_instruction *brw_JMPI(struct brw_compile *p,
|
||||
struct brw_reg index)
|
||||
struct brw_reg index,
|
||||
unsigned predicate_control)
|
||||
{
|
||||
struct brw_reg ip = brw_ip_reg();
|
||||
struct brw_instruction *insn = brw_alu2(p, BRW_OPCODE_JMPI, ip, ip, index);
|
||||
|
|
@ -1197,6 +1198,7 @@ struct brw_instruction *brw_JMPI(struct brw_compile *p,
|
|||
insn->header.execution_size = 1;
|
||||
insn->header.compression_control = BRW_COMPRESSION_NONE;
|
||||
insn->header.mask_control = BRW_MASK_DISABLE;
|
||||
insn->header.predicate_control = predicate_control;
|
||||
|
||||
p->current->header.predicate_control = BRW_PREDICATE_NONE;
|
||||
|
||||
|
|
|
|||
|
|
@ -207,15 +207,15 @@ static void do_flatshade_triangle( struct brw_sf_compile *c )
|
|||
nr = count_flatshaded_attributes(c);
|
||||
|
||||
brw_MUL(p, c->pv, c->pv, brw_imm_d(jmpi*(nr*2+1)));
|
||||
brw_JMPI(p, c->pv);
|
||||
brw_JMPI(p, c->pv, BRW_PREDICATE_NONE);
|
||||
|
||||
copy_flatshaded_attributes(c, c->vert[1], c->vert[0]);
|
||||
copy_flatshaded_attributes(c, c->vert[2], c->vert[0]);
|
||||
brw_JMPI(p, brw_imm_d(jmpi*(nr*4+1)));
|
||||
brw_JMPI(p, brw_imm_d(jmpi*(nr*4+1)), BRW_PREDICATE_NONE);
|
||||
|
||||
copy_flatshaded_attributes(c, c->vert[0], c->vert[1]);
|
||||
copy_flatshaded_attributes(c, c->vert[2], c->vert[1]);
|
||||
brw_JMPI(p, brw_imm_d(jmpi*nr*2));
|
||||
brw_JMPI(p, brw_imm_d(jmpi*nr*2), BRW_PREDICATE_NONE);
|
||||
|
||||
copy_flatshaded_attributes(c, c->vert[0], c->vert[2]);
|
||||
copy_flatshaded_attributes(c, c->vert[1], c->vert[2]);
|
||||
|
|
@ -240,10 +240,10 @@ static void do_flatshade_line( struct brw_sf_compile *c )
|
|||
nr = count_flatshaded_attributes(c);
|
||||
|
||||
brw_MUL(p, c->pv, c->pv, brw_imm_d(jmpi*(nr+1)));
|
||||
brw_JMPI(p, c->pv);
|
||||
brw_JMPI(p, c->pv, BRW_PREDICATE_NONE);
|
||||
copy_flatshaded_attributes(c, c->vert[1], c->vert[0]);
|
||||
|
||||
brw_JMPI(p, brw_imm_ud(jmpi*nr));
|
||||
brw_JMPI(p, brw_imm_ud(jmpi*nr), BRW_PREDICATE_NONE);
|
||||
copy_flatshaded_attributes(c, c->vert[0], c->vert[1]);
|
||||
}
|
||||
|
||||
|
|
@ -770,7 +770,7 @@ void brw_emit_anyprim_setup( struct brw_sf_compile *c )
|
|||
(1<<_3DPRIM_POLYGON) |
|
||||
(1<<_3DPRIM_RECTLIST) |
|
||||
(1<<_3DPRIM_TRIFAN_NOSTIPPLE)));
|
||||
jmp = brw_JMPI(p, brw_imm_d(0)) - p->store;
|
||||
jmp = brw_JMPI(p, brw_imm_d(0), BRW_PREDICATE_NORMAL) - p->store;
|
||||
brw_emit_tri_setup(c, false);
|
||||
brw_land_fwd_jump(p, jmp);
|
||||
|
||||
|
|
@ -781,13 +781,13 @@ void brw_emit_anyprim_setup( struct brw_sf_compile *c )
|
|||
(1<<_3DPRIM_LINESTRIP_CONT) |
|
||||
(1<<_3DPRIM_LINESTRIP_BF) |
|
||||
(1<<_3DPRIM_LINESTRIP_CONT_BF)));
|
||||
jmp = brw_JMPI(p, brw_imm_d(0)) - p->store;
|
||||
jmp = brw_JMPI(p, brw_imm_d(0), BRW_PREDICATE_NORMAL) - p->store;
|
||||
brw_emit_line_setup(c, false);
|
||||
brw_land_fwd_jump(p, jmp);
|
||||
|
||||
brw_set_conditionalmod(p, BRW_CONDITIONAL_Z);
|
||||
brw_AND(p, v1_null_ud, payload_attr, brw_imm_ud(1<<BRW_SPRITE_POINT_ENABLE));
|
||||
jmp = brw_JMPI(p, brw_imm_d(0)) - p->store;
|
||||
jmp = brw_JMPI(p, brw_imm_d(0), BRW_PREDICATE_NORMAL) - p->store;
|
||||
brw_emit_point_sprite_setup(c, false);
|
||||
brw_land_fwd_jump(p, jmp);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue