[PATCH] xtensa: add -mauto-litpools option

augustine.sterling@gmail.com augustine.sterling@gmail.com
Wed Aug 12 16:35:00 GMT 2015


On Tue, Aug 11, 2015 at 6:09 PM, Max Filippov <jcmvbkbc@gmail.com> wrote:
> With support from assembler this option allows compiling huge functions,
> where single literal pool at the beginning of a function may not be
> reachable by L32R instructions at its end.
>
> Currently assembler --auto-litpools option cannot deal with literals
> used from multiple locations separated by more than 256 KBytes of code.
> Don't turn constants into literals, instead use MOVI instruction to load
> them into registers and let the assembler turn them into literals as
> necessary.
>
> 2015-08-11  Max Filippov  <jcmvbkbc@gmail.com>
> gcc/
>         * config/xtensa/constraints.md (define_constraint "Y"): New
>         constraint.
>         * config/xtensa/elf.h (ASM_SPEC): Add m(no-)auto-litpools.
>         * config/xtensa/linux.h (ASM_SPEC): Likewise.
>         * config/xtensa/predicates.md (move_operand): Match constants
>         and symbols in the presence of TARGET_AUTO_LITPOOLS.
>         * config/xtensa/xtensa.c (xtensa_valid_move): Don't allow
>         immediate references to TLS data.
>         (xtensa_emit_move_sequence): Don't force constants to memory in
>         the presence of TARGET_AUTO_LITPOOLS.
>         (print_operand): Add 'y' format, same as default, but capable of
>         printing SF mode constants as well.
>         * config/xtensa/xtensa.md (movsi_internal, movhi_internal)
>         (movsf_internal): Add movi pattern that loads literal.
>         (movsf, movdf): Don't force constants to memory in the presence
>         of TARGET_AUTO_LITPOOLS.
>         (movdf_internal): Add 'Y' constraint.
>         * config/xtensa/xtensa.opt (mauto-litpools): New option.
>         * doc/invoke.text (Xtensa options): Document -mauto-litpools.

If this is OK with the linux people, it is OK with me. As I recall,
they used to have a need to keep literals in page-level groups, but my
memory is hazy.



More information about the Gcc-patches mailing list