llvm-project/llvm/test/Transforms/GVN/fold-const-expr.ll
Antonio Frighetto f76921ac0d
[GVN] Regenerate test checks to use UTC (NFC)
Tests have been regenerated to favour UTC-emitted lines. While
this may not be strictly necessary – as the final migration to
MemorySSA should boil down to a simple flip –, adopting UTC-based
lines should overall make tests more robust as well as easier to
diff (at least on the majority of the tests instances where the new
lines have been added). Crash tests now feature check lines as well
(notably, pr17852.ll, pr24397.ll and unreachable_block_infinite_loop.ll).
Pre-2010 tests leveraging llvm-dis have not been updated.
2025-10-07 14:10:00 +02:00

108 lines
4.3 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=gvn -S < %s | FileCheck %s
; GVN failed to do constant expression folding and expanded
; them unfolded in many places, producing exponentially large const
; expressions. As a result, the compilation never fisished.
; This test checks that we are folding constant expression
; PR 28418
%2 = type { i32, i32, i32, i32, i32 }
define i32 @_Z16vector3util_mainv(i32 %x, i32 %y) {
; CHECK-LABEL: define i32 @_Z16vector3util_mainv(
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
; CHECK-NEXT: [[TMP1:%.*]] = alloca [[TMP0:%.*]], align 4
; CHECK-NEXT: [[TMP114:%.*]] = getelementptr inbounds [[TMP0]], ptr [[TMP1]], i64 0, i32 1
; CHECK-NEXT: store <4 x i32> <i32 234567891, i32 345678912, i32 456789123, i32 0>, ptr [[TMP114]], align 4
; CHECK-NEXT: store i32 310393545, ptr [[TMP114]], align 4
; CHECK-NEXT: store i32 -383584258, ptr [[TMP114]], align 4
; CHECK-NEXT: store i32 -57163022, ptr [[TMP114]], align 4
; CHECK-NEXT: ret i32 0
;
%tmp1 = alloca %2, align 4
%tmp114 = getelementptr inbounds %2, ptr %tmp1, i64 0, i32 1
store <4 x i32> <i32 234567891, i32 345678912, i32 456789123, i32 0>, ptr %tmp114, align 4
%tmp1683 = getelementptr inbounds %2, ptr %tmp1, i64 0, i32 1
%tmp1688 = load i32, ptr %tmp1683, align 4
%tmp1693 = shl i32 %tmp1688, 5
%tmp1694 = xor i32 %tmp1693, %tmp1688
%tmp1695 = lshr i32 %tmp1694, 7
%tmp1696 = xor i32 %tmp1695, %tmp1694
%tmp1697 = shl i32 %tmp1696, 22
%tmp1698 = xor i32 %tmp1697, %tmp1696
%tmp1707 = shl i32 %tmp1698, 5
%tmp1708 = xor i32 %tmp1707, %tmp1698
%tmp1709 = lshr i32 %tmp1708, 7
%tmp1710 = xor i32 %tmp1709, %tmp1708
%tmp1711 = shl i32 %tmp1710, 22
%tmp1712 = xor i32 %tmp1711, %tmp1710
%tmp1721 = shl i32 %tmp1712, 5
%tmp1722 = xor i32 %tmp1721, %tmp1712
%tmp1723 = lshr i32 %tmp1722, 7
%tmp1724 = xor i32 %tmp1723, %tmp1722
%tmp1725 = shl i32 %tmp1724, 22
%tmp1726 = xor i32 %tmp1725, %tmp1724
%tmp1735 = shl i32 %tmp1726, 5
%tmp1736 = xor i32 %tmp1735, %tmp1726
%tmp1737 = lshr i32 %tmp1736, 7
%tmp1738 = xor i32 %tmp1737, %tmp1736
%tmp1739 = shl i32 %tmp1738, 22
%tmp1740 = xor i32 %tmp1739, %tmp1738
store i32 %tmp1740, ptr %tmp1683, align 4
%tmp1756 = getelementptr inbounds %2, ptr %tmp1, i64 0, i32 1
%tmp1761 = load i32, ptr %tmp1756, align 4
%tmp1766 = shl i32 %tmp1761, 5
%tmp1767 = xor i32 %tmp1766, %tmp1761
%tmp1768 = lshr i32 %tmp1767, 7
%tmp1769 = xor i32 %tmp1768, %tmp1767
%tmp1770 = shl i32 %tmp1769, 22
%tmp1771 = xor i32 %tmp1770, %tmp1769
%tmp1780 = shl i32 %tmp1771, 5
%tmp1781 = xor i32 %tmp1780, %tmp1771
%tmp1782 = lshr i32 %tmp1781, 7
%tmp1783 = xor i32 %tmp1782, %tmp1781
%tmp1784 = shl i32 %tmp1783, 22
%tmp1785 = xor i32 %tmp1784, %tmp1783
%tmp1794 = shl i32 %tmp1785, 5
%tmp1795 = xor i32 %tmp1794, %tmp1785
%tmp1796 = lshr i32 %tmp1795, 7
%tmp1797 = xor i32 %tmp1796, %tmp1795
%tmp1798 = shl i32 %tmp1797, 22
%tmp1799 = xor i32 %tmp1798, %tmp1797
%tmp1808 = shl i32 %tmp1799, 5
%tmp1809 = xor i32 %tmp1808, %tmp1799
%tmp1810 = lshr i32 %tmp1809, 7
%tmp1811 = xor i32 %tmp1810, %tmp1809
%tmp1812 = shl i32 %tmp1811, 22
%tmp1813 = xor i32 %tmp1812, %tmp1811
store i32 %tmp1813, ptr %tmp1756, align 4
%tmp2645 = getelementptr inbounds %2, ptr %tmp1, i64 0, i32 1
%tmp2650 = load i32, ptr %tmp2645, align 4
%tmp2655 = shl i32 %tmp2650, 5
%tmp2656 = xor i32 %tmp2655, %tmp2650
%tmp2657 = lshr i32 %tmp2656, 7
%tmp2658 = xor i32 %tmp2657, %tmp2656
%tmp2659 = shl i32 %tmp2658, 22
%tmp2660 = xor i32 %tmp2659, %tmp2658
%tmp2669 = shl i32 %tmp2660, 5
%tmp2670 = xor i32 %tmp2669, %tmp2660
%tmp2671 = lshr i32 %tmp2670, 7
%tmp2672 = xor i32 %tmp2671, %tmp2670
%tmp2673 = shl i32 %tmp2672, 22
%tmp2674 = xor i32 %tmp2673, %tmp2672
%tmp2683 = shl i32 %tmp2674, 5
%tmp2684 = xor i32 %tmp2683, %tmp2674
%tmp2685 = lshr i32 %tmp2684, 7
%tmp2686 = xor i32 %tmp2685, %tmp2684
%tmp2687 = shl i32 %tmp2686, 22
%tmp2688 = xor i32 %tmp2687, %tmp2686
%tmp2697 = shl i32 %tmp2688, 5
%tmp2698 = xor i32 %tmp2697, %tmp2688
%tmp2699 = lshr i32 %tmp2698, 7
%tmp2700 = xor i32 %tmp2699, %tmp2698
%tmp2701 = shl i32 %tmp2700, 22
%tmp2702 = xor i32 %tmp2701, %tmp2700
store i32 %tmp2702, ptr %tmp2645, align 4
ret i32 0
}