gas/ 2013-10-08 Jan Beulich * tc-i386.c (i386_index_check): Reject RIP-relative addressing for bndmk, bndldx, and bndstx. Warn about register scaling by other than 1 for bndldx and bndstx. --- 2013-10-07/gas/config/tc-i386.c +++ 2013-10-07/gas/config/tc-i386.c @@ -8360,6 +8375,25 @@ bad_address: || i.index_reg->reg_num == RegEiz)) || !i.index_reg->reg_type.bitfield.baseindex))) goto bad_address; + + /* bndmk, bndldx, and bndstx have special restrictions. */ + if (current_templates->start->base_opcode == 0xf30f1b + || (current_templates->start->base_opcode & ~1) == 0x0f1a) + { + /* They cannot use RIP-relative addressing. */ + if (i.base_reg + && i.base_reg->reg_num == (addr_mode == CODE_64BIT ? RegRip + : RegEip)) + { + as_bad (_("`%s' cannot be used here"), operand_string); + return 0; + } + + /* bndldx and bndstx ignore their scale factor. */ + if (current_templates->start->base_opcode != 0xf30f1b + && i.log2_scale_factor) + as_warn (_("register scaling is being ignored here")); + } } else {