diff options
author | Andreas Krebbel <krebbel@linux.ibm.com> | 2018-09-27 08:03:42 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2018-09-27 08:03:42 +0000 |
commit | 291a9e980ef059c46476212e4b3e88fb07e11b00 (patch) | |
tree | 9fdefe7ee1510f1434f224164acb7aa4cc7be29a | |
parent | 461553e6ed2579e447bac5bf3093c40f9545f71e (diff) | |
download | gcc-291a9e980ef059c46476212e4b3e88fb07e11b00.zip gcc-291a9e980ef059c46476212e4b3e88fb07e11b00.tar.gz gcc-291a9e980ef059c46476212e4b3e88fb07e11b00.tar.bz2 |
S/390: Implement speculation barrier
gcc/ChangeLog:
2018-09-27 Andreas Krebbel <krebbel@linux.ibm.com>
* config/s390/s390.md (PPA_TX_ABORT, PPA_OOO_BARRIER): New
constant definitions.
("tx_assist"): Replace magic number with PPA_TX_ABORT.
("*ppa"): Enable pattern also for -march=zEC12 -mno-htm.
("speculation_barrier"): New expander definition.
From-SVN: r264663
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 21 |
2 files changed, 27 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 54eb0b8..8691d52 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2018-09-27 Andreas Krebbel <krebbel@linux.ibm.com> + + * config/s390/s390.md (PPA_TX_ABORT, PPA_OOO_BARRIER): New + constant definitions. + ("tx_assist"): Replace magic number with PPA_TX_ABORT. + ("*ppa"): Enable pattern also for -march=zEC12 -mno-htm. + ("speculation_barrier"): New expander definition. + 2018-09-26 Indu Bhagat <indu.bhagat@oracle.com> PR gcov-profile/86957 diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 537ed35..1286d2c 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -410,6 +410,15 @@ (PFPO_RND_MODE_BFP 1) ]) +;; PPA constants + +; Immediate values which can be used as the third operand to the +; perform processor assist instruction + +(define_constants + [(PPA_TX_ABORT 1) + (PPA_OOO_BARRIER 15)]) + ; Immediate operands for tbegin and tbeginc (define_constants [(TBEGIN_MASK 65292)]) ; 0xff0c (define_constants [(TBEGINC_MASK 65288)]) ; 0xff08 @@ -11415,7 +11424,7 @@ (define_expand "tx_assist" [(unspec_volatile [(match_operand:SI 0 "register_operand" "") (reg:SI GPR0_REGNUM) - (const_int 1)] + (const_int PPA_TX_ABORT)] UNSPECV_PPA)] "TARGET_HTM" "") @@ -11425,7 +11434,7 @@ (match_operand:SI 1 "register_operand" "d") (match_operand 2 "const_int_operand" "I")] UNSPECV_PPA)] - "TARGET_HTM && INTVAL (operands[2]) < 16" + "(TARGET_ZEC12 || TARGET_HTM) && INTVAL (operands[2]) < 16" "ppa\t%0,%1,%2" [(set_attr "op_type" "RRF")]) @@ -11592,3 +11601,11 @@ "" "bcr\t7,%%r0" [(set_attr "op_type" "RR")]) + +(define_expand "speculation_barrier" + [(unspec_volatile [(reg:SI GPR0_REGNUM) + (reg:SI GPR0_REGNUM) + (const_int PPA_OOO_BARRIER)] + UNSPECV_PPA)] + "TARGET_ZEC12" + "") |