Lines Matching defs:N2
91 ForeachNumInKnownBits(Known2, [&](const APInt &N2) {
92 if (std::optional<APInt> Res = IntFn(N1, N2)) {
127 ForeachNumInKnownBits(Known2, [&](const APInt &N2) {
129 APInt Add = N1 + N2;
166 ForeachNumInKnownBits(Known2, [&](const APInt &N2) {
171 Res = N1.uadd_ov(N2, UnsignedOverflow);
172 Res = N1.sadd_ov(N2, SignedOverflow);
174 Res = N1.usub_ov(N2, UnsignedOverflow);
175 Res = N1.ssub_ov(N2, SignedOverflow);
240 ForeachNumInKnownBits(Known2, [&](const APInt &N2) {
242 APInt Sub = N1 - N2;
290 [](const APInt &N1, const APInt &N2) { return N1 & N2; });
296 [](const APInt &N1, const APInt &N2) { return N1 | N2; });
302 [](const APInt &N1, const APInt &N2) { return N1 ^ N2; });
308 [](const APInt &N1, const APInt &N2) { return N1 + N2; });
314 [](const APInt &N1, const APInt &N2) { return N1 - N2; });
326 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
327 if (N2.isZero())
329 return N1.udiv(N2);
337 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
338 if (N2.isZero() || !N1.urem(N2).isZero())
340 return N1.udiv(N2);
348 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
349 if (N2.isZero() || (N1.isMinSignedValue() && N2.isAllOnes()))
351 return N1.sdiv(N2);
359 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
360 if (N2.isZero() || (N1.isMinSignedValue() && N2.isAllOnes()) ||
361 !N1.srem(N2).isZero())
363 return N1.sdiv(N2);
368 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
369 if (N2.isZero())
371 return N1.urem(N2);
376 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
377 if (N2.isZero())
379 return N1.srem(N2);
384 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
385 return N1.sadd_sat(N2);
389 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
390 return N1.uadd_sat(N2);
394 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
395 return N1.ssub_sat(N2);
399 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
400 return N1.usub_sat(N2);
407 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
408 if (N2.uge(N2.getBitWidth()))
410 return N1.shl(N2);
418 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
420 APInt Res = N1.ushl_ov(N2, Overflow);
431 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
433 APInt Res = N1.sshl_ov(N2, Overflow);
444 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
446 APInt Res = N1.ushl_ov(N2, OverflowUnsigned);
447 (void)N1.sshl_ov(N2, OverflowSigned);
459 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
460 if (N2.uge(N2.getBitWidth()))
462 return N1.lshr(N2);
471 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
472 if (N2.uge(N2.getBitWidth()))
474 if (!N1.extractBits(N2.getZExtValue(), 0).isZero())
476 return N1.lshr(N2);
484 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
485 if (N2.uge(N2.getBitWidth()))
487 return N1.ashr(N2);
496 [](const APInt &N1, const APInt &N2) -> std::optional<APInt> {
497 if (N2.uge(N2.getBitWidth()))
499 if (!N1.extractBits(N2.getZExtValue(), 0).isZero())
501 return N1.ashr(N2);
509 [](const APInt &N1, const APInt &N2) { return N1 * N2; },
513 [](const APInt &N1, const APInt &N2) { return APIntOps::mulhs(N1, N2); },
517 [](const APInt &N1, const APInt &N2) { return APIntOps::mulhu(N1, N2); },
589 ForeachNumInKnownBits(Known2, [&](const APInt &N2) {
590 AllEQ &= N1.eq(N2);
591 AllNE &= N1.ne(N2);
592 AllUGT &= N1.ugt(N2);
593 AllUGE &= N1.uge(N2);
594 AllULT &= N1.ult(N2);
595 AllULE &= N1.ule(N2);
596 AllSGT &= N1.sgt(N2);
597 AllSGE &= N1.sge(N2);
598 AllSLT &= N1.slt(N2);
599 AllSLE &= N1.sle(N2);
600 NoneEQ &= !N1.eq(N2);
601 NoneNE &= !N1.ne(N2);
602 NoneUGT &= !N1.ugt(N2);
603 NoneUGE &= !N1.uge(N2);
604 NoneULT &= !N1.ult(N2);
605 NoneULE &= !N1.ule(N2);
606 NoneSGT &= !N1.sgt(N2);
607 NoneSGE &= !N1.sge(N2);
608 NoneSLT &= !N1.slt(N2);
609 NoneSLE &= !N1.sle(N2);
777 ForeachNumInKnownBits(Known2, [&](const APInt &N2) {
778 HasCommonBitsSet |= N1.intersects(N2);
824 ForeachNumInKnownBits(Known2, [&](const APInt &N2) {
825 APInt Res = N1 * N2;