summaryrefslogtreecommitdiff
path: root/gcc/config/s390/constraints.md
diff options
context:
space:
mode:
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.