[PATCH] D152568: [InstCombine] Transform `(binop1 (binop2 (lshift X,Amt),Mask),(lshift Y,Amt))`
Nikita Popov via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 12 12:07:18 PDT 2023
nikic accepted this revision.
nikic added a comment.
This revision is now accepted and ready to land.
LGTM
================
Comment at: llvm/lib/Transforms/InstCombine/InstructionCombining.cpp:772
+
+ // If BinOp2 is `and`, and mask works (this only really helps for non-splat
+ // vecs, otherwise the mask will be simplified and the following check will
----------------
and -> any?
================
Comment at: llvm/test/Transforms/InstCombine/or-shifted-masks.ll:133
; CHECK-NEXT: [[I4:%.*]] = and i32 [[I3]], 480
; CHECK-NEXT: [[I5:%.*]] = or i32 [[I4]], [[I2]]
; CHECK-NEXT: br label [[END:%.*]]
----------------
This highlights another possible extension: We can have an extra binop on both sides, not just on one.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D152568/new/
https://reviews.llvm.org/D152568
More information about the llvm-commits
mailing list