This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH 6/9] S/390: Get rid of Y constraint in tabort.
- From: Andreas Krebbel <krebbel at linux dot vnet dot ibm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 14 Jan 2016 17:33:31 +0100
- Subject: [PATCH 6/9] S/390: Get rid of Y constraint in tabort.
- Authentication-results: sourceware.org; auth=none
- References: <1452789254-12603-1-git-send-email-krebbel at linux dot vnet dot ibm dot com>
This removes the Y constraint from the tabort pattern definition. In
this case it is easier without using substitutions.
gcc/ChangeLog:
2016-01-14 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* config/s390/s390.md ("*tabort_1"): Change predicate to
addrreg_or_constint_operand. Add a second alternative to cover
register as well as const int operands.
("*tabort_1_plus"): New pattern definition.
---
gcc/config/s390/s390.md | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index f91c92d..389b523 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -10697,10 +10697,20 @@
})
(define_insn "*tabort_1"
- [(unspec_volatile [(match_operand:SI 0 "shift_count_or_setmem_operand" "Y")]
+ [(unspec_volatile [(match_operand:SI 0 "addrreg_or_constint_operand" "a,n")]
UNSPECV_TABORT)]
"TARGET_HTM && operands != NULL"
- "tabort\t%Y0"
+ "@
+ tabort\t0(%0)
+ tabort\t%0"
+ [(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"
+ "tabort\t%1(%0)"
[(set_attr "op_type" "S")])
; Transaction extract nesting depth
--
1.9.1