diff options
author | Andreas Krebbel <krebbel@linux.vnet.ibm.com> | 2016-03-01 09:21:23 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2016-03-01 09:21:23 +0000 |
commit | 191eb16d3adfc397f63d63c2bafa9be187f9f054 (patch) | |
tree | 7e280c310a8ce6431854ec7979908ba61c019e32 /gcc/config/s390/constraints.md | |
parent | 62d3f2615c6b22bf424ad17675d47b146d0dcfaa (diff) | |
download | gcc-191eb16d3adfc397f63d63c2bafa9be187f9f054.zip gcc-191eb16d3adfc397f63d63c2bafa9be187f9f054.tar.gz gcc-191eb16d3adfc397f63d63c2bafa9be187f9f054.tar.bz2 |
S/390: Get rid of Y constraint in rotate patterns.
This patch introduces substitution patterns to add PLUS const_int, and
AND operands to patterns and uses this to rewrite the existing rotate
pattern.
gcc/ChangeLog:
2016-03-01 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* config/s390/predicates.md (const_int_6bitset_operand): New
predicates.
* config/s390/s390.md: Include subst.md.
("rotl<mode>3"): New expander.
("rotl<mode>3", "*rotl<mode>3_and"): Merge insn definitions into
...
("*rotl<mode>3<addr_style_op><masked_op>"): New insn definition.
* config/s390/subst.md: New file.
From-SVN: r233843
Diffstat (limited to 'gcc/config/s390/constraints.md')
-rw-r--r-- | gcc/config/s390/constraints.md | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/config/s390/constraints.md b/gcc/config/s390/constraints.md index c1d2c8e..60a7edf 100644 --- a/gcc/config/s390/constraints.md +++ b/gcc/config/s390/constraints.md @@ -36,6 +36,7 @@ ;; jyy: constant consisting of byte chunks being either 0 or 0xff ;; jKK: constant vector with all elements having the same value and ;; matching K constraint +;; jm6: An integer operand with the lowest order 6 bits all ones. ;; t -- Access registers 36 and 37. ;; v -- Vector registers v0-v31. ;; C -- A signed 8-bit constant (-128..127) @@ -415,6 +416,9 @@ (match_test "const_vec_duplicate_p (op)")) (match_test "satisfies_constraint_K (XVECEXP (op, 0, 0))"))) +(define_constraint "jm6" + "@internal An integer operand with the lowest order 6 bits all ones." + (match_operand 0 "const_int_6bitset_operand")) ;; ;; Memory constraints follow. |