aboutsummaryrefslogtreecommitdiff
path: root/libjava/classpath/gnu/java
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2025-08-28 17:55:46 -0700
committerH.J. Lu <hjl.tools@gmail.com>2025-08-29 05:21:14 -0700
commit881df7a0b1e8e8c1454309fe23c0edd026296b8b (patch)
tree24f469616595f21f704be9efd8f57ae1aa340ccc /libjava/classpath/gnu/java
parent207a506ee50d6510ff4c53db39a52ba1082842e4 (diff)
downloadgcc-881df7a0b1e8e8c1454309fe23c0edd026296b8b.zip
gcc-881df7a0b1e8e8c1454309fe23c0edd026296b8b.tar.gz
gcc-881df7a0b1e8e8c1454309fe23c0edd026296b8b.tar.bz2
x86: Allow by_pieces op when expanding memcpy/memset epilogue
Since commit 401199377c50045ede560daf3f6e8b51749c2a87 Author: H.J. Lu <hjl.tools@gmail.com> Date: Tue Jun 17 10:17:17 2025 +0800 x86: Improve vector_loop/unrolled_loop for memset/memcpy uses move_by_pieces and store_by_pieces to expand memcpy/memset epilogue with vector_loop even when targetm.use_by_pieces_infrastructure_p returns false, which triggers gcc_assert (targetm.use_by_pieces_infrastructure_p (len, align, memsetp ? SET_BY_PIECES : STORE_BY_PIECES, optimize_insn_for_speed_p ())); in store_by_pieces. Fix it by: 1. Add by_pieces_in_use to machine_function to indicate that by_pieces op is currently in use. 2. Set and clear by_pieces_in_use when expanding memcpy/memset epilogue with move_by_pieces and store_by_pieces. 3. Define TARGET_USE_BY_PIECES_INFRASTRUCTURE_P to return true if by_pieces_in_use is true. gcc/ PR target/121096 * config/i386/i386-expand.cc (expand_cpymem_epilogue): Set and clear by_pieces_in_use when using by_pieces op. (expand_setmem_epilogue): Likewise. * config/i386/i386.cc (ix86_use_by_pieces_infrastructure_p): New. (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Likewise. * config/i386/i386.h (machine_function): Add by_pieces_in_use. gcc/testsuite/ PR target/121096 * gcc.target/i386/memcpy-strategy-14.c: New test. * gcc.target/i386/memcpy-strategy-15.c: Likewise. * gcc.target/i386/memset-strategy-10.c: Likewise. * gcc.target/i386/memset-strategy-11.c: Likewise. * gcc.target/i386/memset-strategy-12.c: Likewise. * gcc.target/i386/memset-strategy-13.c: Likewise. * gcc.target/i386/memset-strategy-14.c: Likewise. * gcc.target/i386/memset-strategy-15.c: Likewise. Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Diffstat (limited to 'libjava/classpath/gnu/java')
0 files changed, 0 insertions, 0 deletions