S/390: Add static OSC breaker if necessary

Programming / Compilers / GCC - krebbel [138bc75d-0d04-0410-961f-82ee72b054a4] - 28 October 2016 07:31 UTC

This patch adds a magic OSC (operand store compare) break instruction which is necessary if a store is followed closely by a load with same base+indx+displ while either base or index get modified in between.

The patch improves several SpecCPU testcases running on IBM z13.

gcc/testsuite/ChangeLog:

2016-10-28 Andreas Krebbel

- gcc.target/s390/oscbreak-1.c: New test.

gcc/ChangeLog:

2016-10-28 Andreas Krebbel

- config/s390/s390.c (s390_adjust_loop_scan_osc): New function. (s390_adjust_loops): New function. (s390_reorg): Invoke s390_adjust_loops.
- config/s390/s390.md: (UNSPEC_OSC_BREAK): New constant. ("osc_break"): New insn definition.

987860a S/390: Add static OSC breaker if necessary.
gcc/ChangeLog | 8 ++
gcc/config/s390/s390.c | 152 ++++++++++++++++++++++++++++
gcc/config/s390/s390.md | 8 ++
gcc/testsuite/ChangeLog | 4 +
gcc/testsuite/gcc.target/s390/oscbreak-1.c | 25 +++++
5 files changed, 197 insertions(+)

Upstream: gcc.gnu.org


  • Share