diff options
author | Homer Hsing <homer.xing@intel.com> | 2012-09-27 13:51:33 +0800 |
---|---|---|
committer | Damien Lespiau <damien.lespiau@intel.com> | 2013-03-04 15:54:33 +0000 |
commit | 72a3c194db2682cb00ea882933f17940a5dfde7e (patch) | |
tree | b0ffc88a80ef06cdff74c11f32130f2fdeee2f70 /assembler | |
parent | f55ed65bb28bd8bce416a9dfd32dfc0028cb61bf (diff) |
Compile ELSE and WHILE in Gen5 as same way as in Gen4
Diffstat (limited to 'assembler')
-rw-r--r-- | assembler/src/gram.y | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/assembler/src/gram.y b/assembler/src/gram.y index 26625ef2..65e7f205 100644 --- a/assembler/src/gram.y +++ b/assembler/src/gram.y @@ -429,8 +429,8 @@ ifelseinstruction: ENDIF } | ELSE execsize relativelocation instoptions { - // for Gen4 - if(gen_level == 4) { + // for Gen4, Gen5 + if(gen_level <= 5) { struct direct_reg dst; struct dst_operand ip_dst; struct src_operand ip_src; @@ -509,7 +509,7 @@ ifelseinstruction: ENDIF loopinstruction: predicate WHILE execsize relativelocation instoptions { - if(gen_level == 4) { + if(gen_level <= 5) { struct direct_reg dst; struct dst_operand ip_dst; struct src_operand ip_src; @@ -535,13 +535,16 @@ loopinstruction: predicate WHILE execsize relativelocation instoptions set_instruction_src1(&$$, &$4); $$.first_reloc_target = $4.reloc_target; $$.first_reloc_offset = $4.imm32; - } else if (gen_level == 7) { // TODO: Gen5, Gen6 also OK? + } else if (gen_level == 7) { // TODO: Gen6 also OK? memset(&$$, 0, sizeof($$)); set_instruction_predicate(&$$, &$1); $$.header.opcode = $2; $$.header.execution_size = $3; $$.first_reloc_target = $4.reloc_target; $$.first_reloc_offset = $4.imm32; + } else { + fprintf(stderr, "'WHILE' instruction is not implemented!\n"); + YYERROR; } } | DO |