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. */