This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] xtensa: add -mauto-litpools option
- From: "augustine dot sterling at gmail dot com" <augustine dot sterling at gmail dot com>
- To: Max Filippov <jcmvbkbc at gmail dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 12 Aug 2015 09:35:04 -0700
- Subject: Re: [PATCH] xtensa: add -mauto-litpools option
- Authentication-results: sourceware.org; auth=none
- References: <1439341740-1912-1-git-send-email-jcmvbkbc at gmail dot com>
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.