aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>2016-03-01 09:24:29 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2016-03-01 09:24:29 +0000
commiteae48192e4c70b47a2066650a56b12c9198b9b47 (patch)
tree353b1fe4237ab94160fa971d36a00650ad2e8678 /gcc
parenta9fcf821ebc87275f31d4f145b6cb85f1bb79237 (diff)
downloadgcc-eae48192e4c70b47a2066650a56b12c9198b9b47.zip
gcc-eae48192e4c70b47a2066650a56b12c9198b9b47.tar.gz
gcc-eae48192e4c70b47a2066650a56b12c9198b9b47.tar.bz2
S/390: Get rid of Y constraint in tabort.
This removes the Y constraint from the tabort pattern definition. In this case it is easier without using substitutions. gcc/ChangeLog: 2016-03-01 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * config/s390/s390.md ("*tabort_1"): Change predicate to nonmemory_operand. Add a second alternative to cover register as well as const int operands. ("*tabort_1_plus"): New pattern definition. From-SVN: r233846
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/s390/s390.md13
2 files changed, 18 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3178ba1..1699e1c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2016-03-01 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+ * config/s390/s390.md ("*tabort_1"): Change predicate to
+ nonmemory_operand. Add a second alternative to cover
+ register as well as const int operands.
+ ("*tabort_1_plus"): New pattern definition.
+
+2016-03-01 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
+
* config/s390/s390.md ("*ashrdi3_cc_31")
("*ashrdi3_cconly_31""*ashrdi3_cc_31_and")
("*ashrdi3_cconly_31_and", "*ashrdi3_31_and", "*ashrdi3_31"):
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index dd91383..ca58c42 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -10698,7 +10698,7 @@
; Transaction abort
(define_expand "tabort"
- [(unspec_volatile [(match_operand:SI 0 "shift_count_or_setmem_operand" "")]
+ [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand" "")]
UNSPECV_TABORT)]
"TARGET_HTM && operands != NULL"
{
@@ -10713,12 +10713,21 @@
})
(define_insn "*tabort_1"
- [(unspec_volatile [(match_operand:SI 0 "shift_count_or_setmem_operand" "Y")]
+ [(unspec_volatile [(match_operand:SI 0 "nonmemory_operand" "aJ")]
UNSPECV_TABORT)]
"TARGET_HTM && operands != NULL"
"tabort\t%Y0"
[(set_attr "op_type" "S")])
+(define_insn "*tabort_1_plus"
+ [(unspec_volatile [(plus:SI (match_operand:SI 0 "register_operand" "a")
+ (match_operand:SI 1 "const_int_operand" "J"))]
+ UNSPECV_TABORT)]
+ "TARGET_HTM && operands != NULL
+ && CONST_OK_FOR_CONSTRAINT_P (INTVAL (operands[1]), 'J', \"J\")"
+ "tabort\t%1(%0)"
+ [(set_attr "op_type" "S")])
+
; Transaction extract nesting depth
(define_insn "etnd"