]> git.ipfire.org Git - thirdparty/gcc.git/commit
rs6000: build constant via li/lis;rldicl/rldicr
authorJiufu Guo <guojiufu@linux.ibm.com>
Tue, 10 Jan 2023 12:52:33 +0000 (20:52 +0800)
committerguojiufu <guojiufu@linux.ibm.com>
Sun, 8 Oct 2023 02:17:08 +0000 (10:17 +0800)
commit8f1a70a4fbcc6441c70da60d4ef6db1e5635e18a
treeec33e6489a2d4026ab4e14116360bd8ad5d4ca47
parent6e5f627492ff547e3c2fc7782c232e77402ead62
rs6000: build constant via li/lis;rldicl/rldicr

If a constant is possible left/right cleaned on a rotated value from
a negative value of "li/lis".  Then, using "li/lis ; rldicl/rldicr"
to build the constant.

gcc/ChangeLog:

* config/rs6000/rs6000.cc (can_be_built_by_li_lis_and_rldicl): New
function.
(can_be_built_by_li_lis_and_rldicr): New function.
(rs6000_emit_set_long_const): Call can_be_built_by_li_lis_and_rldicr and
can_be_built_by_li_lis_and_rldicl.

gcc/testsuite/ChangeLog:

* gcc.target/powerpc/const-build.c: Add more tests.
gcc/config/rs6000/rs6000.cc
gcc/testsuite/gcc.target/powerpc/const-build.c