Make sure Gen6 ENDIF work

This commit is contained in:
Homer Hsing 2012-09-28 13:46:21 +08:00 committed by Damien Lespiau
parent 397e1ccccb
commit c56d786116

View File

@ -431,6 +431,10 @@ instruction: unaryinstruction
ifelseinstruction: ENDIF ifelseinstruction: ENDIF
{ {
// for Gen4 // for Gen4
if(gen_level > 5) {
fprintf(stderr, "ENDIF Syntax error: should be 'ENDIF execsize relativelocation'\n");
YYERROR;
}
memset(&$$, 0, sizeof($$)); memset(&$$, 0, sizeof($$));
$$.header.opcode = $1; $$.header.opcode = $1;
$$.header.thread_control |= BRW_THREAD_SWITCH; $$.header.thread_control |= BRW_THREAD_SWITCH;
@ -440,8 +444,12 @@ ifelseinstruction: ENDIF
} }
| ENDIF execsize relativelocation instoptions | ENDIF execsize relativelocation instoptions
{ {
// for Gen7+ // for Gen6+
/* Gen7 bspec: predication is prohibited */ /* Gen6, Gen7 bspec: predication is prohibited */
if(gen_level <= 5) {
fprintf(stderr, "ENDIF Syntax error: should be 'ENDIF'\n");
YYERROR;
}
memset(&$$, 0, sizeof($$)); memset(&$$, 0, sizeof($$));
$$.header.opcode = $1; $$.header.opcode = $1;
$$.header.execution_size = $2; $$.header.execution_size = $2;