Home | History | Annotate | Download | only in InstCombine

Lines Matching defs:Op0I

1128     if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0)) {
1129 Value *Op0LHS = Op0I->getOperand(0);
1130 Value *Op0RHS = Op0I->getOperand(1);
1131 switch (Op0I->getOpcode()) {
1136 if (!Op0I->hasOneUse()) break;
1143 return BinaryOperator::Create(Op0I->getOpcode(), Op0LHS, NewRHS);
1150 return BinaryOperator::Create(Op0I->getOpcode(), NewLHS, Op0RHS);
1174 if (Op0I->hasOneUse() && !match(Op0LHS, m_Zero())) {
1198 if (ConstantInt *Op0CI = dyn_cast<ConstantInt>(Op0I->getOperand(1)))
1199 if (Instruction *Res = OptAndOp(Op0I, Op0CI, AndRHS, I))
2242 if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(NotOp)) {
2243 if (Op0I->getOpcode() == Instruction::And ||
2244 Op0I->getOpcode() == Instruction::Or) {
2247 if (dyn_castNotVal(Op0I->getOperand(1)))
2248 Op0I->swapOperands();
2249 if (Value *Op0NotVal = dyn_castNotVal(Op0I->getOperand(0))) {
2251 Builder->CreateNot(Op0I->getOperand(1),
2252 Op0I->getOperand(1)->getName()+".not");
2253 if (Op0I->getOpcode() == Instruction::And)
2260 if (isFreeToInvert(Op0I->getOperand(0)) &&
2261 isFreeToInvert(Op0I->getOperand(1))) {
2263 Builder->CreateNot(Op0I->getOperand(0), "notlhs");
2265 Builder->CreateNot(Op0I->getOperand(1), "notrhs");
2266 if (Op0I->getOpcode() == Instruction::And)
2271 } else if (Op0I->getOpcode() == Instruction::AShr) {
2273 if (Value *Op0NotVal = dyn_castNotVal(Op0I->getOperand(0)))
2274 return BinaryOperator::CreateAShr(Op0NotVal, Op0I->getOperand(1));
2303 if (BinaryOperator *Op0I = dyn_cast<BinaryOperator>(Op0)) {
2305 if (Op0I->getOpcode() == Instruction::Sub && RHS->isAllOnesValue())
2306 if (Constant *Op0I0C = dyn_cast<Constant>(Op0I->getOperand(0))) {
2310 return BinaryOperator::CreateAdd(Op0I->getOperand(1), ConstantRHS);
2313 if (ConstantInt *Op0CI = dyn_cast<ConstantInt>(Op0I->getOperand(1))) {
2314 if (Op0I->getOpcode() == Instruction::Add) {
2321 Op0I->getOperand(0));
2325 return BinaryOperator::CreateAdd(Op0I->getOperand(0), C);
2328 } else if (Op0I->getOpcode() == Instruction::Or) {
2330 if (MaskedValueIsZero(Op0I->getOperand(0), Op0CI->getValue())) {
2337 Worklist.Add(Op0I);
2338 I.setOperand(0, Op0I->getOperand(0));
2342 } else if (Op0I->getOpcode() == Instruction::LShr) {
2347 if (Op0I->hasOneUse() &&
2348 (E1 = dyn_cast<BinaryOperator>(Op0I->getOperand(0))) &&
2357 Opnd0->takeName(Op0I);
2401 Op0I = dyn_cast<BinaryOperator>(Op0);
2402 if (Op0I) {
2404 if (match(Op0I, m_Or(m_Value(A), m_Value(B))) &&
2405 Op0I->hasOneUse()) {
2410 } else if (match(Op0I, m_And(m_Value(A), m_Value(B))) &&
2411 Op0I->hasOneUse()){
2422 if (Op0I && Op1I && Op0I->isShift() &&
2423 Op0I->getOpcode() == Op1I->getOpcode() &&
2424 Op0I->getOperand(1) == Op1I->getOperand(1) &&
2425 (Op0I->hasOneUse() || Op1I->hasOneUse())) {
2427 Builder->CreateXor(Op0I->getOperand(0), Op1I->getOperand(0),
2428 Op0I->getName());
2433 if (Op0I && Op1I) {
2436 if (match(Op0I, m_And(m_Value(A), m_Value(B))) &&
2442 if (match(Op0I, m_Or(m_Value(A), m_Value(B))) &&