diff options
| author | H.J. Lu <hjl.tools@gmail.com> | 2026-04-29 19:50:38 +0800 |
|---|---|---|
| committer | H.J. Lu <hjl.tools@gmail.com> | 2026-04-30 16:21:45 +0800 |
| commit | b81218009e091e92145a3fc54971fbbdb82d7298 (patch) | |
| tree | 88844d435130dc0f59576de64b6734acd08c7ae7 /libcpp | |
| parent | 86a3af821a82fdfca8755495021685f005fa5565 (diff) | |
| download | gcc-master.tar.gz gcc-master.tar.bz2 gcc-master.zip | |
Convert CONST_VECTOR load no larger than integer register:
(set (reg:V2SI 106)
(const_vector:V2SI [(const_int 1 [1]) repeated x2]))
to constant integer load:
(set (subreg:DI (reg:V2SI 106 [ _20 ]) 0)
(const_int 4294967297 [0x100000001]))
and keep redundant constant integer load. Generate zero CONST_VECTOR
load which works for both MMX and XMM registers.
Tested on Linux/x86-64 and Linux/i686.
gcc/
PR target/125026
PR target/125032
* config/i386/i386-features.cc (ix86_place_single_vector_set):
Don't check CONST_VECTOR load size.
(replace_vector_const): Handle constant integer load.
(x86_cse::x86_cse): Convert CONST_VECTOR load no larger than
integer to constant integer load and keep redundant constant
integer load. Generate zero CONST_VECTOR load.
gcc/testsuite/
PR target/125026
PR target/125032
* gcc.target/i386/pr125026.c: New test.
* gcc.target/i386/pr125032-1.c: Likewise.
* gcc.target/i386/pr125032-2.c: Likewise.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Diffstat (limited to 'libcpp')
0 files changed, 0 insertions, 0 deletions
