aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcc.c
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2017-01-05 09:59:32 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2017-01-05 09:59:32 +0000
commit587790e60d22605b9b3aa73e7313cc55a6417c30 (patch)
treeffa2fd7e3106dd480f6f7c2a22f9439a2e9b2ab0 /gcc/gcc.c
parent6ff92497174e84271f71d1a1ede8a0ec513ee6a7 (diff)
downloadgcc-587790e60d22605b9b3aa73e7313cc55a6417c30.zip
gcc-587790e60d22605b9b3aa73e7313cc55a6417c30.tar.gz
gcc-587790e60d22605b9b3aa73e7313cc55a6417c30.tar.bz2
S/390: memset: Avoid overlapping MVC operands between iterations.
A memset with a value != 0 is currently implemented using the mvc instruction propagating the first byte through 256 byte blocks. While for the first mvc the byte is written with a separate instruction subsequent MVCs used the last byte of the previous 256 byte block. Starting with z13 this causes a major performance degradation. With this patch we always set the first byte with an mvi or stc in order to avoid the overlapping of the MVC operands between loop iterations. On older machines this basically makes no measurable difference so the patch enables the new behavior for all machine levels in order to make sure that code built for older machine levels runs well when moved to a z13. Bootstrapped and regression tested on s390 and s390x using z900 and z13 as default -march level. No regressions. gcc/ChangeLog: 2017-01-05 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes between loop iterations. From-SVN: r244096
Diffstat (limited to 'gcc/gcc.c')
0 files changed, 0 insertions, 0 deletions