S/390: Unroll mvc/xc loop for memset with small constant
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Thu, 5 Jan 2017 10:00:34 +0000 (10:00 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Thu, 5 Jan 2017 10:00:34 +0000 (10:00 +0000)
commit8597cd335e507057e7df5dcc0c157cbd9a5bcbdd
tree359ae5f5295cafe8d655cb920cf57715057aa482
parent587790e60d22605b9b3aa73e7313cc55a6417c30
S/390: Unroll mvc/xc loop for memset with small constant
 lengths.

When expanding a memset we emit a loop of MVCs/XCs instructions dealing
with 256 byte blocks.  This loop used to get unrolled with older GCCs
when using constant length operands.  GCC lost this ability probably
when more of the loop unrolling stuff has been moved to tree level.

With this patch the unrolling is done manually when emitting the RTL
insns.

2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* gcc.target/s390/memset-1.c: New test.

gcc/ChangeLog:

2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390.c (s390_expand_setmem): Unroll the loop for
small constant length operands.

From-SVN: r244097
gcc/ChangeLog
gcc/config/s390/s390.c
gcc/testsuite/gcc.target/s390/memset-1.c [new file with mode: 0644]