diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3178ba110e54..1699e1cd710e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-03-01 Andreas Krebbel + + * 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 * config/s390/s390.md ("*ashrdi3_cc_31") diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index dd91383b11be..ca58c42fe4c8 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"