i965: Make brw_CONT and brw_BREAK take the pop count.

We always need to set it, so pass it in.
This commit is contained in:
Eric Anholt 2010-08-28 23:18:18 -07:00
parent b0a933a4d9
commit 352dff62f8
4 changed files with 10 additions and 14 deletions

View file

@ -931,8 +931,8 @@ struct brw_instruction *brw_DO(struct brw_compile *p,
struct brw_instruction *brw_WHILE(struct brw_compile *p,
struct brw_instruction *patch_insn);
struct brw_instruction *brw_BREAK(struct brw_compile *p);
struct brw_instruction *brw_CONT(struct brw_compile *p);
struct brw_instruction *brw_BREAK(struct brw_compile *p, int pop_count);
struct brw_instruction *brw_CONT(struct brw_compile *p, int pop_count);
/* Forward jumps:
*/
void brw_land_fwd_jump(struct brw_compile *p,

View file

@ -777,7 +777,7 @@ void brw_ENDIF(struct brw_compile *p,
}
}
struct brw_instruction *brw_BREAK(struct brw_compile *p)
struct brw_instruction *brw_BREAK(struct brw_compile *p, int pop_count)
{
struct brw_instruction *insn;
insn = next_insn(p, BRW_OPCODE_BREAK);
@ -788,10 +788,11 @@ struct brw_instruction *brw_BREAK(struct brw_compile *p)
insn->header.execution_size = BRW_EXECUTE_8;
/* insn->header.mask_control = BRW_MASK_DISABLE; */
insn->bits3.if_else.pad0 = 0;
insn->bits3.if_else.pop_count = pop_count;
return insn;
}
struct brw_instruction *brw_CONT(struct brw_compile *p)
struct brw_instruction *brw_CONT(struct brw_compile *p, int pop_count)
{
struct brw_instruction *insn;
insn = next_insn(p, BRW_OPCODE_CONTINUE);
@ -802,6 +803,7 @@ struct brw_instruction *brw_CONT(struct brw_compile *p)
insn->header.execution_size = BRW_EXECUTE_8;
/* insn->header.mask_control = BRW_MASK_DISABLE; */
insn->bits3.if_else.pad0 = 0;
insn->bits3.if_else.pop_count = pop_count;
return insn;
}

View file

@ -1654,7 +1654,6 @@ void brw_vs_emit(struct brw_vs_compile *c )
const struct prog_instruction *inst = &c->vp->program.Base.Instructions[insn];
struct brw_reg args[3], dst;
GLuint i;
struct brw_instruction *temp;
#if 0
printf("%d: ", insn);
@ -1841,14 +1840,12 @@ void brw_vs_emit(struct brw_vs_compile *c )
break;
case OPCODE_BRK:
brw_set_predicate_control(p, get_predicate(inst));
temp = brw_BREAK(p);
temp->bits3.if_else.pop_count = if_depth_in_loop[loop_depth];
brw_BREAK(p, if_depth_in_loop[loop_depth]);
brw_set_predicate_control(p, BRW_PREDICATE_NONE);
break;
case OPCODE_CONT:
brw_set_predicate_control(p, get_predicate(inst));
temp = brw_CONT(p);
temp->bits3.if_else.pop_count = if_depth_in_loop[loop_depth];
brw_CONT(p, if_depth_in_loop[loop_depth]);
brw_set_predicate_control(p, BRW_PREDICATE_NONE);
break;
case OPCODE_ENDLOOP:

View file

@ -1822,7 +1822,6 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c)
struct brw_reg args[3][4], dst[4];
int j;
int mark = mark_tmps( c );
struct brw_instruction *temp;
c->cur_inst = i;
@ -2071,13 +2070,11 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c)
if_depth_in_loop[loop_depth] = 0;
break;
case OPCODE_BRK:
temp = brw_BREAK(p);
temp->bits3.if_else.pop_count = if_depth_in_loop[loop_depth];
brw_BREAK(p, if_depth_in_loop[loop_depth]);
brw_set_predicate_control(p, BRW_PREDICATE_NONE);
break;
case OPCODE_CONT:
temp = brw_CONT(p);
temp->bits3.if_else.pop_count = if_depth_in_loop[loop_depth];
brw_CONT(p, if_depth_in_loop[loop_depth]);
brw_set_predicate_control(p, BRW_PREDICATE_NONE);
break;
case OPCODE_ENDLOOP: