aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.ibm.com>2018-09-27 08:03:42 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2018-09-27 08:03:42 +0000
commit291a9e980ef059c46476212e4b3e88fb07e11b00 (patch)
tree9fdefe7ee1510f1434f224164acb7aa4cc7be29a
parent461553e6ed2579e447bac5bf3093c40f9545f71e (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/config/s390/s390.md21
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"
+ "")