Commit e8af134
authored
[InstCombine] Generalize trunc-shift-icmp fold from (1 << Y) to (Pow2 << Y) (llvm#169163)
Extends the `icmp(trunc(shl))` fold to handle any power of 2 constant as
the shift base, not just 1. This generalizes the following patterns by
adjusting the comparison offsets by `log2(Pow2)`.
```llvm
(trunc (1 << Y) to iN) == 0 --> Y u>= N
(trunc (1 << Y) to iN) != 0 --> Y u< N
(trunc (1 << Y) to iN) == 2**C --> Y == C
(trunc (1 << Y) to iN) != 2**C --> Y != C
; to
(trunc (Pow2 << Y) to iN) == 0 --> Y u>= N - log2(Pow2)
(trunc (Pow2 << Y) to iN) != 0 --> Y u< N - log2(Pow2)
(trunc (Pow2 << Y) to iN) == 2**C --> Y == C - log2(Pow2)
(trunc (Pow2 << Y) to iN) != 2**C --> Y != C - log2(Pow2)
```
Proof: https://alive2.llvm.org/ce/z/2zwTkp1 parent cc4dd01 commit e8af134
File tree
2 files changed
+51
-41
lines changed- llvm
- lib/Transforms/InstCombine
- test/Transforms/InstCombine
2 files changed
+51
-41
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1465 | 1465 | | |
1466 | 1466 | | |
1467 | 1467 | | |
1468 | | - | |
1469 | 1468 | | |
1470 | 1469 | | |
1471 | | - | |
1472 | | - | |
1473 | | - | |
| 1470 | + | |
| 1471 | + | |
| 1472 | + | |
| 1473 | + | |
| 1474 | + | |
| 1475 | + | |
1474 | 1476 | | |
1475 | 1477 | | |
1476 | | - | |
| 1478 | + | |
| 1479 | + | |
1477 | 1480 | | |
1478 | | - | |
1479 | | - | |
| 1481 | + | |
| 1482 | + | |
1480 | 1483 | | |
1481 | | - | |
| 1484 | + | |
| 1485 | + | |
1482 | 1486 | | |
1483 | 1487 | | |
1484 | 1488 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
407 | 407 | | |
408 | 408 | | |
409 | 409 | | |
410 | | - | |
411 | | - | |
412 | 410 | | |
413 | 411 | | |
414 | | - | |
415 | | - | |
416 | | - | |
| 412 | + | |
417 | 413 | | |
418 | 414 | | |
419 | 415 | | |
| |||
424 | 420 | | |
425 | 421 | | |
426 | 422 | | |
427 | | - | |
428 | | - | |
429 | | - | |
| 423 | + | |
430 | 424 | | |
431 | 425 | | |
432 | 426 | | |
| |||
450 | 444 | | |
451 | 445 | | |
452 | 446 | | |
453 | | - | |
454 | | - | |
455 | | - | |
| 447 | + | |
456 | 448 | | |
457 | 449 | | |
458 | 450 | | |
| |||
461 | 453 | | |
462 | 454 | | |
463 | 455 | | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
464 | 466 | | |
465 | 467 | | |
466 | 468 | | |
| |||
507 | 509 | | |
508 | 510 | | |
509 | 511 | | |
510 | | - | |
511 | | - | |
512 | | - | |
513 | | - | |
514 | | - | |
515 | | - | |
516 | | - | |
517 | | - | |
518 | | - | |
519 | | - | |
520 | | - | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
521 | 515 | | |
522 | 516 | | |
523 | 517 | | |
| |||
526 | 520 | | |
527 | 521 | | |
528 | 522 | | |
529 | | - | |
530 | | - | |
531 | | - | |
532 | | - | |
533 | | - | |
534 | | - | |
535 | | - | |
536 | | - | |
537 | | - | |
538 | | - | |
539 | | - | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
540 | 526 | | |
541 | 527 | | |
542 | 528 | | |
543 | 529 | | |
544 | 530 | | |
545 | 531 | | |
546 | 532 | | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
547 | 553 | | |
548 | 554 | | |
549 | 555 | | |
| |||
0 commit comments