This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2/4] match.pd: Add x & ~(x & y) -> x & ~y pattern


Hello,

(sorry for the broken thread, for some reason I haven't received any email from gcc since about 10am, I'll investigate later)

+/* x & ~(x & y) -> x & ~y */
+(simplify
+ (bit_and:c @0 (bit_not (bit_and:c@2 @0 @1)))
+ (if (TREE_CODE (@2) != SSA_NAME || has_single_use (@2))
+  (bit_and @0 (bit_not @1))))

Wouldn't it make more sense to put @2 on bit_not? If bit_and is used multiple times, the transformation is neutral so it should be done as a canonicalization. On the other hand, if bit_not is used multiple times, the transformation adds an extra bit_not (which might be free when there is an andn insn). So I believe the 2 main options are:
- move @2 on the bit_not
- don't test has_single_use at all

--
Marc Glisse


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]