Home | History | Annotate | Download | only in Analysis

Lines Matching refs:Op1

160   if (BinaryOperator *Op1 = dyn_cast<BinaryOperator>(RHS))
161 if (Op1->getOpcode() == OpcodeToExpand) {
163 Value *A = LHS, *B = Op1->getOperand(0), *C = Op1->getOperand(1);
198 BinaryOperator *Op1 = dyn_cast<BinaryOperator>(RHS);
201 !Op1 || Op1->getOpcode() != OpcodeToExtract)
206 Value *C = Op1->getOperand(0), *D = Op1->getOperand(1);
269 BinaryOperator *Op1 = dyn_cast<BinaryOperator>(RHS);
291 if (Op1 && Op1->getOpcode() == Opcode) {
293 Value *B = Op1->getOperand(0);
294 Value *C = Op1->getOperand(1);
333 if (Op1 && Op1->getOpcode() == Opcode) {
335 Value *B = Op1->getOperand(0);
336 Value *C = Op1->getOperand(1);
592 static Value *SimplifyAddInst(Value *Op0, Value *Op1, bool isNSW, bool isNUW,
595 if (Constant *CRHS = dyn_cast<Constant>(Op1)) {
602 std::swap(Op0, Op1);
606 if (match(Op1, m_Undef()))
607 return Op1;
610 if (match(Op1, m_Zero()))
617 if (match(Op1, m_Sub(m_Value(Y), m_Specific(Op0))) ||
618 match(Op0, m_Sub(m_Value(Y), m_Specific(Op1))))
622 if (match(Op0, m_Not(m_Specific(Op1))) ||
623 match(Op1, m_Not(m_Specific(Op0))))
628 if (Value *V = SimplifyXorInst(Op0, Op1, Q, MaxRecurse-1))
632 if (Value *V = SimplifyAssociativeBinOp(Instruction::Add, Op0, Op1, Q,
637 if (Value *V = FactorizeBinOp(Instruction::Add, Op0, Op1, Instruction::Mul,
653 Value *llvm::SimplifyAddInst(Value *Op0, Value *Op1, bool isNSW, bool isNUW,
656 return ::SimplifyAddInst(Op0, Op1, isNSW, isNUW, Query (TD, TLI, DT),
757 static Value *SimplifySubInst(Value *Op0, Value *Op1, bool isNSW, bool isNUW,
760 if (Constant *CRHS = dyn_cast<Constant>(Op1)) {
768 if (match(Op0, m_Undef()) || match(Op1, m_Undef()))
772 if (match(Op1, m_Zero()))
776 if (Op0 == Op1)
782 if (match(Op0, m_Mul(m_Specific(Op1), m_ConstantInt<2>())) ||
783 match(Op0, m_Shl(m_Specific(Op1), m_One())))
784 return Op1;
788 Value *Y = 0, *Z = Op1;
811 if (MaxRecurse && match(Op1, m_Add(m_Value(Y), m_Value(Z)))) { // X - (Y + Z)
833 if (MaxRecurse && match(Op1, m_Sub(m_Value(X), m_Value(Y)))) // Z - (X - Y)
845 match(Op1, m_Trunc(m_Value(Y))))
856 match(Op1, m_PtrToInt(m_Value(Y))))
861 if (Value *V = FactorizeBinOp(Instruction::Sub, Op0, Op1, Instruction::Mul,
867 if (Value *V = SimplifyXorInst(Op0, Op1, Q, MaxRecurse-1))
882 Value *llvm::SimplifySubInst(Value *Op0, Value *Op1, bool isNSW, bool isNUW,
885 return ::SimplifySubInst(Op0, Op1, isNSW, isNUW, Query (TD, TLI, DT),
891 static Value *SimplifyMulInst(Value *Op0, Value *Op1, const Query &Q,
894 if (Constant *CRHS = dyn_cast<Constant>(Op1)) {
901 std::swap(Op0, Op1);
905 if (match(Op1, m_Undef()))
909 if (match(Op1, m_Zero()))
910 return Op1;
913 if (match(Op1, m_One()))
918 if (match(Op0, m_Exact(m_IDiv(m_Value(X), m_Specific(Op1)))) || // (X / Y) * Y
919 match(Op1, m_Exact(m_IDiv(m_Value(X), m_Specific(Op0))))) // Y * (X / Y)
924 if (Value *V = SimplifyAndInst(Op0, Op1, Q, MaxRecurse-1))
928 if (Value *V = SimplifyAssociativeBinOp(Instruction::Mul, Op0, Op1, Q,
933 if (Value *V = ExpandBinOp(Instruction::Mul, Op0, Op1, Instruction::Add,
939 if (isa<SelectInst>(Op0) || isa<SelectInst>(Op1))
940 if (Value *V = ThreadBinOpOverSelect(Instruction::Mul, Op0, Op1, Q,
946 if (isa<PHINode>(Op0) || isa<PHINode>(Op1))
947 if (Value *V = ThreadBinOpOverPHI(Instruction::Mul, Op0, Op1, Q,
954 Value *llvm::SimplifyMulInst(Value *Op0, Value *Op1, const TargetData *TD,
957 return ::SimplifyMulInst(Op0, Op1, Query (TD, TLI, DT), RecursionLimit);
962 static Value *SimplifyDiv(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
965 if (Constant *C1 = dyn_cast<Constant>(Op1)) {
974 if (match(Op1, m_Undef()))
975 return Op1;
986 if (match(Op1, m_One()))
994 if (Op0 == Op1)
999 if (match(Op0, m_Mul(m_Value(X), m_Value(Y))) && (X == Op1 || Y == Op1)) {
1000 if (Y != Op1) std::swap(X, Y); // Ensure expression is (X * Y) / Y, Y = Op1
1013 if ((isSigned && match(Op0, m_SRem(m_Value(), m_Specific(Op1)))) ||
1014 (!isSigned && match(Op0, m_URem(m_Value(), m_Specific(Op1)))))
1019 if (isa<SelectInst>(Op0) || isa<SelectInst>(Op1))
1020 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1025 if (isa<PHINode>(Op0) || isa<PHINode>(Op1))
1026 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
1034 static Value *SimplifySDivInst(Value *Op0, Value *Op1, const Query &Q,
1036 if (Value *V = SimplifyDiv(Instruction::SDiv, Op0, Op1, Q, MaxRecurse))
1042 Value *llvm::SimplifySDivInst(Value *Op0, Value *Op1, const TargetData *TD,
1045 return ::SimplifySDivInst(Op0, Op1, Query (TD, TLI, DT), RecursionLimit);
1050 static Value *SimplifyUDivInst(Value *Op0, Value *Op1, const Query &Q,
1052 if (Value *V = SimplifyDiv(Instruction::UDiv, Op0, Op1, Q, MaxRecurse))
1058 Value *llvm::SimplifyUDivInst(Value *Op0, Value *Op1, const TargetData *TD,
1061 return ::SimplifyUDivInst(Op0, Op1, Query (TD, TLI, DT), RecursionLimit);
1064 static Value *SimplifyFDivInst(Value *Op0, Value *Op1, const Query &Q,
1071 if (match(Op1, m_Undef()))
1072 return Op1;
1077 Value *llvm::SimplifyFDivInst(Value *Op0, Value *Op1, const TargetData *TD,
1080 return ::SimplifyFDivInst(Op0, Op1, Query (TD, TLI, DT), RecursionLimit);
1085 static Value *SimplifyRem(Instruction::BinaryOps Opcode, Value *Op0, Value *Op1,
1088 if (Constant *C1 = dyn_cast<Constant>(Op1)) {
1095 if (match(Op1, m_Undef()))
1096 return Op1;
1107 if (match(Op1, m_Zero()))
1111 if (match(Op1, m_One()))
1119 if (Op0 == Op1)
1124 if (isa<SelectInst>(Op0) || isa<SelectInst>(Op1))
1125 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1130 if (isa<PHINode>(Op0) || isa<PHINode>(Op1))
1131 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
1139 static Value *SimplifySRemInst(Value *Op0, Value *Op1, const Query &Q,
1141 if (Value *V = SimplifyRem(Instruction::SRem, Op0, Op1, Q, MaxRecurse))
1147 Value *llvm::SimplifySRemInst(Value *Op0, Value *Op1, const TargetData *TD,
1150 return ::SimplifySRemInst(Op0, Op1, Query (TD, TLI, DT), RecursionLimit);
1155 static Value *SimplifyURemInst(Value *Op0, Value *Op1, const Query &Q,
1157 if (Value *V = SimplifyRem(Instruction::URem, Op0, Op1, Q, MaxRecurse))
1163 Value *llvm::SimplifyURemInst(Value *Op0, Value *Op1, const TargetData *TD,
1166 return ::SimplifyURemInst(Op0, Op1, Query (TD, TLI, DT), RecursionLimit);
1169 static Value *SimplifyFRemInst(Value *Op0, Value *Op1, const Query &,
1176 if (match(Op1, m_Undef()))
1177 return Op1;
1182 Value *llvm::SimplifyFRemInst(Value *Op0, Value *Op1, const TargetData *TD,
1185 return ::SimplifyFRemInst(Op0, Op1, Query (TD, TLI, DT), RecursionLimit);
1190 static Value *SimplifyShift(unsigned Opcode, Value *Op0, Value *Op1,
1193 if (Constant *C1 = dyn_cast<Constant>(Op1)) {
1204 if (match(Op1, m_Zero()))
1208 if (match(Op1, m_Undef()))
1209 return Op1;
1212 if (ConstantInt *CI = dyn_cast<ConstantInt>(Op1))
1219 if (isa<SelectInst>(Op0) || isa<SelectInst>(Op1))
1220 if (Value *V = ThreadBinOpOverSelect(Opcode, Op0, Op1, Q, MaxRecurse))
1225 if (isa<PHINode>(Op0) || isa<PHINode>(Op1))
1226 if (Value *V = ThreadBinOpOverPHI(Opcode, Op0, Op1, Q, MaxRecurse))
1234 static Value *SimplifyShlInst(Value *Op0, Value *Op1, bool isNSW, bool isNUW,
1236 if (Value *V = SimplifyShift(Instruction::Shl, Op0, Op1, Q, MaxRecurse))
1245 if (match(Op0, m_Exact(m_Shr(m_Value(X), m_Specific(Op1)))))
1250 Value *llvm::SimplifyShlInst(Value *Op0, Value *Op1, bool isNSW, bool isNUW,
1253 return ::SimplifyShlInst(Op0, Op1, isNSW, isNUW, Query (TD, TLI, DT),
1259 static Value *SimplifyLShrInst(Value *Op0, Value *Op1, bool isExact,
1261 if (Value *V = SimplifyShift(Instruction::LShr, Op0, Op1, Q, MaxRecurse))
1270 if (match(Op0, m_Shl(m_Value(X), m_Specific(Op1))) &&
1277 Value *llvm::SimplifyLShrInst(Value *Op0, Value *Op1, bool isExact,
1281 return ::SimplifyLShrInst(Op0, Op1, isExact, Query (TD, TLI, DT),
1287 static Value *SimplifyAShrInst(Value *Op0, Value *Op1, bool isExact,
1289 if (Value *V = SimplifyShift(Instruction::AShr, Op0, Op1, Q, MaxRecurse))
1302 if (match(Op0, m_Shl(m_Value(X), m_Specific(Op1))) &&
1309 Value *llvm::SimplifyAShrInst(Value *Op0, Value *Op1, bool isExact,
1313 return ::SimplifyAShrInst(Op0, Op1, isExact, Query (TD, TLI, DT),
1319 static Value *SimplifyAndInst(Value *Op0, Value *Op1, const Query &Q,
1322 if (Constant *CRHS = dyn_cast<Constant>(Op1)) {
1329 std::swap(Op0, Op1);
1333 if (match(Op1, m_Undef()))
1337 if (Op0 == Op1)
1341 if (match(Op1, m_Zero()))
1342 return Op1;
1345 if (match(Op1, m_AllOnes()))
1349 if (match(Op0, m_Not(m_Specific(Op1))) ||
1350 match(Op1, m_Not(m_Specific(Op0))))
1356 (A == Op1 || B == Op1))
1357 return Op1;
1360 if (match(Op1, m_Or(m_Value(A), m_Value(B))) &&
1365 if (match(Op0, m_Neg(m_Specific(Op1))) ||
1366 match(Op1, m_Neg(m_Specific(Op0)))) {
1369 if (isPowerOfTwo(Op1, Q.TD, /*OrZero*/true))
1370 return Op1;
1374 if (Value *V = SimplifyAssociativeBinOp(Instruction::And, Op0, Op1, Q,
1379 if (Value *V = ExpandBinOp(Instruction::And, Op0, Op1, Instruction::Or,
1384 if (Value *V = ExpandBinOp(Instruction::And, Op0, Op1, Instruction::Xor,
1389 if (Value *V = FactorizeBinOp(Instruction::And, Op0, Op1, Instruction::Or,
1395 if (isa<SelectInst>(Op0) || isa<SelectInst>(Op1))
1396 if (Value *V = ThreadBinOpOverSelect(Instruction::And, Op0, Op1, Q,
1402 if (isa<PHINode>(Op0) || isa<PHINode>(Op1))
1403 if (Value *V = ThreadBinOpOverPHI(Instruction::And, Op0, Op1, Q,
1410 Value *llvm::SimplifyAndInst(Value *Op0, Value *Op1, const TargetData *TD,
1413 return ::SimplifyAndInst(Op0, Op1, Query (TD, TLI, DT), RecursionLimit);
1418 static Value *SimplifyOrInst(Value *Op0, Value *Op1, const Query &Q,
1421 if (Constant *CRHS = dyn_cast<Constant>(Op1)) {
1428 std::swap(Op0, Op1);
1432 if (match(Op1, m_Undef()))
1436 if (Op0 == Op1)
1440 if (match(Op1, m_Zero()))
1444 if (match(Op1, m_AllOnes()))
1445 return Op1;
1448 if (match(Op0, m_Not(m_Specific(Op1))) ||
1449 match(Op1, m_Not(m_Specific(Op0))))
1455 (A == Op1 || B == Op1))
1456 return Op1;
1459 if (match(Op1, m_And(m_Value(A), m_Value(B))) &&
1465 (A == Op1 || B == Op1))
1466 return Constant::getAllOnesValue(Op1->getType());
1469 if (match(Op1, m_Not(m_And(m_Value(A), m_Value(B)))) &&
1474 if (Value *V = SimplifyAssociativeBinOp(Instruction::Or, Op0, Op1, Q,
1479 if (Value *V = ExpandBinOp(Instruction::Or, Op0, Op1, Instruction::And, Q,
1484 if (Value *V = FactorizeBinOp(Instruction::Or, Op0, Op1, Instruction::And,
1490 if (isa<SelectInst>(Op0) || isa<SelectInst>(Op1))
1491 if (Value *V = ThreadBinOpOverSelect(Instruction::Or, Op0, Op1, Q,
1497 if (isa<PHINode>(Op0) || isa<PHINode>(Op1))
1498 if (Value *V = ThreadBinOpOverPHI(Instruction::Or, Op0, Op1, Q, MaxRecurse))
1504 Value *llvm::SimplifyOrInst(Value *Op0, Value *Op1, const TargetData *TD,
1507 return ::SimplifyOrInst(Op0, Op1, Query (TD, TLI, DT), RecursionLimit);
1512 static Value *SimplifyXorInst(Value *Op0, Value *Op1, const Query &Q,
1515 if (Constant *CRHS = dyn_cast<Constant>(Op1)) {
1522 std::swap(Op0, Op1);
1526 if (match(Op1, m_Undef()))
1527 return Op1;
1530 if (match(Op1, m_Zero()))
1534 if (Op0 == Op1)
1538 if (match(Op0, m_Not(m_Specific(Op1))) ||
1539 match(Op1, m_Not(m_Specific(Op0))))
1543 if (Value *V = SimplifyAssociativeBinOp(Instruction::Xor, Op0, Op1, Q,
1548 if (Value *V = FactorizeBinOp(Instruction::Xor, Op0, Op1, Instruction::And,
1564 Value *llvm::SimplifyXorInst(Value *Op0, Value *Op1, const TargetData *TD,
1567 return ::SimplifyXorInst(Op0, Op1, Query (TD, TLI, DT), RecursionLimit);