]> git.ipfire.org Git - thirdparty/gcc.git/commit
xtensa: Change the splitting of D[IF]mode constant assignments to be implemented...
authorTakayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>
Wed, 8 Oct 2025 01:27:48 +0000 (10:27 +0900)
committerMax Filippov <jcmvbkbc@gmail.com>
Thu, 9 Oct 2025 09:29:36 +0000 (02:29 -0700)
commitb6af5f46e35d0201dd43d0d7fd5c1fbcbf2177eb
treef3cf24b83755dd40f6d6f9499a19dd0073842efa
parent4864f24c86e1bfd8c34c74aed5ec73dcd98151b1
xtensa: Change the splitting of D[IF]mode constant assignments to be implemented in xt_largeconst instead of define_split

This patch moves the process of splitting D[IF]mode constant assignments
into SImode ones from the define_split implementation after reloading to
processing within the "xt_largeconst" target-specific pass.  It also
converts SFmode constant assignments into bit-equivalent SImode ones.

This allows these assignments to be processed by the "constantsynth"
optimization, which will be reimplemented later.

gcc/ChangeLog:

* config/xtensa/xtensa-protos.h
(xtensa_split_DI_reg_imm): Remove.
* config/xtensa/xtensa.cc (xtensa_split_DI_reg_imm): Remove.
(split_DI_SF_DF_const): New worker function.
(do_largeconst): Add a call to split_DI_SF_DF_const() to the insn
enumeration loop.
* config/xtensa/xtensa.md (movdi): Remove split code when the
source is constant.
(movdi_internal): Add a new constraint pair (a, Y) to the second
of the existing constraint alternatives.
(The auxiliary define_split for movdi_internal): Remove.
gcc/config/xtensa/xtensa-protos.h
gcc/config/xtensa/xtensa.cc
gcc/config/xtensa/xtensa.md