On Fri, 18 Sep 2015, Michael Collison wrote:

Can you elaborate on merging the patterns using 'ext' as mentioned in your post? I don't see any documentation or examples.

https://gcc.gnu.org/onlinedocs/gccint/The-Language.html
"for" lets you iterate on several variables at the same time.

For instance,

(for bitop (bit_and bit_ior)
     rbitop (bit_ior bit_and)
 (simplify
  (bitop:c (rbitop:c @0 @1) (bit_not@2 @0))
  (bitop @1 @2)))

expands to

(simplify
 (bit_and:c (bit_ior:c @0 @1) (bit_not@2 @0))
 (bit_and @1 @2))
(simplify
 (bit_ior:c (bit_and:c @0 @1) (bit_not@2 @0))
 (bit_ior @1 @2))

there are other examples using

(for cmp (eq ne)
     icmp (ne eq)

or

(for cmp (simple_comparison)
     scmp (swapped_simple_comparison)

and you can have repetitions

(for logs (LOG LOG
           LOG2 LOG2
           LOG10 LOG10)
     exps (SQRT CBRT)

(the iteration wraps around for exps).

--
Marc Glisse

Reply via email to