diff options
author | Andreas Krebbel <krebbel@linux.vnet.ibm.com> | 2016-03-01 09:24:29 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2016-03-01 09:24:29 +0000 |
commit | eae48192e4c70b47a2066650a56b12c9198b9b47 (patch) | |
tree | 353b1fe4237ab94160fa971d36a00650ad2e8678 /gcc | |
parent | a9fcf821ebc87275f31d4f145b6cb85f1bb79237 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 13 |
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" |