[PATCH] D129844: [InstCombine] Restrict "(X & 0xFF00) + xx00 --> (X + xx00) & 0xFF00"
Piotr Sobczak via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 15 05:06:13 PDT 2022
piotr updated this revision to Diff 444945.
piotr added a comment.
Rebased on top of 2d9332646a9c <https://reviews.llvm.org/rG2d9332646a9c37eb2934a4370a57ead2aece706f>.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D129844/new/
https://reviews.llvm.org/D129844
Files:
llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
llvm/test/Transforms/InstCombine/add.ll
Index: llvm/test/Transforms/InstCombine/add.ll
===================================================================
--- llvm/test/Transforms/InstCombine/add.ll
+++ llvm/test/Transforms/InstCombine/add.ll
@@ -761,8 +761,8 @@
define i8 @masked_add_multi_use(i8 %x) {
; CHECK-LABEL: @masked_add_multi_use(
-; CHECK-NEXT: [[TMP:%.*]] = add i8 [[X:%.*]], 96
-; CHECK-NEXT: [[R:%.*]] = and i8 [[TMP:%.*]], -16
+; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], -16
+; CHECK-NEXT: [[R:%.*]] = add i8 [[AND]], 96
; CHECK-NEXT: call void @use(i8 [[X]])
; CHECK-NEXT: ret i8 [[R]]
;
Index: llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
===================================================================
--- llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
+++ llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
@@ -972,7 +972,7 @@
// If all bits affected by the add are included in a high-bit-mask, do the
// add before the mask op:
// (X & 0xFF00) + xx00 --> (X + xx00) & 0xFF00
- if (match(Op0, m_OneUse(m_And(m_Value(X), m_APInt(C2)))) &&
+ if (match(Op0, m_OneUse(m_And(m_OneUse(m_Value(X)), m_APInt(C2)))) &&
C2->isNegative() && C2->isShiftedMask() && *C == (*C & *C2)) {
Value *NewAdd = Builder.CreateAdd(X, ConstantInt::get(Ty, *C));
return BinaryOperator::CreateAnd(NewAdd, ConstantInt::get(Ty, *C2));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D129844.444945.patch
Type: text/x-patch
Size: 1365 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220715/1a16357b/attachment.bin>
More information about the llvm-commits
mailing list