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
This commit is contained in:
Andreas Krebbel 2016-03-01 09:24:29 +00:00 committed by Andreas Krebbel
parent a9fcf821eb
commit eae48192e4
2 changed files with 18 additions and 2 deletions

View File

@ -1,3 +1,10 @@
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")

View File

@ -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"