aboutsummaryrefslogtreecommitdiff
path: root/libphobos/src/std/internal
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2025-05-01 06:30:41 +0800
committerH.J. Lu <hjl.tools@gmail.com>2025-05-07 16:34:08 +0800
commitb8c4b6aa8e0521770c6f9fd48dd13dd85e3a2fc9 (patch)
tree264d8fba621ce27c7ce66aef16a52483f4381ae1 /libphobos/src/std/internal
parentae987baeb5fb70877fd007db80b77e374f676c76 (diff)
downloadgcc-master.zip
gcc-master.tar.gz
gcc-master.tar.bz2
x86: Insert extra move for mode size smaller than natural sizeHEADtrunkmaster
When generating a SUBREG from V16QI to V2HF, validate_subreg fails since V2HF is a floating point vector and its size (4 bytes) is smaller than its natural size (word size). Insert an extra move with a QI vector SUBREG of the same size to avoid validate_subreg failure. gcc/ PR target/120036 * config/i386/i386-features.cc (ix86_get_vector_load_mode): Handle 8/4/2 bytes. (remove_redundant_vector_load): If the mode size is smaller than its natural size, first insert an extra move with a QI vector SUBREG of the same size to avoid validate_subreg failure. gcc/testsuite/ PR target/120036 * g++.target/i386/pr120036.C: New test. * gcc.target/i386/pr117839-3a.c: Likewise. * gcc.target/i386/pr117839-3b.c: Likewise. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Diffstat (limited to 'libphobos/src/std/internal')
0 files changed, 0 insertions, 0 deletions