aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2026-04-29 19:50:38 +0800
committerH.J. Lu <hjl.tools@gmail.com>2026-04-30 16:21:45 +0800
commitb81218009e091e92145a3fc54971fbbdb82d7298 (patch)
tree88844d435130dc0f59576de64b6734acd08c7ae7 /libcpp
parent86a3af821a82fdfca8755495021685f005fa5565 (diff)
downloadgcc-master.tar.gz
gcc-master.tar.bz2
gcc-master.zip
x86_cse: Convert CONST_VECTOR load to constant integer loadHEADtrunkmaster
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