@@ -1649,156 +1649,135 @@ define arm_aapcs_vfpcc void @arm_biquad_cascade_df1_f32(%struct.arm_biquad_casd_
1649
1649
; CHECK-NEXT: sub sp, #4
1650
1650
; CHECK-NEXT: .vsave {d8, d9, d10, d11, d12, d13, d14, d15}
1651
1651
; CHECK-NEXT: vpush {d8, d9, d10, d11, d12, d13, d14, d15}
1652
- ; CHECK-NEXT: .pad #88
1653
- ; CHECK-NEXT: sub sp, #88
1654
- ; CHECK-NEXT: ldrd r12, r10, [r0]
1655
- ; CHECK-NEXT: @ implicit-def: $s2
1652
+ ; CHECK-NEXT: .pad #16
1653
+ ; CHECK-NEXT: sub sp, #16
1654
+ ; CHECK-NEXT: ldrd r6, r9, [r0]
1656
1655
; CHECK-NEXT: and r7, r3, #3
1657
- ; CHECK-NEXT: ldr.w r11, [r0, #8]
1658
- ; CHECK-NEXT: lsrs r0, r3, #2
1659
- ; CHECK-NEXT: str r0, [sp, #60] @ 4-byte Spill
1660
- ; CHECK-NEXT: str r7, [sp, #12] @ 4-byte Spill
1661
- ; CHECK-NEXT: str r2, [sp, #56] @ 4-byte Spill
1656
+ ; CHECK-NEXT: ldr r0, [r0, #8]
1657
+ ; CHECK-NEXT: lsrs r3, r3, #2
1658
+ ; CHECK-NEXT: @ implicit-def: $r12
1659
+ ; CHECK-NEXT: str r7, [sp] @ 4-byte Spill
1660
+ ; CHECK-NEXT: str r3, [sp, #8] @ 4-byte Spill
1661
+ ; CHECK-NEXT: str r2, [sp, #4] @ 4-byte Spill
1662
1662
; CHECK-NEXT: b .LBB19_3
1663
1663
; CHECK-NEXT: .LBB19_1: @ in Loop: Header=BB19_3 Depth=1
1664
- ; CHECK-NEXT: vmov.f32 s14, s7
1665
- ; CHECK-NEXT: ldr r2, [sp, #56] @ 4-byte Reload
1666
- ; CHECK-NEXT: vmov.f32 s0, s10
1667
- ; CHECK-NEXT: vmov.f32 s7, s6
1664
+ ; CHECK-NEXT: mov r3, r8
1665
+ ; CHECK-NEXT: mov r7, r5
1666
+ ; CHECK-NEXT: mov r4, r11
1667
+ ; CHECK-NEXT: mov r8, r10
1668
1668
; CHECK-NEXT: .LBB19_2: @ %if.end69
1669
1669
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1670
- ; CHECK-NEXT: vstr s8, [r10]
1671
- ; CHECK-NEXT: subs.w r12, r12, #1
1672
- ; CHECK-NEXT: vstr s0, [r10, #4]
1673
- ; CHECK-NEXT: add.w r11, r11, #128
1674
- ; CHECK-NEXT: vstr s14, [r10, #8]
1670
+ ; CHECK-NEXT: ldr r6, [sp, #12] @ 4-byte Reload
1671
+ ; CHECK-NEXT: adds r0, #128
1672
+ ; CHECK-NEXT: ldr r2, [sp, #4] @ 4-byte Reload
1673
+ ; CHECK-NEXT: strd r7, r4, [r9]
1674
+ ; CHECK-NEXT: subs r6, #1
1675
+ ; CHECK-NEXT: strd r3, r8, [r9, #8]
1676
+ ; CHECK-NEXT: add.w r9, r9, #16
1675
1677
; CHECK-NEXT: mov r1, r2
1676
- ; CHECK-NEXT: vstr s7, [r10, #12]
1677
- ; CHECK-NEXT: add.w r10, r10, #16
1678
1678
; CHECK-NEXT: beq.w .LBB19_13
1679
1679
; CHECK-NEXT: .LBB19_3: @ %do.body
1680
1680
; CHECK-NEXT: @ =>This Loop Header: Depth=1
1681
1681
; CHECK-NEXT: @ Child Loop BB19_5 Depth 2
1682
- ; CHECK-NEXT: vldr s7, [r10, #8]
1683
- ; CHECK-NEXT: mov r5, r2
1684
- ; CHECK-NEXT: ldr r0, [sp, #60] @ 4-byte Reload
1685
- ; CHECK-NEXT: vldr s8, [r10]
1686
- ; CHECK-NEXT: vldr s10, [r10, #4]
1687
- ; CHECK-NEXT: vldr s6, [r10, #12]
1688
- ; CHECK-NEXT: wls lr, r0, .LBB19_6
1682
+ ; CHECK-NEXT: str r6, [sp, #12] @ 4-byte Spill
1683
+ ; CHECK-NEXT: mov r6, r2
1684
+ ; CHECK-NEXT: ldrd r5, r11, [r9]
1685
+ ; CHECK-NEXT: ldrd r8, r10, [r9, #8]
1686
+ ; CHECK-NEXT: ldr r2, [sp, #8] @ 4-byte Reload
1687
+ ; CHECK-NEXT: wls lr, r2, .LBB19_6
1689
1688
; CHECK-NEXT: @ %bb.4: @ %while.body.lr.ph
1690
1689
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1691
- ; CHECK-NEXT: ldrd r5, lr, [sp, #56] @ 8-byte Folded Reload
1690
+ ; CHECK-NEXT: ldr r6, [sp, #4] @ 4-byte Reload
1691
+ ; CHECK-NEXT: mov r4, r11
1692
+ ; CHECK-NEXT: ldr.w lr, [sp, #8] @ 4-byte Reload
1693
+ ; CHECK-NEXT: mov r3, r5
1692
1694
; CHECK-NEXT: .LBB19_5: @ %while.body
1693
1695
; CHECK-NEXT: @ Parent Loop BB19_3 Depth=1
1694
1696
; CHECK-NEXT: @ => This Inner Loop Header: Depth=2
1695
- ; CHECK-NEXT: vmov r4, s8
1696
- ; CHECK-NEXT: vldr s8, [r1, #12]
1697
- ; CHECK-NEXT: vldrw.u32 q0, [r11, #112]
1698
- ; CHECK-NEXT: vmov r0, s10
1699
- ; CHECK-NEXT: vldr s10, [r1, #8]
1700
- ; CHECK-NEXT: vmov r7, s7
1701
- ; CHECK-NEXT: vmov r9, s6
1702
- ; CHECK-NEXT: vldrw.u32 q1, [r11]
1703
- ; CHECK-NEXT: vstrw.32 q0, [sp, #64] @ 16-byte Spill
1704
- ; CHECK-NEXT: vmov r8, s8
1705
- ; CHECK-NEXT: vldrw.u32 q0, [r11, #16]
1706
- ; CHECK-NEXT: ldr r6, [r1, #4]
1707
- ; CHECK-NEXT: vldrw.u32 q7, [r11, #32]
1708
- ; CHECK-NEXT: vmul.f32 q1, q1, r8
1709
- ; CHECK-NEXT: vmov r3, s10
1710
- ; CHECK-NEXT: vldrw.u32 q3, [r11, #48]
1711
- ; CHECK-NEXT: vfma.f32 q1, q0, r3
1712
- ; CHECK-NEXT: ldr r3, [r1]
1713
- ; CHECK-NEXT: vfma.f32 q1, q7, r6
1714
- ; CHECK-NEXT: vldrw.u32 q6, [r11, #64]
1715
- ; CHECK-NEXT: vfma.f32 q1, q3, r3
1716
- ; CHECK-NEXT: vldrw.u32 q5, [r11, #80]
1717
- ; CHECK-NEXT: vfma.f32 q1, q6, r4
1718
- ; CHECK-NEXT: vldrw.u32 q4, [r11, #96]
1719
- ; CHECK-NEXT: vfma.f32 q1, q5, r0
1720
- ; CHECK-NEXT: vldrw.u32 q0, [sp, #64] @ 16-byte Reload
1721
- ; CHECK-NEXT: vfma.f32 q1, q4, r7
1697
+ ; CHECK-NEXT: ldr r5, [r1, #12]
1698
+ ; CHECK-NEXT: vldrw.u32 q1, [r0]
1699
+ ; CHECK-NEXT: vldrw.u32 q6, [r0, #16]
1700
+ ; CHECK-NEXT: ldm.w r1, {r2, r7, r11}
1701
+ ; CHECK-NEXT: vmul.f32 q1, q1, r5
1702
+ ; CHECK-NEXT: vldrw.u32 q7, [r0, #32]
1703
+ ; CHECK-NEXT: vfma.f32 q1, q6, r11
1704
+ ; CHECK-NEXT: vldrw.u32 q4, [r0, #48]
1705
+ ; CHECK-NEXT: vfma.f32 q1, q7, r7
1706
+ ; CHECK-NEXT: vldrw.u32 q5, [r0, #64]
1707
+ ; CHECK-NEXT: vfma.f32 q1, q4, r2
1708
+ ; CHECK-NEXT: vldrw.u32 q3, [r0, #80]
1709
+ ; CHECK-NEXT: vfma.f32 q1, q5, r3
1710
+ ; CHECK-NEXT: vldrw.u32 q2, [r0, #96]
1711
+ ; CHECK-NEXT: vfma.f32 q1, q3, r4
1712
+ ; CHECK-NEXT: vldrw.u32 q0, [r0, #112]
1713
+ ; CHECK-NEXT: vfma.f32 q1, q2, r8
1722
1714
; CHECK-NEXT: adds r1, #16
1723
- ; CHECK-NEXT: vfma.f32 q1, q0, r9
1724
- ; CHECK-NEXT: vmov.f32 s2, s8
1725
- ; CHECK-NEXT: vstrb.8 q1, [r5], #16
1715
+ ; CHECK-NEXT: vfma.f32 q1, q0, r10
1716
+ ; CHECK-NEXT: vmov r10, s6
1717
+ ; CHECK-NEXT: vstrb.8 q1, [r6], #16
1718
+ ; CHECK-NEXT: vmov r8, s7
1719
+ ; CHECK-NEXT: mov r4, r11
1720
+ ; CHECK-NEXT: mov r3, r5
1721
+ ; CHECK-NEXT: mov r12, r5
1726
1722
; CHECK-NEXT: le lr, .LBB19_5
1727
1723
; CHECK-NEXT: .LBB19_6: @ %while.end
1728
1724
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1729
- ; CHECK-NEXT: ldr r7 , [sp, #12 ] @ 4-byte Reload
1730
- ; CHECK-NEXT: cmp r7 , #0
1725
+ ; CHECK-NEXT: ldr r2 , [sp] @ 4-byte Reload
1726
+ ; CHECK-NEXT: cmp r2 , #0
1731
1727
; CHECK-NEXT: beq .LBB19_1
1732
1728
; CHECK-NEXT: @ %bb.7: @ %if.then
1733
1729
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1734
- ; CHECK-NEXT: vldr s24, [r1]
1735
- ; CHECK-NEXT: vmov r0, s8
1736
- ; CHECK-NEXT: vldr s0, [r1, #4]
1737
- ; CHECK-NEXT: vldrw.u32 q3, [r11]
1738
- ; CHECK-NEXT: vldr s3, [r1, #12]
1739
- ; CHECK-NEXT: vldrw.u32 q4, [r11, #32]
1740
- ; CHECK-NEXT: vldr s1, [r1, #8]
1741
- ; CHECK-NEXT: vmov r1, s10
1742
- ; CHECK-NEXT: vldrw.u32 q2, [r11, #96]
1743
- ; CHECK-NEXT: vmov r6, s3
1744
- ; CHECK-NEXT: vmul.f32 q3, q3, r6
1745
- ; CHECK-NEXT: vmov r6, s1
1746
- ; CHECK-NEXT: vstrw.32 q2, [sp, #32] @ 16-byte Spill
1747
- ; CHECK-NEXT: vldrw.u32 q2, [r11, #112]
1748
- ; CHECK-NEXT: vldrw.u32 q5, [r11, #48]
1749
- ; CHECK-NEXT: vmov r4, s0
1750
- ; CHECK-NEXT: vstrw.32 q2, [sp, #64] @ 16-byte Spill
1751
- ; CHECK-NEXT: vldrw.u32 q2, [r11, #80]
1752
- ; CHECK-NEXT: vldrw.u32 q7, [r11, #64]
1753
- ; CHECK-NEXT: vmov r3, s24
1754
- ; CHECK-NEXT: vstrw.32 q2, [sp, #16] @ 16-byte Spill
1755
- ; CHECK-NEXT: vldrw.u32 q2, [r11, #16]
1756
- ; CHECK-NEXT: vmov r2, s7
1757
- ; CHECK-NEXT: cmp r7, #1
1758
- ; CHECK-NEXT: vfma.f32 q3, q2, r6
1759
- ; CHECK-NEXT: vldrw.u32 q2, [sp, #16] @ 16-byte Reload
1760
- ; CHECK-NEXT: vfma.f32 q3, q4, r4
1761
- ; CHECK-NEXT: vmov lr, s6
1762
- ; CHECK-NEXT: vfma.f32 q3, q5, r3
1763
- ; CHECK-NEXT: vfma.f32 q3, q7, r0
1764
- ; CHECK-NEXT: vfma.f32 q3, q2, r1
1765
- ; CHECK-NEXT: vldrw.u32 q2, [sp, #32] @ 16-byte Reload
1766
- ; CHECK-NEXT: vfma.f32 q3, q2, r2
1767
- ; CHECK-NEXT: vldrw.u32 q2, [sp, #64] @ 16-byte Reload
1768
- ; CHECK-NEXT: vfma.f32 q3, q2, lr
1730
+ ; CHECK-NEXT: ldrd lr, r4, [r1]
1731
+ ; CHECK-NEXT: vldrw.u32 q0, [r0]
1732
+ ; CHECK-NEXT: ldrd r7, r1, [r1, #8]
1733
+ ; CHECK-NEXT: vldrw.u32 q6, [r0, #16]
1734
+ ; CHECK-NEXT: vldrw.u32 q7, [r0, #32]
1735
+ ; CHECK-NEXT: vldrw.u32 q4, [r0, #48]
1736
+ ; CHECK-NEXT: vmul.f32 q0, q0, r1
1737
+ ; CHECK-NEXT: vldrw.u32 q5, [r0, #64]
1738
+ ; CHECK-NEXT: vfma.f32 q0, q6, r7
1739
+ ; CHECK-NEXT: vldrw.u32 q3, [r0, #80]
1740
+ ; CHECK-NEXT: vfma.f32 q0, q7, r4
1741
+ ; CHECK-NEXT: vldrw.u32 q2, [r0, #96]
1742
+ ; CHECK-NEXT: vfma.f32 q0, q4, lr
1743
+ ; CHECK-NEXT: vldrw.u32 q1, [r0, #112]
1744
+ ; CHECK-NEXT: vfma.f32 q0, q5, r5
1745
+ ; CHECK-NEXT: cmp r2, #1
1746
+ ; CHECK-NEXT: vfma.f32 q0, q3, r11
1747
+ ; CHECK-NEXT: vfma.f32 q0, q2, r8
1748
+ ; CHECK-NEXT: vfma.f32 q0, q1, r10
1749
+ ; CHECK-NEXT: vmov r5, s0
1769
1750
; CHECK-NEXT: bne .LBB19_9
1770
1751
; CHECK-NEXT: @ %bb.8: @ %if.then58
1771
1752
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1772
- ; CHECK-NEXT: vstr s12 , [r5 ]
1773
- ; CHECK-NEXT: vmov.f32 s8, s24
1774
- ; CHECK-NEXT: vmov.f32 s0, s2
1775
- ; CHECK-NEXT: vmov.f32 s14, s12
1776
- ; CHECK-NEXT: b .LBB19_11
1753
+ ; CHECK-NEXT: str r5 , [r6 ]
1754
+ ; CHECK-NEXT: mov r7, lr
1755
+ ; CHECK-NEXT: mov r4, r12
1756
+ ; CHECK-NEXT: mov r3, r5
1757
+ ; CHECK-NEXT: b .LBB19_12
1777
1758
; CHECK-NEXT: .LBB19_9: @ %if.else
1778
1759
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1779
- ; CHECK-NEXT: cmp r7, #2
1780
- ; CHECK-NEXT: vstmia r5, {s12, s13}
1781
- ; CHECK-NEXT: bne .LBB19_12
1760
+ ; CHECK-NEXT: vmov r8, s1
1761
+ ; CHECK-NEXT: cmp r2, #2
1762
+ ; CHECK-NEXT: vstr s1, [r6, #4]
1763
+ ; CHECK-NEXT: str r5, [r6]
1764
+ ; CHECK-NEXT: bne .LBB19_11
1782
1765
; CHECK-NEXT: @ %bb.10: @ in Loop: Header=BB19_3 Depth=1
1783
- ; CHECK-NEXT: vmov.f32 s8, s0
1784
- ; CHECK-NEXT: vmov.f32 s14, s13
1785
- ; CHECK-NEXT: vmov.f32 s0, s24
1786
- ; CHECK-NEXT: vmov.f32 s7, s12
1787
- ; CHECK-NEXT: .LBB19_11: @ %if.end69
1766
+ ; CHECK-NEXT: mov r7, r4
1767
+ ; CHECK-NEXT: mov r3, r8
1768
+ ; CHECK-NEXT: mov r4, lr
1769
+ ; CHECK-NEXT: mov r8, r5
1770
+ ; CHECK-NEXT: b .LBB19_12
1771
+ ; CHECK-NEXT: .LBB19_11: @ %if.else64
1788
1772
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1789
- ; CHECK-NEXT: vmov.f32 s2, s3
1790
- ; CHECK-NEXT: ldr r2, [sp, #56] @ 4-byte Reload
1791
- ; CHECK-NEXT: b .LBB19_2
1792
- ; CHECK-NEXT: .LBB19_12: @ %if.else64
1773
+ ; CHECK-NEXT: vmov r3, s2
1774
+ ; CHECK-NEXT: vstr s2, [r6, #8]
1775
+ ; CHECK-NEXT: .LBB19_12: @ %if.end69
1793
1776
; CHECK-NEXT: @ in Loop: Header=BB19_3 Depth=1
1794
- ; CHECK-NEXT: vmov.f32 s7, s13
1795
- ; CHECK-NEXT: ldr r2, [sp, #56] @ 4-byte Reload
1796
- ; CHECK-NEXT: vmov.f32 s2, s3
1797
- ; CHECK-NEXT: vstr s14, [r5, #8]
1798
- ; CHECK-NEXT: vmov.f32 s8, s1
1777
+ ; CHECK-NEXT: mov r12, r1
1799
1778
; CHECK-NEXT: b .LBB19_2
1800
1779
; CHECK-NEXT: .LBB19_13: @ %do.end
1801
- ; CHECK-NEXT: add sp, #88
1780
+ ; CHECK-NEXT: add sp, #16
1802
1781
; CHECK-NEXT: vpop {d8, d9, d10, d11, d12, d13, d14, d15}
1803
1782
; CHECK-NEXT: add sp, #4
1804
1783
; CHECK-NEXT: pop.w {r4, r5, r6, r7, r8, r9, r10, r11, pc}
0 commit comments