Hi,

this allows immediates in the load-on-condition expander on z13 or later.

Regtested on z14.

Regards
 Robin

--

gcc/ChangeLog:

2018-10-17  Robin Dapp  <rd...@linux.ibm.com>

        * config/s390/predicates.md:
        Allow immediate operand in loc_operand for z13.
        * config/s390/s390.md: Use loc_operand instead of nonimmediate_operand.
diff --git a/gcc/config/s390/predicates.md b/gcc/config/s390/predicates.md
index 98a824e77b7..b4e7724c265 100644
--- a/gcc/config/s390/predicates.md
+++ b/gcc/config/s390/predicates.md
@@ -216,8 +216,9 @@
 
 (define_predicate "loc_operand"
   (ior (match_operand 0 "nonimmediate_operand")
-      (and (match_code "const_int")
-	   (match_test "INTVAL (op) <= 32767 && INTVAL (op) >= -32768"))))
+      (and (match_test "TARGET_Z13")
+       (and (match_code "const_int")
+	(match_test "INTVAL (op) <= 32767 && INTVAL (op) >= -32768")))))
 
 (define_predicate "reload_const_wide_int_operand"
   (and (match_code "const_wide_int")
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 3bd18acb456..70a619f06f5 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -6583,7 +6583,7 @@
   [(set (match_operand:GPR 0 "nonimmediate_operand" "")
 	(if_then_else:GPR (match_operand 1 "comparison_operator" "")
 			  (match_operand:GPR 2 "nonimmediate_operand" "")
-			  (match_operand:GPR 3 "nonimmediate_operand" "")))]
+			  (match_operand:GPR 3 "loc_operand" "")))]
   "TARGET_Z196"
 {
   /* Emit the comparison insn in case we do not already have a comparison result.  */

Reply via email to