From 291a9e980ef059c46476212e4b3e88fb07e11b00 Mon Sep 17 00:00:00 2001 From: Andreas Krebbel Date: Thu, 27 Sep 2018 08:03:42 +0000 Subject: [PATCH] S/390: Implement speculation barrier gcc/ChangeLog: 2018-09-27 Andreas Krebbel * 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 --- gcc/ChangeLog | 8 ++++++++ gcc/config/s390/s390.md | 21 +++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 54eb0b8d15a..8691d52462a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2018-09-27 Andreas Krebbel + + * 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 PR gcov-profile/86957 diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 537ed35af18..1286d2ca336 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" + "")