diff options
Diffstat (limited to 'assembler/gram.y')
-rw-r--r-- | assembler/gram.y | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/assembler/gram.y b/assembler/gram.y index 5671a0f4..03f1be64 100644 --- a/assembler/gram.y +++ b/assembler/gram.y @@ -294,6 +294,12 @@ static bool validate_dst_reg(struct brw_program_instruction *insn, struct brw_re return false; } + if (reg->address_mode == BRW_ADDRESS_REGISTER_INDIRECT_REGISTER && + access_mode(insn) == BRW_ALIGN_16) { + fprintf(stderr, "error: indirect Dst addr mode in align16 instruction\n"); + return false; + } + return true; } @@ -317,6 +323,12 @@ static bool validate_src_reg(struct brw_program_instruction *insn, return false; } + if (reg.address_mode == BRW_ADDRESS_REGISTER_INDIRECT_REGISTER && + access_mode(insn) == BRW_ALIGN_16) { + fprintf(stderr, "error: indirect Source addr mode in align16 instruction\n"); + return false; + } + assert(reg.hstride >= 0 && reg.hstride < ARRAY_SIZE(hstride_for_reg)); hstride = hstride_for_reg[reg.hstride]; |