Make sure Gen6 ENDIF work
authorHomer Hsing <homer.xing@intel.com>
Fri, 28 Sep 2012 05:46:21 +0000 (13:46 +0800)
committerDamien Lespiau <damien.lespiau@intel.com>
Mon, 4 Mar 2013 15:54:34 +0000 (15:54 +0000)
assembler/src/gram.y

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