[llvm] [InstCombine] Canonicalize `icmp eq/ne (A ^ C), B` to `icmp eq/ne (A ^ B), C` (PR #67273)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 25 12:27:52 PDT 2023


================
@@ -83,8 +83,8 @@ define i1 @cmpeq_xor_cst1_multiuse(i32 %a, i32 %b) {
 
 define i1 @cmpeq_xor_cst1_commuted(i32 %a, i32 %b) {
 ; CHECK-LABEL: @cmpeq_xor_cst1_commuted(
-; CHECK-NEXT:    [[C:%.*]] = xor i32 [[A:%.*]], 10
-; CHECK-NEXT:    [[CMP:%.*]] = icmp eq i32 [[C]], [[B:%.*]]
----------------
nikic wrote:

Not actually commuted. You need "thwart complexity-based canonicalization".

https://github.com/llvm/llvm-project/pull/67273


More information about the llvm-commits mailing list