I was wondering if it was a good idea to implement
predicate on expressions ?

Sth like:
(match_and_simplify
  (op (op2:predicate @0))
  transform)

instead of:
(match_and_simplify
  (op (op2@1 @0))
  if (predicate (@1))
  transform)

When predicate is simple as just being a macro/function,
we could use this style and when the predicate is more complex
resort to using if-expr (or write the predicate as macro in gimple-match-head.c
and use the macro in pattern instead ...)

Example:
we could rewrite the pattern
(match_and_simplify
  (plus:c @0 (negate @1))
  if (!TYPE_SATURATING (type))
  (minus @0 @1))

to

(match_and_simplify
  (plus:c:NOT_TYPE_SATURATING_P @0 (negate @1))
  (minus @0 @1))

with NOT_TYPE_SATURATING_P predicate defined
appropriately in gimple-match-head.c

However I am not entirely sure if adding predicates on expressions
would be very useful....

Thanks and Regards,
Prathamesh

Reply via email to