[PATCH/AArch64 3/3] * opcodes/aarch64-tbl.h (aarch64_opcode_table): Add back the "lost" instruction aliases for scalar compare and vector compare.

Dr. Philipp Tomsich philipp.tomsich@theobroma-systems.com
Wed Dec 11 03:50:00 GMT 2013


Marcus,

> In the meantime binutils 2.23 and now the recently released 2.24 do
> not support these mnemonics therefore gcc must not generate them and
> will need fixing to emit the appropriate architecture instruction
> instead.

GCC 4.8.x and (the current top-of-trunk for) 4.9 will generate at least some of
these instructions. Here’s one relevant snippet from aarch64-simd.md:
> ;; fcm(eq|ge|gt|le|lt)
> 
> (define_insn "aarch64_cm<optab><mode>"
>   [(set (match_operand:<V_cmp_result> 0 "register_operand" "=w,w")
>         (neg:<V_cmp_result>
>           (COMPARISONS:<V_cmp_result>
>             (match_operand:VALLF 1 "register_operand" "w,w")
>             (match_operand:VALLF 2 "aarch64_simd_reg_or_zero" "w,YDz")
>           )))]
>   "TARGET_SIMD"
>   "@
>   fcm<n_optab>\t%<v>0<Vmtype>, %<v><cmp_1><Vmtype>, %<v><cmp_2><Vmtype>
>   fcm<optab>\t%<v>0<Vmtype>, %<v>1<Vmtype>, 0"
>   [(set_attr "type" "neon_fp_compare_<Vetype><q>")]
> )

Given that this is the behaviour for all release 4.8.x versions of the AArch64 
backend, I do believe that extending the assembler at least to the extent 
necessary to support the existing GCC versions would be advisable.

As this would require only the addition of all variants of the ‘fcm’-instruction,
I would be happy to revise the patch to limit the change to these instructions.

Thanks,
Philipp.


More information about the Binutils mailing list