diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-20 18:04:41 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-12-20 18:04:41 +0000 |
commit | 0d46035f9a11bc6bbb2cd690e86c97aff42d603c (patch) | |
tree | cc7a0724b4d6f5f4a3e6acde62660e3da29e0907 /gcc/config/s390/constraints.md | |
parent | 82e573d8b268315ad23f9fb032524c19853a5908 (diff) | |
download | gcc-0d46035f9a11bc6bbb2cd690e86c97aff42d603c.tar.gz |
s390: Constraints, predicates, and op letters for contiguous bitmasks
* config/s390/constraints.md (NxxDq, NxxSq): New.
* config/s390/predicates.md (contiguous_bitmask_operand): New.
* config/s390/s390.c (print_operand) ['e', 'f', 's', 't']: New
operand letters.
* config/s390/s390.md (bfstart, bfend): New mode attrs.
(*insv<GPR>_zEC12_noshift): Use them.
(*insv<GPR>_z10_noshift): Likewise.
(*insv<GPR>_or_z10_noshift): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@194640 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/s390/constraints.md')
-rw-r--r-- | gcc/config/s390/constraints.md | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/config/s390/constraints.md b/gcc/config/s390/constraints.md index 8564b6619a5..9d416adb165 100644 --- a/gcc/config/s390/constraints.md +++ b/gcc/config/s390/constraints.md @@ -45,6 +45,8 @@ ;; H,Q: mode of the part ;; D,S,H: mode of the containing operand ;; 0,F: value of the other parts (F - all bits set) +;; -- +;; xx[DS]q satisfies s390_contiguous_bitmask_p for DImode or SImode ;; ;; The constraint matches if the specified part of a constant ;; has a value different from its other parts. If the letter x @@ -330,8 +332,15 @@ (and (match_code "const_int") (match_test "s390_N_constraint_str (\"xQH0\", ival)"))) +(define_constraint "NxxDq" + "@internal" + (and (match_code "const_int") + (match_test "s390_contiguous_bitmask_p (ival, 64, NULL, NULL)"))) - +(define_constraint "NxxSq" + "@internal" + (and (match_code "const_int") + (match_test "s390_contiguous_bitmask_p (ival, 32, NULL, NULL)"))) ;; ;; Double-letter constraints starting with O follow. |