summaryrefslogtreecommitdiff
path: root/gcc/config/s390/constraints.md
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2012-12-20 18:04:41 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2012-12-20 18:04:41 +0000
commit0d46035f9a11bc6bbb2cd690e86c97aff42d603c (patch)
treecc7a0724b4d6f5f4a3e6acde62660e3da29e0907 /gcc/config/s390/constraints.md
parent82e573d8b268315ad23f9fb032524c19853a5908 (diff)
downloadgcc-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.md11
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.