Skip to content

Commit 1ec984a

Browse files
author
Macsen Casaus
committed
match V1 as constant
1 parent 039432c commit 1ec984a

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

llvm/lib/Transforms/InstCombine/InstructionCombining.cpp

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1358,34 +1358,33 @@ Value *InstCombinerImpl::SimplifySelectsFeedingBinaryOp(BinaryOperator &I,
13581358
if (Opcode != Instruction::Or)
13591359
return nullptr;
13601360

1361+
const APInt *C1;
1362+
if (!match(V1, m_APInt(C1)))
1363+
return nullptr;
1364+
13611365
Value *X;
1362-
const APInt *C;
1363-
if (!match(Masked, m_OneUse(m_And(m_Value(X), m_APInt(C)))))
1366+
const APInt *Mask;
1367+
if (!match(Masked, m_OneUse(m_And(m_Value(X), m_APInt(Mask)))))
13641368
return nullptr;
13651369

13661370
const APInt *V2;
13671371
Value *Trunc;
1368-
if (!match(ZExtSel,
1369-
m_ZExt(m_OneUse(m_Select(m_Specific(Cond), m_APInt(V2),
1370-
m_Value(Trunc))))))
1372+
if (!match(ZExtSel, m_ZExt(m_OneUse(m_Select(m_Specific(Cond), m_APInt(V2),
1373+
m_Value(Trunc))))))
13711374
return nullptr;
13721375

1373-
if (*C != APInt::getBitsSetFrom(X->getType()->getScalarSizeInBits(),
1374-
Trunc->getType()->getScalarSizeInBits())) {
1376+
if (*Mask != APInt::getBitsSetFrom(X->getType()->getScalarSizeInBits(),
1377+
Trunc->getType()->getScalarSizeInBits()))
13751378
return nullptr;
1376-
}
13771379

13781380
if (!match(Trunc, m_Trunc(m_Specific(X))))
13791381
return nullptr;
13801382

13811383
unsigned V1Width = V1->getType()->getScalarSizeInBits();
1382-
APInt ZextV2 = V2->zext(V1Width);
1383-
Value *True = simplifyBinOp(
1384-
Opcode, V1, ConstantInt::get(V1->getType(), ZextV2), FMF, Q);
1385-
if (!True)
1386-
return nullptr;
13871384

1388-
return Builder.CreateSelect(Cond, True, X, I.getName());
1385+
return Builder.CreateSelect(
1386+
Cond, ConstantInt::get(V1->getType(), *C1 | V2->zext(V1Width)), X,
1387+
I.getName());
13891388
};
13901389

13911390
if (LHSIsSelect && RHSIsSelect && A == D) {

0 commit comments

Comments
 (0)