This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] RISC-V: Allow ISA subsets to be disabled
On 31 March 2017 at 09:15, Alex Bradbury <asb@asbradbury.org> wrote:
> On 30 March 2017 at 20:45, Palmer Dabbelt <palmer@dabbelt.com> wrote:
>> Without this patch, passing "-march=rv64ic -march=rv64i" results in
>> you getting a "RV64IC" toolchain, which isn't expected.
>>
>> gas/ChangeLog:
>>
>> 2017-03-30 Palmer Dabbelt <palmer@dabbelt.com>
>>
>> * config/tc-riscv.c (riscv_clear_subsets): New function.
>> (riscv_add_subset): Call riscv_clear_subsets and riscv_set_rvc to
>> clear RVC when it's been previously set.
>
> For what it's worth, the current behaviour (i.e. the behaviour before
> this patch) seems to be in line with other architectures. e.g. if I do
> `gcc -march=native -march=generic` then the latter won't override the
> former - at least as evidenced by `gcc -march=native -march=generic -E
> -v - </dev/null`.
My apologies, over-riding behaviour _is_ standard for as which is
obviously the relevant comparison.
$ cat foo.s
foo:
vmulsd %xmm2, %xmm1, %xmm1
vaddsd %xmm0, %xmm1, %xmm0
ret
$ as -march=corei7+avx -march=generic64 foo.s
foo.s: Assembler messages:
foo.s:2: Error: `vmulsd' is not supported on `generic64'
foo.s:3: Error: `vaddsd' is not supported on `generic64'
It's a shame gcc and as are inconsistent in their argument handling in
this way, at least on x86-64. Palmer: are you intending to make a
matching change to -march for gcc, or to stick with the non-overriding
behaviour -march has on x86 (and other platforms?).
Best,
Alex