[PATCH] Allow setting CpuVRex bit in .arch directive
H.J. Lu
hjl.tools@gmail.com
Tue May 24 20:36:00 GMT 2016
On Tue, May 24, 2016 at 12:07 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Tue, May 24, 2016 at 12:02:42PM -0700, H.J. Lu wrote:
>> > Try:
>> > .arch corei7
>> > .arch .avx512f
>> > vpxord %xmm15, %xmm15, %xmm15
>> > vpxord %xmm16, %xmm16, %xmm16
>> >
>> > I get:
>> > /tmp/1.s: Assembler messages:
>> > /tmp/1.s:4: Error: bad register name `%xmm16'
>>
>> I opened:
>>
>> https://sourceware.org/bugzilla/show_bug.cgi?id=20141
>>
>> > and couldn't find any way how to make that assemble if I want to
>> > disable even some ISA set and thus have to start with .arch <cpuname>
>> > and add all the ISA sets I want to enable on top of that CPU.
>>
>> So you want to just disable AVX512D, no thing else. Wouldn't a
>> ".noarch" directive work better?
>
> Well, to be able to generically disable specific ISAs (one, several).
> An alternative to .noarch would be just allowing
> .arch .noavx512vl etc. (like it already allows .no87).
> Perhaps instead of mentioning all the ISAs once again with "no" prefix
> just handle it generically, if .arch .no* is used, look first for
> entries with explicit no at the beginning, and if not found, look for
> the string after the prefix in the table and assume negate.
Yes, it should work.
> Anyway, still it would be good to be able to change (both set and remove)
> the CpuVRex bit.
>
CpuVRex should be cleared/set automatically based on ISA.
--
H.J.
More information about the Binutils
mailing list