[PATCH] PR gas/16488: Add test for incorrect memory operand for gather/scatter instructions.
H.J. Lu
hjl.tools@gmail.com
Fri Jan 31 14:53:00 GMT 2014
On Fri, Jan 31, 2014 at 6:38 AM, Michael Zolotukhin
<michael.v.zolotukhin@gmail.com> wrote:
>> You added 2 tests for AT&T syntax, but only 1 for
>> Intel syntax. Any particular reason for this?
> Yes, the following test doesn't give an error:
> vgatherqpd zmm6{k1}, ZMMWORD PTR [zmm3]
> I think it's because it is equivalent to something like vgatherqpd
> (,%zmm2,),%zmm6{%k1} (please note commas around zmm2), which also
> doesn't lead to an error. I assume that in Intel syntax this test is
> regarded as a rich addressing mode, which is acceptable for
> gather/scatters. However, I'm not sure about this - please correct me
> if I'm wrong.
You can use "zmm3+riz" to force zmm as base register:
[hjl@gnu-6 tmp]$ cat sib.s
.text
.allow_index_reg
vgatherqpd (%zmm2),%zmm6{%k1}
.intel_syntax noprefix
vgatherqpd zmm6{k1}, ZMMWORD PTR [zmm3+riz]
vgatherqpd zmm6{k1}, ZMMWORD PTR [zmm3+rax]
[hjl@gnu-6 tmp]$ gcc -c sib.s
sib.s: Assembler messages:
sib.s:3: Error: `(%zmm2)' is not a valid base/index expression
sib.s:5: Error: `ZMMWORD PTR [zmm3+riz]' is not a valid base/index expression
[hjl@gnu-6 tmp]$
--
H.J.
More information about the Binutils
mailing list