From c0661b785b13d12cc4c78887f78fc5627c5c7a12 Mon Sep 17 00:00:00 2001 From: "Matthias J. Kannwischer" Date: Fri, 28 Jun 2024 16:16:08 +0800 Subject: [PATCH] make dilithium code work in with mca --- examples/naive/armv7m/dilithium5_ntt.s | 30 +- examples/opt/armv7m/dilithium5_ntt_opt_m7.s | 1638 ++++++++++++++++--- 2 files changed, 1460 insertions(+), 208 deletions(-) diff --git a/examples/naive/armv7m/dilithium5_ntt.s b/examples/naive/armv7m/dilithium5_ntt.s index fee79291..9dcc63a0 100644 --- a/examples/naive/armv7m/dilithium5_ntt.s +++ b/examples/naive/armv7m/dilithium5_ntt.s @@ -200,7 +200,9 @@ smlad r0,r0,r0,r0 //void pqcrystals_dilithium_ntt(int32_t p[N]); .global pqcrystals_dilithium_ntt +#ifndef __CLANG__ .type pqcrystals_dilithium_ntt,%function +#endif .align 2 pqcrystals_dilithium_ntt: //bind aliases @@ -261,7 +263,7 @@ layer123_start: str.w pol5, [ptr_p, #5*distance/4] str.w pol6, [ptr_p, #6*distance/4] str.w pol7, [ptr_p, #7*distance/4] - str.w pol0, [ptr_p], #strincr + str pol0, [ptr_p], #strincr vmov temp_l, s9 layer123_end: cmp.w ptr_p, temp_l @@ -301,7 +303,7 @@ layer123_end: str.w pol5, [ptr_p, #5*distance/4] str.w pol6, [ptr_p, #6*distance/4] str.w pol7, [ptr_p, #7*distance/4] - str.w pol0, [ptr_p], #4 + str pol0, [ptr_p], #4 .endr vmov temp_l, s10 cmp.w ptr_p, temp_l @@ -361,7 +363,9 @@ layer123_end: //void pqcrystals_dilithium_invntt_tomont(int32_t p[N]); .global pqcrystals_dilithium_invntt_tomont +#ifndef __CLANG__ .type pqcrystals_dilithium_invntt_tomont,%function +#endif .align 2 pqcrystals_dilithium_invntt_tomont: //bind aliases @@ -422,7 +426,7 @@ pqcrystals_dilithium_invntt_tomont: str.w pol5, [ptr_p, #5*distance/4] str.w pol6, [ptr_p, #6*distance/4] str.w pol7, [ptr_p, #7*distance/4] - str.w pol0, [ptr_p], #strincr + str pol0, [ptr_p], #strincr vmov temp_l, s9 cmp.w ptr_p, temp_l bne.w 1b @@ -568,3 +572,23 @@ pqcrystals_dilithium_invntt_tomont: .unreq zeta1 .unreq zeta2 +.align 2 +inv_ntt_asm_smull_qinv: +.word 0xfc7fdfff +.align 2 +inv_ntt_asm_smull_q: +.word 8380417 + +.section .rodata + +.type zetas_new332, %object +.align 2 +zetas_new332: +.word 25847, -2608894, -518909, 237124, -777960, -876248, 466468, 1826347, 2725464, 1024112, 2706023, 95776, 3077325, 3530437, 2353451, -1079900, 3585928, -1661693, -3592148, -2537516, 3915439, -359251, -549488, -1119584, -3861115, -3043716, 3574422, -2867647, -2091905, 2619752, -2108549, 3539968, -300467, 2348700, -539299, 3119733, -2118186, -3859737, -1699267, -1643818, 3505694, -3821735, -2884855, -1399561, -3277672, 3507263, -2140649, -1600420, 3699596, 3111497, 1757237, -19422, 811944, 531354, 954230, 3881043, 2680103, 4010497, 280005, 3900724, -2556880, 2071892, -2797779, -3930395, 2091667, 3407706, -1528703, 2316500, 3817976, -3677745, -3342478, 2244091, -3041255, -2446433, -3562462, -1452451, 266997, 2434439, 3475950, -1235728, 3513181, 2176455, -3520352, -3759364, -1585221, -1197226, -3193378, -1257611, 900702, 1859098, 1939314, 909542, 819034, -4083598, 495491, -1613174, -1000202, -43260, -522500, -3190144, -655327, -3122442, -3157330, 2031748, 3207046, -3632928, -3556995, -525098, 126922, -768622, -3595838, 3412210, 342297, 286988, -983419, -2437823, 4108315, 2147896, 3437287, -3342277, 2715295, 1735879, 203044, -2967645, 2842341, 2691481, -3693493, -2590150, 1265009, -411027, 4055324, 1247620, -2477047, 2486353, 1595974, -671102, -3767016, 1250494, -1228525, 2635921, -3548272, -22981, -2994039, 1869119, -1308169, 1903435, -1050970, -381987, -1333058, 1237275, 1349076, -3318210, -1430225, 1852771, -451100, 1312455, -1430430, 3306115, -1962642, -3343383, -1279661, 1917081, 264944, -2546312, -1374803, 508951, 1500165, 777191, 3097992, 2235880, 3406031, 44288, -542412, -2831860, -1100098, -1671176, -1846953, 904516, -2584293, -3724270, 3958618, 594136, -3776993, -3724342, -2013608, 2432395, -8578, 2454455, -164721, 1653064, 1957272, 3369112, -3249728, 185531, -1207385, 2389356, -3183426, 162844, -210977, 1616392, 3014001, 759969, 810149, 1652634, -1316856, -3694233, -1799107, 189548, -3038916, 3523897, -3553272, 3866901, 269760, 3159746, 2213111, -975884, -1851402, 1717735, 472078, -2409325, -426683, 1723600, -177440, -1803090, 1910376, 1315589, -1667432, -1104333, 1341330, -260646, -3833893, 1285669, -2939036, -2235985, -1584928, -420899, -2286327, -812732, 183443, -976891, -1439742, 1612842, -3545687, -3019102, -554416, 3919660, -3881060, -48306, -1362209, -3628969, 3937738, 1400424, 3839961, -846154, 1976782 +.size zetas_new332,.-zetas_new332 + +.type zetas_new332inv, %object +.align 2 +zetas_new332inv: +.word 4193792, 4193792, -25847, 4193792, 518909, -25847, 2608894, 4193792, 4193792, -25847, 4193792, 518909, -25847, 2608894, -466468, -2680103, -3111497, -280005, 19422, -4010497, -1757237, 518909, -466468, 876248, -2680103, 2884855, -3111497, -3119733, 777960, 2091905, 359251, 2108549, 1119584, -2619752, 549488, -25847, 518909, 2608894, -466468, 777960, 876248, -237124, 876248, 2884855, -3119733, 3277672, 3859737, 1399561, 2118186, 2608894, 777960, -237124, 2091905, -2353451, 359251, -1826347, -237124, -2353451, -1826347, -3585928, -1024112, 1079900, -2725464, 4193792, 4193792, -25847, 41978, 3024400, 3975713, -1225192, 2797779, -3839961, 3628969, -1711436, 3835778, 485110, -3954267, -280005, 2797779, -2071892, -2831100, -2698859, -908040, -2292170, 539299, 1430430, -1852771, -3658785, 3512212, 1859141, -1607594, -2680103, -280005, -4010497, 715005, 1483994, -1045894, -980943, -3699596, 1316856, -759969, -955715, 3677139, 3933849, 2719610, 2108549, 539299, -2348700, 1658328, -1403403, 1775852, -2460465, -3915439, -126922, 3632928, 1067023, 3847594, 4179270, 1652689, -466468, -2680103, -3111497, -2953811, -284642, 2507426, -324139, -3881043, -1341330, -1315589, 3990128, -2137097, -4109898, 4092021, 3277672, -3699596, 1600420, 1541634, 3493410, 3487504, 2497815, 2867647, 2477047, 411027, 1654972, 1326223, -2608226, -2752209, 2091905, 2108549, -2619752, 1836700, 2945615, -1908953, 729864, 3821735, -3958618, -904516, 2080615, 1555380, -3471815, -1978758, -3585928, -3915439, 2537516, -892788, -553664, -3095038, 658596, -3530437, 1585221, -2176455, 3355482, -1783485, 2780552, -3623330, 518909, -466468, 876248, -442683, 2523147, -2847660, -3683140, 2556880, 1439742, 812732, 774207, -3168108, 1877157, 3406477, 19422, -3881043, -954230, -214686, -1182619, 2453526, -2201920, 300467, 1308169, 22981, 3614022, 2136260, 1459487, -2233803, 2884855, 3277672, 1399561, 394072, -3933227, 4136064, 156486, 2140649, 3249728, -1653064, 1596950, 633578, 2722529, -554462, 1119584, 2867647, -3574422, 1004840, 191586, 3969463, 1161373, 3592148, 1000202, 4083598, 3189243, 3561667, -3650125, 3490511, 777960, 2091905, 359251, -1829156, -3707725, -661807, 1144558, -531354, 1851402, -3159746, 1543095, -2903948, 1505516, -1500460, 3859737, 3821735, -3505694, -2413330, 3908886, -1203856, 3570263, 3043716, -2715295, -2147896, 758741, 3917553, -2414897, -1613811, -2353451, -3585928, 1079900, 990020, -719638, 2718792, 2260310, 1643818, -3097992, -508951, -783456, -2089539, 2616547, 4060031, -1024112, -3530437, -3077325, -1821861, 1920615, 3988525, 2048419, -95776, 3041255, 3677745, -971504, 2190617, 2311312, -1170082, -25847, 518909, 2608894, 1261528, -2073537, -959585, 3948120, -2071892, 3881060, 3019102, -1342633, -1115066, 3589694, -1929116, -4010497, 2556880, -3900724, 3360006, 1758630, -2306989, -1841637, -2348700, -1349076, 381987, -1699982, 3189673, 3531558, -1210546, -3111497, 19422, -1757237, 2977353, 2612035, -2718155, -1544829, 1600420, 210977, -2389356, 2052582, -2737802, 2383976, -450259, -2619752, 300467, -3539968, 1698289, -4065084, -644023, -1114140, 2537516, 3157330, 3190144, -993399, -2220524, 2920588, 252737, 876248, 2884855, -3119733, 1490985, -34731, -1212610, -3183745, -954230, 177440, 2409325, -3302554, -2390327, -2749545, 653128, 1399561, 2140649, -3507263, -3745105, -1942293, -3367121, 2734884, -3574422, 3693493, 2967645, 1393803, -2467905, 1786029, -1633410, 359251, 1119584, 549488, -2824548, -1325638, -2207625, -2601586, -3505694, 1100098, -44288, 3478676, -2457992, -1617107, 2551364, 1079900, 3592148, 1661693, 1593929, 318899, -3366475, 3118416, -3077325, -3475950, 1452451, 3772814, 1424805, -3391376, 632820, 2608894, 777960, -237124, 2062597, 4064335, 2197148, -1127864, -3900724, 1584928, -1285669, 2525341, -896437, -1915773, 1792087, -1757237, -531354, -811944, 938441, -674578, 2876837, 3959371, -3539968, 1228525, 671102, 1219592, -3853560, 2630979, -2134676, -3119733, 3859737, 2118186, -2432637, 2746655, 718593, -2353280, -3507263, 8578, 3724342, -34852, 1387945, 358956, 1604944, 549488, 3043716, 3861115, 1290746, 3208584, 2538711, -1442830, 1661693, -1939314, 1257611, -367371, -1308058, 264382, 2614173, -237124, -2353451, -1826347, 2050674, 592050, -138487, 2310528, -811944, 3553272, -189548, -2728561, -4168358, -79, 3844932, 2118186, 1643818, 1699267, 500408, 743398, 879633, -3105206, 3861115, 983419, -3412210, 712597, -23479, 3729381, -1010481, -1826347, -1024112, -2725464, -2361217, -1864453, 3850522, 2337144, 1699267, -264944, 3343383, 3842267, 4181974, -4032642, 3983585, -2725464, -95776, -2706023, 260345, 2526550, 2000777, 987079, -2706023, 1528703, 3930395, -3030761, -3082055, -2374824, 1836319 +.size zetas_new332inv,.-zetas_new332inv diff --git a/examples/opt/armv7m/dilithium5_ntt_opt_m7.s b/examples/opt/armv7m/dilithium5_ntt_opt_m7.s index f8f1ea85..cd2aa8be 100644 --- a/examples/opt/armv7m/dilithium5_ntt_opt_m7.s +++ b/examples/opt/armv7m/dilithium5_ntt_opt_m7.s @@ -11,24 +11,24 @@ // 2 .macro addSub1 c0, c1 - add.w \c0, \c1 + add.w \c0, \c0, \c1 sub.w \c1, \c0, \c1, lsl #1 .endm // 3 .macro addSub2 c0, c1, c2, c3 - add \c0, \c1 - add \c2, \c3 + add \c0, \c0, \c1 + add \c2, \c2, \c3 sub.w \c1, \c0, \c1, lsl #1 sub.w \c3, \c2, \c3, lsl #1 .endm // 6 .macro addSub4 c0, c1, c2, c3, c4, c5, c6, c7 - add \c0, \c1 - add \c2, \c3 - add \c4, \c5 - add \c6, \c7 + add \c0, \c0, \c1 + add \c2, \c2, \c3 + add \c4, \c4, \c5 + add \c6, \c6, \c7 sub.w \c1, \c0, \c1, lsl #1 sub.w \c3, \c2, \c3, lsl #1 sub.w \c5, \c4, \c5, lsl #1 @@ -56,55 +56,55 @@ .endm .macro _3_layer_CT_32 c0, c1, c2, c3, c4, c5, c6, c7, xi0, xi1, xi2, xi3, xi4, xi5, xi6, twiddle, Qprime, Q, tmp, tmp2 - vmov.w \twiddle, \xi0 + vmov \twiddle, \xi0 montgomery_mul_32 \c4, \twiddle, \Qprime, \Q, \tmp, \tmp2 montgomery_mul_32 \c5, \twiddle, \Qprime, \Q, \tmp, \tmp2 montgomery_mul_32 \c6, \twiddle, \Qprime, \Q, \tmp, \tmp2 montgomery_mul_32 \c7, \twiddle, \Qprime, \Q, \tmp, \tmp2 addSub4 \c0, \c4, \c1, \c5, \c2, \c6, \c3, \c7 - vmov.w \twiddle, \xi1 + vmov \twiddle, \xi1 montgomery_mul_32 \c2, \twiddle, \Qprime, \Q, \tmp, \tmp2 montgomery_mul_32 \c3, \twiddle, \Qprime, \Q, \tmp, \tmp2 - vmov.w \twiddle, \xi2 + vmov \twiddle, \xi2 montgomery_mul_32 \c6, \twiddle, \Qprime, \Q, \tmp, \tmp2 montgomery_mul_32 \c7, \twiddle, \Qprime, \Q, \tmp, \tmp2 addSub4 \c0, \c2, \c1, \c3, \c4, \c6, \c5, \c7 - vmov.w \twiddle, \xi3 + vmov \twiddle, \xi3 montgomery_mul_32 \c1, \twiddle, \Qprime, \Q, \tmp, \tmp2 - vmov.w \twiddle, \xi4 + vmov \twiddle, \xi4 montgomery_mul_32 \c3, \twiddle, \Qprime, \Q, \tmp, \tmp2 - vmov.w \twiddle, \xi5 + vmov \twiddle, \xi5 montgomery_mul_32 \c5, \twiddle, \Qprime, \Q, \tmp, \tmp2 - vmov.w \twiddle, \xi6 + vmov \twiddle, \xi6 montgomery_mul_32 \c7, \twiddle, \Qprime, \Q, \tmp, \tmp2 addSub4 \c0, \c1, \c2, \c3, \c4, \c5, \c6, \c7 .endm .macro _3_layer_inv_CT_32 c0, c1, c2, c3, c4, c5, c6, c7, xi0, xi1, xi2, xi3, xi4, xi5, xi6, twiddle, Qprime, Q, tmp, tmp2 - vmov.w \twiddle, \xi0 + vmov \twiddle, \xi0 montgomery_mul_32 \c1, \twiddle, \Qprime, \Q, \tmp, \tmp2 montgomery_mul_32 \c3, \twiddle, \Qprime, \Q, \tmp, \tmp2 montgomery_mul_32 \c5, \twiddle, \Qprime, \Q, \tmp, \tmp2 montgomery_mul_32 \c7, \twiddle, \Qprime, \Q, \tmp, \tmp2 addSub4 \c0, \c1, \c2, \c3, \c4, \c5, \c6, \c7 - vmov.w \twiddle, \xi1 + vmov \twiddle, \xi1 montgomery_mul_32 \c2, \twiddle, \Qprime, \Q, \tmp, \tmp2 montgomery_mul_32 \c6, \twiddle, \Qprime, \Q, \tmp, \tmp2 - vmov.w \twiddle, \xi2 + vmov \twiddle, \xi2 montgomery_mul_32 \c3, \twiddle, \Qprime, \Q, \tmp, \tmp2 montgomery_mul_32 \c7, \twiddle, \Qprime, \Q, \tmp, \tmp2 addSub4 \c0, \c2, \c1, \c3, \c4, \c6, \c5, \c7 - vmov.w \twiddle, \xi3 + vmov \twiddle, \xi3 montgomery_mul_32 \c4, \twiddle, \Qprime, \Q, \tmp, \tmp2 - vmov.w \twiddle, \xi4 + vmov \twiddle, \xi4 montgomery_mul_32 \c5, \twiddle, \Qprime, \Q, \tmp, \tmp2 - vmov.w \twiddle, \xi5 + vmov \twiddle, \xi5 montgomery_mul_32 \c6, \twiddle, \Qprime, \Q, \tmp, \tmp2 - vmov.w \twiddle, \xi6 + vmov \twiddle, \xi6 montgomery_mul_32 \c7, \twiddle, \Qprime, \Q, \tmp, \tmp2 addSub4 \c0, \c4, \c1, \c5, \c2, \c6, \c3, \c7 .endm @@ -135,8 +135,8 @@ addSub2 \c4, \c1, \c6, \c3 addSub1 \c4, \c6 - vmov.w \tmp, \xi4 - vmov.w \tmp2, \xi6 + vmov \tmp, \xi4 + vmov \tmp2, \xi6 smull.w \c0, \c5, \c1, \tmp smlal.w \c0, \c5, \c3, \tmp2 @@ -181,7 +181,7 @@ .macro _3_layer_inv_butterfly_light_fast_second c0, c1, c2, c3, c4, c5, c6, c7, xi0, xi1, xi2, xi3, xi4, xi5, xi6, twiddle, Qprime, Q, tmp, tmp2 addSub2 \c0, \c1, \c2, \c3 - vmov.w \twiddle, \xi2 + vmov \twiddle, \xi2 montgomery_mul_32 \c3, \twiddle, \Qprime, \Q, \tmp, \tmp2 addSub2 \c0, \c2, \c1, \c3 @@ -200,7 +200,9 @@ smlad r0,r0,r0,r0 // void pqcrystals_dilithium_ntt(int32_t p[N]); .global pqcrystals_dilithium_ntt_opt_m7 +#ifndef __CLANG__ .type pqcrystals_dilithium_ntt_opt_m7,%function +#endif .align 2 pqcrystals_dilithium_ntt_opt_m7: // bind aliases @@ -235,7 +237,7 @@ pqcrystals_dilithium_ntt_opt_m7: .equ distance, 512 .equ strincr, 4 - ldr ptr_zeta, =#zetas_new332 + ldr ptr_zeta, =zetas_new332 vldm ptr_zeta!, {s2-s8} vmov s0, ptr_zeta @@ -244,198 +246,1422 @@ pqcrystals_dilithium_ntt_opt_m7: 1: layer123_start: // Instructions: 84 - // Expected cycles: 47 - // Expected IPC: 1.79 + // Expected cycles: 45 + // Expected IPC: 1.87 // - // Wall time: 69.42s - // User time: 69.42s + // Wall time: 2923.84s + // User time: 2923.84s // // -------------------------------- original position --------------------------------> // 0 25 50 75 // |------------------------|------------------------|------------------------|-------- - ldr.w r5, [r0, #6*distance/4] // ......*............................................................................. - vmov.w r11, s2 // ........*........................................................................... - ldr.w r9, [r0, #7*distance/4] // .......*............................................................................ - smull r10, r14, r5, r11 // ...............*.................................................................... - ldr.w r6, [r0, #5*distance/4] // .....*.............................................................................. - smull r4, r7, r9, r11 // ..................*................................................................. - vmov.w r5, s3 // .............................*...................................................... - mul r8, r10, r2 // ................*................................................................... - mul r12, r4, r2 // ...................*................................................................ - ldr.w r9, [r0, #2*distance/4] // ..*................................................................................. - smlal r10, r14, r8, r3 // .................*.................................................................. - ldr.w r10, [r0, #3*distance/4] // ...*................................................................................ - vmov.w r8, s4 // ....................................*............................................... - smull r1, r6, r6, r11 // ............*....................................................................... - smlal r4, r7, r12, r3 // ....................*............................................................... - add r9, r14 // .......................*............................................................ - mul r4, r1, r2 // .............*...................................................................... - sub.w r12, r9, r14, lsl #1 // ...........................*........................................................ - add r10, r7 // ........................*........................................................... - smull r14, r12, r12, r8 // .....................................*.............................................. - // gap // .................................................................................... - smlal r1, r6, r4, r3 // ..............*..................................................................... - sub.w r4, r10, r7, lsl #1 // ............................*....................................................... - mul r7, r14, r2 // ......................................*............................................. - smull r10, r1, r10, r5 // .................................*.................................................. // gap // .................................................................................... + ldr.w r7, [r0, #7*distance/4] // .......*............................................................................ + vmov r4, s2 // ........*........................................................................... + ldr.w r6, [r0, #5*distance/4] // .....*.............................................................................. + ldr.w r9, [r0, #1*distance/4] // .*.................................................................................. + smull r11, r8, r7, r4 // ..................*................................................................. + smull r1, r10, r6, r4 // ............*....................................................................... + ldr.w r5, [r0, #6*distance/4] // ......*............................................................................. + mul r6, r11, r2 // ...................*................................................................ + ldr.w r7, [r0, #3*distance/4] // ...*................................................................................ + mul r14, r1, r2 // .............*...................................................................... // gap // .................................................................................... - smlal r14, r12, r7, r3 // .......................................*............................................ - mul r7, r10, r2 // ..................................*................................................. + vmov r12, s4 // ....................................*............................................... + smlal r11, r8, r6, r3 // ....................*............................................................... // gap // .................................................................................... - smull r14, r8, r4, r8 // ........................................*........................................... - ldr.w r4, [r0, #4*distance/4] // ....*............................................................................... - smlal r10, r1, r7, r3 // ...................................*................................................ - ldr.w r10, [r0, #1*distance/4] // .*.................................................................................. - mul r7, r14, r2 // .........................................*.......................................... - add r10, r6 // ......................*............................................................. - sub.w r6, r10, r6, lsl #1 // ..........................*......................................................... - smull r11, r4, r4, r11 // .........*.......................................................................... - add r10, r1 // ............................................*....................................... - smlal r14, r8, r7, r3 // ..........................................*......................................... - mul r7, r11, r2 // ..........*......................................................................... - sub.w r1, r10, r1, lsl #1 // ................................................*................................... - smull r14, r9, r9, r5 // ..............................*..................................................... - add r6, r8 // ..............................................*..................................... - smlal r11, r4, r7, r3 // ...........*........................................................................ - vmov.w r7, s6 // .......................................................*............................ - mul r11, r14, r2 // ...............................*.................................................... - ldr.w r5, [r0] // *................................................................................... - smull r7, r1, r1, r7 // ........................................................*........................... - add r5, r4 // .....................*.............................................................. - smlal r14, r9, r11, r3 // ................................*................................................... - sub.w r14, r6, r8, lsl #1 // ..................................................*................................. - mul r11, r7, r2 // .........................................................*.......................... - sub.w r4, r5, r4, lsl #1 // .........................*.......................................................... - vmov.w r8, s8 // ...............................................................*.................... - add r5, r9 // ...........................................*........................................ - smlal r7, r1, r11, r3 // ..........................................................*......................... - sub.w r7, r5, r9, lsl #1 // ...............................................*.................................... - smull r8, r14, r14, r8 // ................................................................*................... - vmov.w r11, s7 // ...........................................................*........................ - add r4, r12 // .............................................*...................................... - add r7, r1 // ....................................................................*............... - mul r9, r8, r2 // .................................................................*.................. - str.w r7, [r0, #2*distance/4] // ............................................................................*....... - sub.w r12, r4, r12, lsl #1 // .................................................*.................................. - smull r6, r11, r6, r11 // ............................................................*....................... - smlal r8, r14, r9, r3 // ..................................................................*................. - sub.w r8, r7, r1, lsl #1 // ........................................................................*........... - mul r1, r6, r2 // .............................................................*...................... - str.w r8, [r0, #3*distance/4] // .............................................................................*...... - vmov.w r9, s5 // ...................................................*................................ - add r12, r14 // ......................................................................*............. - smull r10, r9, r10, r9 // ....................................................*............................... - str.w r12, [r0, #6*distance/4] // ................................................................................*... - smlal r6, r11, r1, r3 // ..............................................................*..................... - sub.w r14, r12, r14, lsl #1 // ..........................................................................*......... - mul r1, r10, r2 // .....................................................*.............................. - str.w r14, [r0, #7*distance/4] // .................................................................................*.. - add r4, r11 // .....................................................................*.............. + smull r5, r11, r5, r4 // ...............*.................................................................... + add r7, r7, r8 // ........................*........................................................... + smlal r1, r10, r14, r3 // ..............*..................................................................... + mul r6, r5, r2 // ................*................................................................... + sub.w r14, r7, r8, lsl #1 // ............................*....................................................... + add r9, r9, r10 // ......................*............................................................. + smull r1, r14, r14, r12 // ........................................*........................................... + smlal r5, r11, r6, r3 // .................*.................................................................. + ldr.w r6, [r0, #4*distance/4] // ....*............................................................................... + ldr.w r8, [r0, #2*distance/4] // ..*................................................................................. + mul r5, r1, r2 // .........................................*.......................................... + sub.w r10, r9, r10, lsl #1 // ..........................*......................................................... + smull r6, r4, r6, r4 // .........*.......................................................................... + smlal r1, r14, r5, r3 // ..........................................*......................................... + add r8, r8, r11 // .......................*............................................................ + sub.w r1, r8, r11, lsl #1 // ...........................*........................................................ + mul r5, r6, r2 // ..........*......................................................................... + smull r11, r1, r1, r12 // .....................................*.............................................. + add r12, r10, r14 // ..............................................*..................................... + sub.w r14, r12, r14, lsl #1 // ..................................................*................................. + smlal r6, r4, r5, r3 // ...........*........................................................................ + mul r10, r11, r2 // ......................................*............................................. + vmov r5, s8 // ...............................................................*.................... + smull r6, r5, r14, r5 // ................................................................*................... + ldr.w r14, [r0] // *................................................................................... + smlal r11, r1, r10, r3 // .......................................*............................................ + vmov r11, s7 // ...........................................................*........................ + mul r10, r6, r2 // .................................................................*.................. + add r14, r14, r4 // .....................*.............................................................. + sub.w r4, r14, r4, lsl #1 // .........................*.......................................................... + smull r11, r12, r12, r11 // ............................................................*....................... + smlal r6, r5, r10, r3 // ..................................................................*................. + add r10, r4, r1 // .............................................*...................................... + sub.w r1, r10, r1, lsl #1 // .................................................*.................................. + vmov r6, s3 // .............................*...................................................... + add r1, r1, r5 // ......................................................................*............. + smull r4, r7, r7, r6 // .................................*.................................................. + str.w r1, [r0, #6*distance/4] // ................................................................................*... + smull r6, r8, r8, r6 // ..............................*..................................................... + sub.w r1, r1, r5, lsl #1 // ..........................................................................*......... + mul r5, r4, r2 // ..................................*................................................. + str.w r1, [r0, #7*distance/4] // .................................................................................*.. + mul r1, r6, r2 // ...............................*.................................................... + smlal r4, r7, r5, r3 // ...................................*................................................ // gap // .................................................................................... - str.w r4, [r0, #4*distance/4] // ..............................................................................*..... - smlal r10, r9, r1, r3 // ......................................................*............................. - sub.w r11, r4, r11, lsl #1 // .........................................................................*.......... + smlal r6, r8, r1, r3 // ................................*................................................... + vmov r6, s5 // ...................................................*................................ + mul r1, r11, r2 // .............................................................*...................... + add r5, r9, r7 // ............................................*....................................... + sub.w r7, r5, r7, lsl #1 // ................................................*................................... + smull r6, r4, r5, r6 // ....................................................*............................... + add r5, r14, r8 // ...........................................*........................................ + smlal r11, r12, r1, r3 // ..............................................................*..................... + vmov r9, s6 // .......................................................*............................ + mul r1, r6, r2 // .....................................................*.............................. + add r11, r10, r12 // .....................................................................*.............. + smull r9, r7, r7, r9 // ........................................................*........................... + sub.w r12, r11, r12, lsl #1 // .........................................................................*.......... + smlal r6, r4, r1, r3 // ......................................................*............................. + mul r10, r9, r2 // .........................................................*.......................... + str.w r11, [r0, #4*distance/4] // ..............................................................................*..... + add r1, r5, r4 // ...................................................................*................ + sub.w r11, r5, r8, lsl #1 // ...............................................*.................................... + sub.w r8, r1, r4, lsl #1 // .......................................................................*............ + smlal r9, r7, r10, r3 // ..........................................................*......................... // gap // .................................................................................... - str.w r11, [r0, #5*distance/4] // ...............................................................................*.... - add r5, r9 // ...................................................................*................ - sub.w r6, r5, r9, lsl #1 // .......................................................................*............ + str.w r12, [r0, #5*distance/4] // ...............................................................................*.... + add r4, r11, r7 // ....................................................................*............... + str.w r8, [r0, #1*distance/4] // ...........................................................................*........ + str.w r4, [r0, #2*distance/4] // ............................................................................*....... + sub.w r4, r4, r7, lsl #1 // ........................................................................*........... + str.w r4, [r0, #3*distance/4] // .............................................................................*...... // gap // .................................................................................... vmov r10, s9 // ...................................................................................* - str.w r6, [r0, #1*distance/4] // ...........................................................................*........ - // gap // .................................................................................... - // gap // .................................................................................... - // gap // .................................................................................... - str.w r5, [r0], #strincr // ..................................................................................*. + str r1, [r0], #strincr // ..................................................................................*. // ---------------------------------- new position -----------------------------------> // 0 25 50 75 // |------------------------|------------------------|------------------------|-------- - // ldr.w R5, [R0] // ...........................................*........................................ - // ldr.w R6, [R0, #1*distance/4] // .............................*...................................................... - // ldr.w R7, [R0, #2*distance/4] // .........*.......................................................................... - // ldr.w R8, [R0, #3*distance/4] // ...........*........................................................................ - // ldr.w R4, [R0, #4*distance/4] // ...........................*........................................................ - // ldr.w R11, [R0, #5*distance/4] // ....*............................................................................... - // ldr.w R12, [R0, #6*distance/4] // *................................................................................... - // ldr.w R14, [R0, #7*distance/4] // ..*................................................................................. - // vmov.w R1, s2 // .*.................................................................................. - // smull R9, R4, R4, R1 // .................................*.................................................. - // mul R10, R9, R2 // ....................................*............................................... - // smlal R9, R4, R10, R3 // ........................................*........................................... - // smull R9, R11, R11, R1 // .............*...................................................................... - // mul R10, R9, R2 // ................*................................................................... - // smlal R9, R11, R10, R3 // ....................*............................................................... - // smull R9, R12, R12, R1 // ...*................................................................................ + // ldr.w R5, [R0] // ....................................*............................................... + // ldr.w R6, [R0, #1*distance/4] // ...*................................................................................ + // ldr.w R7, [R0, #2*distance/4] // .....................*.............................................................. + // ldr.w R8, [R0, #3*distance/4] // ........*........................................................................... + // ldr.w R4, [R0, #4*distance/4] // ....................*............................................................... + // ldr.w R11, [R0, #5*distance/4] // ..*................................................................................. + // ldr.w R12, [R0, #6*distance/4] // ......*............................................................................. + // ldr.w R14, [R0, #7*distance/4] // *................................................................................... + // vmov R1, s2 // .*.................................................................................. + // smull R9, R4, R4, R1 // ........................*........................................................... + // mul R10, R9, R2 // ............................*....................................................... + // smlal R9, R4, R10, R3 // ................................*................................................... + // smull R9, R11, R11, R1 // .....*.............................................................................. + // mul R10, R9, R2 // .........*.......................................................................... + // smlal R9, R11, R10, R3 // ..............*..................................................................... + // smull R9, R12, R12, R1 // ............*....................................................................... + // mul R10, R9, R2 // ...............*.................................................................... + // smlal R9, R12, R10, R3 // ...................*................................................................ + // smull R9, R14, R14, R1 // ....*............................................................................... // mul R10, R9, R2 // .......*............................................................................ - // smlal R9, R12, R10, R3 // ..........*......................................................................... - // smull R9, R14, R14, R1 // .....*.............................................................................. - // mul R10, R9, R2 // ........*........................................................................... - // smlal R9, R14, R10, R3 // ..............*..................................................................... - // add R5, R4 // .............................................*...................................... - // add R6, R11 // ...............................*.................................................... - // add R7, R12 // ...............*.................................................................... - // add R8, R14 // ..................*................................................................. - // sub.w R4, R5, R4, lsl #1 // .................................................*.................................. - // sub.w R11, R6, R11, lsl #1 // ................................*................................................... - // sub.w R12, R7, R12, lsl #1 // .................*.................................................................. - // sub.w R14, R8, R14, lsl #1 // .....................*.............................................................. - // vmov.w R1, s3 // ......*............................................................................. - // smull R9, R7, R7, R1 // ......................................*............................................. - // mul R10, R9, R2 // ..........................................*......................................... - // smlal R9, R7, R10, R3 // ..............................................*..................................... - // smull R9, R8, R8, R1 // .......................*............................................................ - // mul R10, R9, R2 // .........................*.......................................................... - // smlal R9, R8, R10, R3 // ............................*....................................................... - // vmov.w R1, s4 // ............*....................................................................... - // smull R9, R12, R12, R1 // ...................*................................................................ + // smlal R9, R14, R10, R3 // ...........*........................................................................ + // add R5, R5, R4 // ........................................*........................................... + // add R6, R6, R11 // .................*.................................................................. + // add R7, R7, R12 // ..........................*......................................................... + // add R8, R8, R14 // .............*...................................................................... + // sub.w R4, R5, R4, lsl #1 // .........................................*.......................................... + // sub.w R11, R6, R11, lsl #1 // .......................*............................................................ + // sub.w R12, R7, R12, lsl #1 // ...........................*........................................................ + // sub.w R14, R8, R14, lsl #1 // ................*................................................................... + // vmov R1, s3 // ..............................................*..................................... + // smull R9, R7, R7, R1 // ..................................................*................................. + // mul R10, R9, R2 // ......................................................*............................. + // smlal R9, R7, R10, R3 // ........................................................*........................... + // smull R9, R8, R8, R1 // ................................................*................................... + // mul R10, R9, R2 // ....................................................*............................... + // smlal R9, R8, R10, R3 // .......................................................*............................ + // vmov R1, s4 // ..........*......................................................................... + // smull R9, R12, R12, R1 // .............................*...................................................... + // mul R10, R9, R2 // .................................*.................................................. + // smlal R9, R12, R10, R3 // .....................................*.............................................. + // smull R9, R14, R14, R1 // ..................*................................................................. // mul R10, R9, R2 // ......................*............................................................. - // smlal R9, R12, R10, R3 // ........................*........................................................... - // smull R9, R14, R14, R1 // ..........................*......................................................... - // mul R10, R9, R2 // ..............................*..................................................... - // smlal R9, R14, R10, R3 // ...................................*................................................ - // add R5, R7 // ...................................................*................................ - // add R6, R8 // ..................................*................................................. - // add R4, R12 // ........................................................*........................... - // add R11, R14 // .......................................*............................................ - // sub.w R7, R5, R7, lsl #1 // .....................................................*.............................. - // sub.w R8, R6, R8, lsl #1 // .....................................*.............................................. - // sub.w R12, R4, R12, lsl #1 // ............................................................*....................... - // sub.w R14, R11, R14, lsl #1 // ...............................................*.................................... - // vmov.w R1, s5 // ..................................................................*................. - // smull R9, R6, R6, R1 // ....................................................................*............... - // mul R10, R9, R2 // ........................................................................*........... - // smlal R9, R6, R10, R3 // ............................................................................*....... - // vmov.w R1, s6 // .........................................*.......................................... - // smull R9, R8, R8, R1 // ............................................*....................................... - // mul R10, R9, R2 // ................................................*................................... - // smlal R9, R8, R10, R3 // ....................................................*............................... - // vmov.w R1, s7 // .......................................................*............................ - // smull R9, R11, R11, R1 // .............................................................*...................... - // mul R10, R9, R2 // ................................................................*................... - // smlal R9, R11, R10, R3 // ......................................................................*............. - // vmov.w R1, s8 // ..................................................*................................. - // smull R9, R14, R14, R1 // ......................................................*............................. + // smlal R9, R14, R10, R3 // .........................*.......................................................... + // add R5, R5, R7 // ..............................................................*..................... + // add R6, R6, R8 // ...........................................................*........................ + // add R4, R4, R12 // ............................................*....................................... + // add R11, R11, R14 // ..............................*..................................................... + // sub.w R7, R5, R7, lsl #1 // .........................................................................*.......... + // sub.w R8, R6, R8, lsl #1 // ............................................................*....................... + // sub.w R12, R4, R12, lsl #1 // .............................................*...................................... + // sub.w R14, R11, R14, lsl #1 // ...............................*.................................................... + // vmov R1, s5 // .........................................................*.......................... + // smull R9, R6, R6, R1 // .............................................................*...................... + // mul R10, R9, R2 // .................................................................*.................. + // smlal R9, R6, R10, R3 // .....................................................................*.............. + // vmov R1, s6 // ................................................................*................... + // smull R9, R8, R8, R1 // ...................................................................*................ + // mul R10, R9, R2 // ......................................................................*............. + // smlal R9, R8, R10, R3 // ...........................................................................*........ + // vmov R1, s7 // ......................................*............................................. + // smull R9, R11, R11, R1 // ..........................................*......................................... // mul R10, R9, R2 // ..........................................................*......................... - // smlal R9, R14, R10, R3 // ..............................................................*..................... - // add R5, R6 // ...............................................................................*.... - // add R7, R8 // .........................................................*.......................... - // add R4, R11 // ..........................................................................*......... - // add R12, R14 // ...................................................................*................ - // sub.w R6, R5, R6, lsl #1 // ................................................................................*... - // sub.w R8, R7, R8, lsl #1 // ...............................................................*.................... - // sub.w R11, R4, R11, lsl #1 // .............................................................................*...... - // sub.w R14, R12, R14, lsl #1 // .......................................................................*............ - // str.w R6, [R0, #1*distance/4] // ..................................................................................*. - // str.w R7, [R0, #2*distance/4] // ...........................................................*........................ - // str.w R8, [R0, #3*distance/4] // .................................................................*.................. - // str.w R4, [R0, #4*distance/4] // ...........................................................................*........ - // str.w R11, [R0, #5*distance/4] // ..............................................................................*..... - // str.w R12, [R0, #6*distance/4] // .....................................................................*.............. - // str.w R14, [R0, #7*distance/4] // .........................................................................*.......... - // str.w R5, [R0], #strincr // ...................................................................................* - // vmov R10, s9 // .................................................................................*.. - + // smlal R9, R11, R10, R3 // ...............................................................*.................... + // vmov R1, s8 // ..................................*................................................. + // smull R9, R14, R14, R1 // ...................................*................................................ + // mul R10, R9, R2 // .......................................*............................................ + // smlal R9, R14, R10, R3 // ...........................................*........................................ + // add R5, R5, R6 // ........................................................................*........... + // add R7, R7, R8 // .............................................................................*...... + // add R4, R4, R11 // ..................................................................*................. + // add R12, R12, R14 // ...............................................*.................................... + // sub.w R6, R5, R6, lsl #1 // ..........................................................................*......... + // sub.w R8, R7, R8, lsl #1 // ................................................................................*... + // sub.w R11, R4, R11, lsl #1 // ....................................................................*............... + // sub.w R14, R12, R14, lsl #1 // ...................................................*................................ + // str.w R6, [R0, #1*distance/4] // ..............................................................................*..... + // str.w R7, [R0, #2*distance/4] // ...............................................................................*.... + // str.w R8, [R0, #3*distance/4] // .................................................................................*.. + // str.w R4, [R0, #4*distance/4] // .......................................................................*............ + // str.w R11, [R0, #5*distance/4] // ............................................................................*....... + // str.w R12, [R0, #6*distance/4] // .................................................*.................................. + // str.w R14, [R0, #7*distance/4] // .....................................................*.............................. + // str R5, [R0], #strincr // ...................................................................................* + // vmov R10, s9 // ..................................................................................*. + + // + // LLVM MCA STATISTICS (ORIGINAL) BEGIN + // + // + // [0] Code Region + // + // Iterations: 100 + // Instructions: 8400 + // Total Cycles: 10701 + // Total uOps: 8400 + // + // Dispatch Width: 2 + // uOps Per Cycle: 0.78 + // IPC: 0.78 + // Block RThroughput: 42.0 + // + // + // Cycles with backend pressure increase [ 78.49% ] + // Throughput Bottlenecks: + // Resource Pressure [ 18.69% ] + // Data Dependencies: [ 59.80% ] + // - Register Dependencies [ 59.80% ] + // - Memory Dependencies [ 0.00% ] + // + // + // Instruction Info: + // [1]: #uOps + // [2]: Latency + // [3]: RThroughput + // [4]: MayLoad + // [5]: MayStore + // [6]: HasSideEffects (U) + // + // [1] [2] [3] [4] [5] [6] Instructions: + // 1 2 0.50 * ldr.w r5, [r0] + // 1 2 0.50 * ldr.w r6, [r0, #128] + // 1 2 0.50 * ldr.w r7, [r0, #256] + // 1 2 0.50 * ldr.w r8, [r0, #384] + // 1 2 0.50 * ldr.w r4, [r0, #512] + // 1 2 0.50 * ldr.w r11, [r0, #640] + // 1 2 0.50 * ldr.w r12, [r0, #768] + // 1 2 0.50 * ldr.w lr, [r0, #896] + // 1 3 0.50 vmov r1, s2 + // 1 2 1.00 smull r9, r4, r4, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, r4, r10, r3 + // 1 2 1.00 smull r9, r11, r11, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, r11, r10, r3 + // 1 2 1.00 smull r9, r12, r12, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, r12, r10, r3 + // 1 2 1.00 smull r9, lr, lr, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, lr, r10, r3 + // 1 1 0.50 add r5, r4 + // 1 1 0.50 add r6, r11 + // 1 1 0.50 add r7, r12 + // 1 1 0.50 add r8, lr + // 1 2 1.00 sub.w r4, r5, r4, lsl #1 + // 1 2 1.00 sub.w r11, r6, r11, lsl #1 + // 1 2 1.00 sub.w r12, r7, r12, lsl #1 + // 1 2 1.00 sub.w lr, r8, lr, lsl #1 + // 1 3 0.50 vmov r1, s3 + // 1 2 1.00 smull r9, r7, r7, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, r7, r10, r3 + // 1 2 1.00 smull r9, r8, r8, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, r8, r10, r3 + // 1 3 0.50 vmov r1, s4 + // 1 2 1.00 smull r9, r12, r12, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, r12, r10, r3 + // 1 2 1.00 smull r9, lr, lr, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, lr, r10, r3 + // 1 1 0.50 add r5, r7 + // 1 1 0.50 add r6, r8 + // 1 1 0.50 add r4, r12 + // 1 1 0.50 add r11, lr + // 1 2 1.00 sub.w r7, r5, r7, lsl #1 + // 1 2 1.00 sub.w r8, r6, r8, lsl #1 + // 1 2 1.00 sub.w r12, r4, r12, lsl #1 + // 1 2 1.00 sub.w lr, r11, lr, lsl #1 + // 1 3 0.50 vmov r1, s5 + // 1 2 1.00 smull r9, r6, r6, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, r6, r10, r3 + // 1 3 0.50 vmov r1, s6 + // 1 2 1.00 smull r9, r8, r8, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, r8, r10, r3 + // 1 3 0.50 vmov r1, s7 + // 1 2 1.00 smull r9, r11, r11, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, r11, r10, r3 + // 1 3 0.50 vmov r1, s8 + // 1 2 1.00 smull r9, lr, lr, r1 + // 1 2 1.00 mul r10, r9, r2 + // 1 2 1.00 smlal r9, lr, r10, r3 + // 1 1 0.50 add r5, r6 + // 1 1 0.50 add r7, r8 + // 1 1 0.50 add r4, r11 + // 1 1 0.50 add r12, lr + // 1 2 1.00 sub.w r6, r5, r6, lsl #1 + // 1 2 1.00 sub.w r8, r7, r8, lsl #1 + // 1 2 1.00 sub.w r11, r4, r11, lsl #1 + // 1 2 1.00 sub.w lr, r12, lr, lsl #1 + // 1 3 1.00 * str.w r6, [r0, #128] + // 1 3 1.00 * str.w r7, [r0, #256] + // 1 3 1.00 * str.w r8, [r0, #384] + // 1 3 1.00 * str.w r4, [r0, #512] + // 1 3 1.00 * str.w r11, [r0, #640] + // 1 3 1.00 * str.w r12, [r0, #768] + // 1 3 1.00 * str.w lr, [r0, #896] + // 1 3 1.00 * str r5, [r0], #4 + // 1 3 0.50 vmov r10, s9 + // + // + // Dynamic Dispatch Stall Cycles: + // RAT - Register unavailable: 6399 (59.8%) + // RCU - Retire tokens unavailable: 0 + // SCHEDQ - Scheduler full: 0 + // LQ - Load queue full: 0 + // SQ - Store queue full: 0 + // GROUP - Static restrictions on the dispatch group: 2000 (18.7%) + // USH - Uncategorised Structural Hazard: 0 + // + // + // Dispatch Logic - number of cycles where we saw N micro opcodes dispatched: + // [# dispatched], [# cycles] + // 0, 4101 (38.3%) + // 1, 4800 (44.9%) + // 2, 1800 (16.8%) + // + // + // Schedulers - number of cycles where we saw N micro opcodes issued: + // [# issued], [# cycles] + // 0, 4101 (38.3%) + // 1, 4800 (44.9%) + // 2, 1800 (16.8%) + // + // Scheduler's queue usage: + // No scheduler resources used. + // + // + // Register File statistics: + // Total number of mappings created: 10100 + // Max number of mappings used: 4 + // + // + // Resources: + // [0.0] - M7UnitALU + // [0.1] - M7UnitALU + // [1] - M7UnitBranch + // [2] - M7UnitLoadH + // [3] - M7UnitLoadL + // [4] - M7UnitMAC + // [5] - M7UnitSIMD + // [6] - M7UnitShift1 + // [7] - M7UnitShift2 + // [8] - M7UnitStore + // [9] - M7UnitVFP + // [10] - M7UnitVPortH + // [11] - M7UnitVPortL + // + // + // Resource pressure per iteration: + // [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] + // 12.00 12.00 - 4.00 4.00 36.00 - 12.00 - 8.00 - 4.00 4.00 + // + // Resource pressure by instruction: + // [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: + // - - - - 1.00 - - - - - - - - ldr.w r5, [r0] + // - - - 1.00 - - - - - - - - - ldr.w r6, [r0, #128] + // - - - - 1.00 - - - - - - - - ldr.w r7, [r0, #256] + // - - - 1.00 - - - - - - - - - ldr.w r8, [r0, #384] + // - - - - 1.00 - - - - - - - - ldr.w r4, [r0, #512] + // - - - 1.00 - - - - - - - - - ldr.w r11, [r0, #640] + // - - - - 1.00 - - - - - - - - ldr.w r12, [r0, #768] + // - - - 1.00 - - - - - - - - - ldr.w lr, [r0, #896] + // - - - - - - - - - - - - 1.00 vmov r1, s2 + // - - - - - 1.00 - - - - - - - smull r9, r4, r4, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, r4, r10, r3 + // - - - - - 1.00 - - - - - - - smull r9, r11, r11, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, r11, r10, r3 + // - - - - - 1.00 - - - - - - - smull r9, r12, r12, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, r12, r10, r3 + // - - - - - 1.00 - - - - - - - smull r9, lr, lr, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, lr, r10, r3 + // - 1.00 - - - - - - - - - - - add r5, r4 + // 1.00 - - - - - - - - - - - - add r6, r11 + // - 1.00 - - - - - - - - - - - add r7, r12 + // 1.00 - - - - - - - - - - - - add r8, lr + // - 1.00 - - - - - 1.00 - - - - - sub.w r4, r5, r4, lsl #1 + // 1.00 - - - - - - 1.00 - - - - - sub.w r11, r6, r11, lsl #1 + // - 1.00 - - - - - 1.00 - - - - - sub.w r12, r7, r12, lsl #1 + // 1.00 - - - - - - 1.00 - - - - - sub.w lr, r8, lr, lsl #1 + // - - - - - - - - - - - 1.00 - vmov r1, s3 + // - - - - - 1.00 - - - - - - - smull r9, r7, r7, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, r7, r10, r3 + // - - - - - 1.00 - - - - - - - smull r9, r8, r8, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, r8, r10, r3 + // - - - - - - - - - - - - 1.00 vmov r1, s4 + // - - - - - 1.00 - - - - - - - smull r9, r12, r12, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, r12, r10, r3 + // - - - - - 1.00 - - - - - - - smull r9, lr, lr, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, lr, r10, r3 + // - 1.00 - - - - - - - - - - - add r5, r7 + // 1.00 - - - - - - - - - - - - add r6, r8 + // - 1.00 - - - - - - - - - - - add r4, r12 + // 1.00 - - - - - - - - - - - - add r11, lr + // - 1.00 - - - - - 1.00 - - - - - sub.w r7, r5, r7, lsl #1 + // 1.00 - - - - - - 1.00 - - - - - sub.w r8, r6, r8, lsl #1 + // - 1.00 - - - - - 1.00 - - - - - sub.w r12, r4, r12, lsl #1 + // 1.00 - - - - - - 1.00 - - - - - sub.w lr, r11, lr, lsl #1 + // - - - - - - - - - - - 1.00 - vmov r1, s5 + // - - - - - 1.00 - - - - - - - smull r9, r6, r6, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, r6, r10, r3 + // - - - - - - - - - - - - 1.00 vmov r1, s6 + // - - - - - 1.00 - - - - - - - smull r9, r8, r8, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, r8, r10, r3 + // - - - - - - - - - - - 1.00 - vmov r1, s7 + // - - - - - 1.00 - - - - - - - smull r9, r11, r11, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, r11, r10, r3 + // - - - - - - - - - - - - 1.00 vmov r1, s8 + // - - - - - 1.00 - - - - - - - smull r9, lr, lr, r1 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - 1.00 - - - - - - - smlal r9, lr, r10, r3 + // - 1.00 - - - - - - - - - - - add r5, r6 + // 1.00 - - - - - - - - - - - - add r7, r8 + // - 1.00 - - - - - - - - - - - add r4, r11 + // 1.00 - - - - - - - - - - - - add r12, lr + // - 1.00 - - - - - 1.00 - - - - - sub.w r6, r5, r6, lsl #1 + // 1.00 - - - - - - 1.00 - - - - - sub.w r8, r7, r8, lsl #1 + // - 1.00 - - - - - 1.00 - - - - - sub.w r11, r4, r11, lsl #1 + // 1.00 - - - - - - 1.00 - - - - - sub.w lr, r12, lr, lsl #1 + // - - - - - - - - - 1.00 - - - str.w r6, [r0, #128] + // - - - - - - - - - 1.00 - - - str.w r7, [r0, #256] + // - - - - - - - - - 1.00 - - - str.w r8, [r0, #384] + // - - - - - - - - - 1.00 - - - str.w r4, [r0, #512] + // - - - - - - - - - 1.00 - - - str.w r11, [r0, #640] + // - - - - - - - - - 1.00 - - - str.w r12, [r0, #768] + // - - - - - - - - - 1.00 - - - str.w lr, [r0, #896] + // - - - - - - - - - 1.00 - - - str r5, [r0], #4 + // - - - - - - - - - - - 1.00 - vmov r10, s9 + // + // + // Timeline view: + // 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 + // Index 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 01 + // + // [0,0] DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r5, [r0] + // [0,1] DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r6, [r0, #128] + // [0,2] .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r7, [r0, #256] + // [0,3] .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r8, [r0, #384] + // [0,4] . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r4, [r0, #512] + // [0,5] . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r11, [r0, #640] + // [0,6] . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r12, [r0, #768] + // [0,7] . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w lr, [r0, #896] + // [0,8] . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s2 + // [0,9] . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r4, r4, r1 + // [0,10] . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,11] . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r4, r10, r3 + // [0,12] . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r11, r11, r1 + // [0,13] . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,14] . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r11, r10, r3 + // [0,15] . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r12, r12, r1 + // [0,16] . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,17] . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r12, r10, r3 + // [0,18] . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, lr, lr, r1 + // [0,19] . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,20] . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, lr, r10, r3 + // [0,21] . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r5, r4 + // [0,22] . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r6, r11 + // [0,23] . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r7, r12 + // [0,24] . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r8, lr + // [0,25] . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r4, r5, r4, lsl #1 + // [0,26] . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r11, r6, r11, lsl #1 + // [0,27] . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r12, r7, r12, lsl #1 + // [0,28] . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w lr, r8, lr, lsl #1 + // [0,29] . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s3 + // [0,30] . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r7, r7, r1 + // [0,31] . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,32] . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r7, r10, r3 + // [0,33] . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r8, r8, r1 + // [0,34] . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,35] . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r8, r10, r3 + // [0,36] . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s4 + // [0,37] . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r12, r12, r1 + // [0,38] . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,39] . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r12, r10, r3 + // [0,40] . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, lr, lr, r1 + // [0,41] . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,42] . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, lr, r10, r3 + // [0,43] . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r5, r7 + // [0,44] . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r6, r8 + // [0,45] . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r4, r12 + // [0,46] . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r11, lr + // [0,47] . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r7, r5, r7, lsl #1 + // [0,48] . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r8, r6, r8, lsl #1 + // [0,49] . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r12, r4, r12, lsl #1 + // [0,50] . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w lr, r11, lr, lsl #1 + // [0,51] . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s5 + // [0,52] . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r6, r6, r1 + // [0,53] . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,54] . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r6, r10, r3 + // [0,55] . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s6 + // [0,56] . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r8, r8, r1 + // [0,57] . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,58] . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r8, r10, r3 + // [0,59] . . . . . . . . . . . . . . . .DeeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s7 + // [0,60] . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r11, r11, r1 + // [0,61] . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,62] . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r11, r10, r3 + // [0,63] . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s8 + // [0,64] . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, lr, lr, r1 + // [0,65] . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [0,66] . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, lr, r10, r3 + // [0,67] . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r5, r6 + // [0,68] . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r7, r8 + // [0,69] . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r4, r11 + // [0,70] . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r12, lr + // [0,71] . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r6, r5, r6, lsl #1 + // [0,72] . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r8, r7, r8, lsl #1 + // [0,73] . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r11, r4, r11, lsl #1 + // [0,74] . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w lr, r12, lr, lsl #1 + // [0,75] . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. str.w r6, [r0, #128] + // [0,76] . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. str.w r7, [r0, #256] + // [0,77] . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. str.w r8, [r0, #384] + // [0,78] . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. str.w r4, [r0, #512] + // [0,79] . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. str.w r11, [r0, #640] + // [0,80] . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. str.w r12, [r0, #768] + // [0,81] . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. str.w lr, [r0, #896] + // [0,82] . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. str r5, [r0], #4 + // [0,83] . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r10, s9 + // [1,0] . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r5, [r0] + // [1,1] . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r6, [r0, #128] + // [1,2] . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r7, [r0, #256] + // [1,3] . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r8, [r0, #384] + // [1,4] . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r4, [r0, #512] + // [1,5] . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r11, [r0, #640] + // [1,6] . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w r12, [r0, #768] + // [1,7] . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ldr.w lr, [r0, #896] + // [1,8] . . . . . . . . . . . . . . . . . . . . . . .DeeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s2 + // [1,9] . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r4, r4, r1 + // [1,10] . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,11] . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r4, r10, r3 + // [1,12] . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r11, r11, r1 + // [1,13] . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,14] . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r11, r10, r3 + // [1,15] . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r12, r12, r1 + // [1,16] . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,17] . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r12, r10, r3 + // [1,18] . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, lr, lr, r1 + // [1,19] . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,20] . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, lr, r10, r3 + // [1,21] . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r5, r4 + // [1,22] . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r6, r11 + // [1,23] . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r7, r12 + // [1,24] . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r8, lr + // [1,25] . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r4, r5, r4, lsl #1 + // [1,26] . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r11, r6, r11, lsl #1 + // [1,27] . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r12, r7, r12, lsl #1 + // [1,28] . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w lr, r8, lr, lsl #1 + // [1,29] . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s3 + // [1,30] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r7, r7, r1 + // [1,31] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,32] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r7, r10, r3 + // [1,33] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r8, r8, r1 + // [1,34] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,35] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r8, r10, r3 + // [1,36] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s4 + // [1,37] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r12, r12, r1 + // [1,38] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,39] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r12, r10, r3 + // [1,40] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, lr, lr, r1 + // [1,41] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,42] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, lr, r10, r3 + // [1,43] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r5, r7 + // [1,44] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r6, r8 + // [1,45] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r4, r12 + // [1,46] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. add r11, lr + // [1,47] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r7, r5, r7, lsl #1 + // [1,48] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r8, r6, r8, lsl #1 + // [1,49] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r12, r4, r12, lsl #1 + // [1,50] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. sub.w lr, r11, lr, lsl #1 + // [1,51] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s5 + // [1,52] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r6, r6, r1 + // [1,53] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,54] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r6, r10, r3 + // [1,55] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s6 + // [1,56] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r8, r8, r1 + // [1,57] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,58] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r8, r10, r3 + // [1,59] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s7 + // [1,60] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, r11, r11, r1 + // [1,61] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,62] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, r11, r10, r3 + // [1,63] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . .. vmov r1, s8 + // [1,64] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . .. smull r9, lr, lr, r1 + // [1,65] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [1,66] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . .. smlal r9, lr, r10, r3 + // [1,67] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . .. add r5, r6 + // [1,68] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . .. add r7, r8 + // [1,69] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . .. add r4, r11 + // [1,70] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . .. add r12, lr + // [1,71] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r6, r5, r6, lsl #1 + // [1,72] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r8, r7, r8, lsl #1 + // [1,73] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . .. sub.w r11, r4, r11, lsl #1 + // [1,74] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . .. sub.w lr, r12, lr, lsl #1 + // [1,75] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . .. str.w r6, [r0, #128] + // [1,76] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . .. str.w r7, [r0, #256] + // [1,77] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . .. str.w r8, [r0, #384] + // [1,78] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . .. str.w r4, [r0, #512] + // [1,79] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . .. str.w r11, [r0, #640] + // [1,80] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . .. str.w r12, [r0, #768] + // [1,81] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . .. str.w lr, [r0, #896] + // [1,82] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . .. str r5, [r0], #4 + // [1,83] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeeE. . . . . . . . . . . . . . . . . . . . . .. vmov r10, s9 + // [2,0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . .. ldr.w r5, [r0] + // [2,1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . .. ldr.w r6, [r0, #128] + // [2,2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . .. ldr.w r7, [r0, #256] + // [2,3] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . .. ldr.w r8, [r0, #384] + // [2,4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . .. ldr.w r4, [r0, #512] + // [2,5] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . .. ldr.w r11, [r0, #640] + // [2,6] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . .. ldr.w r12, [r0, #768] + // [2,7] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . .. ldr.w lr, [r0, #896] + // [2,8] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . .. vmov r1, s2 + // [2,9] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . .. smull r9, r4, r4, r1 + // [2,10] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [2,11] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . .. smlal r9, r4, r10, r3 + // [2,12] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . .. smull r9, r11, r11, r1 + // [2,13] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [2,14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . .. smlal r9, r11, r10, r3 + // [2,15] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . .. smull r9, r12, r12, r1 + // [2,16] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [2,17] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . .. smlal r9, r12, r10, r3 + // [2,18] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . .. smull r9, lr, lr, r1 + // [2,19] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . .. mul r10, r9, r2 + // [2,20] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . .. smlal r9, lr, r10, r3 + // [2,21] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . .. add r5, r4 + // [2,22] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . .. add r6, r11 + // [2,23] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . .. add r7, r12 + // [2,24] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . .. add r8, lr + // [2,25] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . .. sub.w r4, r5, r4, lsl #1 + // [2,26] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . .. sub.w r11, r6, r11, lsl #1 + // [2,27] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . .. sub.w r12, r7, r12, lsl #1 + // [2,28] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . .. sub.w lr, r8, lr, lsl #1 + // [2,29] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeeE. . . . . . . . . . . . . . .. vmov r1, s3 + // [2,30] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . .. smull r9, r7, r7, r1 + // [2,31] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . .. mul r10, r9, r2 + // [2,32] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . .. smlal r9, r7, r10, r3 + // [2,33] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . .. smull r9, r8, r8, r1 + // [2,34] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . .. mul r10, r9, r2 + // [2,35] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . .. smlal r9, r8, r10, r3 + // [2,36] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . .. vmov r1, s4 + // [2,37] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . .. smull r9, r12, r12, r1 + // [2,38] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . .. mul r10, r9, r2 + // [2,39] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . .. smlal r9, r12, r10, r3 + // [2,40] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . .. smull r9, lr, lr, r1 + // [2,41] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . .. mul r10, r9, r2 + // [2,42] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . .. smlal r9, lr, r10, r3 + // [2,43] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . .. add r5, r7 + // [2,44] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . .. add r6, r8 + // [2,45] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . .. add r4, r12 + // [2,46] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . .. add r11, lr + // [2,47] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . .. sub.w r7, r5, r7, lsl #1 + // [2,48] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . .. sub.w r8, r6, r8, lsl #1 + // [2,49] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . .. sub.w r12, r4, r12, lsl #1 + // [2,50] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . .. sub.w lr, r11, lr, lsl #1 + // [2,51] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeeE. . . . . . . . .. vmov r1, s5 + // [2,52] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . .. smull r9, r6, r6, r1 + // [2,53] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . .. mul r10, r9, r2 + // [2,54] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . .. smlal r9, r6, r10, r3 + // [2,55] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . .. vmov r1, s6 + // [2,56] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . .. smull r9, r8, r8, r1 + // [2,57] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . .. mul r10, r9, r2 + // [2,58] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . .. smlal r9, r8, r10, r3 + // [2,59] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . .. vmov r1, s7 + // [2,60] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . .. smull r9, r11, r11, r1 + // [2,61] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . .. mul r10, r9, r2 + // [2,62] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . .. smlal r9, r11, r10, r3 + // [2,63] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . .. vmov r1, s8 + // [2,64] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . .. smull r9, lr, lr, r1 + // [2,65] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . .. mul r10, r9, r2 + // [2,66] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . .. smlal r9, lr, r10, r3 + // [2,67] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . .. add r5, r6 + // [2,68] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . .. add r7, r8 + // [2,69] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . .. add r4, r11 + // [2,70] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . .. add r12, lr + // [2,71] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . .. sub.w r6, r5, r6, lsl #1 + // [2,72] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . .. sub.w r8, r7, r8, lsl #1 + // [2,73] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . .. sub.w r11, r4, r11, lsl #1 + // [2,74] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . .. sub.w lr, r12, lr, lsl #1 + // [2,75] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . .. str.w r6, [r0, #128] + // [2,76] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . .. str.w r7, [r0, #256] + // [2,77] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. .. str.w r8, [r0, #384] + // [2,78] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE .. str.w r4, [r0, #512] + // [2,79] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE .. str.w r11, [r0, #640] + // [2,80] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE .. str.w r12, [r0, #768] + // [2,81] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE .. str.w lr, [r0, #896] + // [2,82] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. str r5, [r0], #4 + // [2,83] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE vmov r10, s9 + // + // + // Average Wait times (based on the timeline view): + // [0]: Executions + // [1]: Average time spent waiting in a scheduler's queue + // [2]: Average time spent waiting in a scheduler's queue while ready + // [3]: Average time elapsed from WB until retire stage + // + // [0] [1] [2] [3] + // 0. 3 0.0 0.0 0.0 ldr.w r5, [r0] + // 1. 3 0.0 0.0 0.0 ldr.w r6, [r0, #128] + // 2. 3 0.0 0.0 0.0 ldr.w r7, [r0, #256] + // 3. 3 0.0 0.0 0.0 ldr.w r8, [r0, #384] + // 4. 3 0.0 0.0 0.0 ldr.w r4, [r0, #512] + // 5. 3 0.0 0.0 0.0 ldr.w r11, [r0, #640] + // 6. 3 0.0 0.0 0.0 ldr.w r12, [r0, #768] + // 7. 3 0.0 0.0 0.0 ldr.w lr, [r0, #896] + // 8. 3 0.0 0.0 0.0 vmov r1, s2 + // 9. 3 0.0 0.0 0.0 smull r9, r4, r4, r1 + // 10. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 11. 3 0.0 0.0 0.0 smlal r9, r4, r10, r3 + // 12. 3 0.0 0.0 0.0 smull r9, r11, r11, r1 + // 13. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 14. 3 0.0 0.0 0.0 smlal r9, r11, r10, r3 + // 15. 3 0.0 0.0 0.0 smull r9, r12, r12, r1 + // 16. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 17. 3 0.0 0.0 0.0 smlal r9, r12, r10, r3 + // 18. 3 0.0 0.0 0.0 smull r9, lr, lr, r1 + // 19. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 20. 3 0.0 0.0 0.0 smlal r9, lr, r10, r3 + // 21. 3 0.0 0.0 0.0 add r5, r4 + // 22. 3 0.0 0.0 0.0 add r6, r11 + // 23. 3 0.0 0.0 0.0 add r7, r12 + // 24. 3 0.0 0.0 0.0 add r8, lr + // 25. 3 0.0 0.0 0.0 sub.w r4, r5, r4, lsl #1 + // 26. 3 0.0 0.0 0.0 sub.w r11, r6, r11, lsl #1 + // 27. 3 0.0 0.0 0.0 sub.w r12, r7, r12, lsl #1 + // 28. 3 0.0 0.0 0.0 sub.w lr, r8, lr, lsl #1 + // 29. 3 0.0 0.0 0.0 vmov r1, s3 + // 30. 3 0.0 0.0 0.0 smull r9, r7, r7, r1 + // 31. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 32. 3 0.0 0.0 0.0 smlal r9, r7, r10, r3 + // 33. 3 0.0 0.0 0.0 smull r9, r8, r8, r1 + // 34. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 35. 3 0.0 0.0 0.0 smlal r9, r8, r10, r3 + // 36. 3 0.0 0.0 0.0 vmov r1, s4 + // 37. 3 0.0 0.0 0.0 smull r9, r12, r12, r1 + // 38. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 39. 3 0.0 0.0 0.0 smlal r9, r12, r10, r3 + // 40. 3 0.0 0.0 0.0 smull r9, lr, lr, r1 + // 41. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 42. 3 0.0 0.0 0.0 smlal r9, lr, r10, r3 + // 43. 3 0.0 0.0 0.0 add r5, r7 + // 44. 3 0.0 0.0 0.0 add r6, r8 + // 45. 3 0.0 0.0 0.0 add r4, r12 + // 46. 3 0.0 0.0 0.0 add r11, lr + // 47. 3 0.0 0.0 0.0 sub.w r7, r5, r7, lsl #1 + // 48. 3 0.0 0.0 0.0 sub.w r8, r6, r8, lsl #1 + // 49. 3 0.0 0.0 0.0 sub.w r12, r4, r12, lsl #1 + // 50. 3 0.0 0.0 0.0 sub.w lr, r11, lr, lsl #1 + // 51. 3 0.0 0.0 0.0 vmov r1, s5 + // 52. 3 0.0 0.0 0.0 smull r9, r6, r6, r1 + // 53. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 54. 3 0.0 0.0 0.0 smlal r9, r6, r10, r3 + // 55. 3 0.0 0.0 0.0 vmov r1, s6 + // 56. 3 0.0 0.0 0.0 smull r9, r8, r8, r1 + // 57. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 58. 3 0.0 0.0 0.0 smlal r9, r8, r10, r3 + // 59. 3 0.0 0.0 0.0 vmov r1, s7 + // 60. 3 0.0 0.0 0.0 smull r9, r11, r11, r1 + // 61. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 62. 3 0.0 0.0 0.0 smlal r9, r11, r10, r3 + // 63. 3 0.0 0.0 0.0 vmov r1, s8 + // 64. 3 0.0 0.0 0.0 smull r9, lr, lr, r1 + // 65. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 66. 3 0.0 0.0 0.0 smlal r9, lr, r10, r3 + // 67. 3 0.0 0.0 0.0 add r5, r6 + // 68. 3 0.0 0.0 0.0 add r7, r8 + // 69. 3 0.0 0.0 0.0 add r4, r11 + // 70. 3 0.0 0.0 0.0 add r12, lr + // 71. 3 0.0 0.0 0.0 sub.w r6, r5, r6, lsl #1 + // 72. 3 0.0 0.0 0.0 sub.w r8, r7, r8, lsl #1 + // 73. 3 0.0 0.0 0.0 sub.w r11, r4, r11, lsl #1 + // 74. 3 0.0 0.0 0.0 sub.w lr, r12, lr, lsl #1 + // 75. 3 0.0 0.0 0.0 str.w r6, [r0, #128] + // 76. 3 0.0 0.0 0.0 str.w r7, [r0, #256] + // 77. 3 0.0 0.0 0.0 str.w r8, [r0, #384] + // 78. 3 0.0 0.0 0.0 str.w r4, [r0, #512] + // 79. 3 0.0 0.0 0.0 str.w r11, [r0, #640] + // 80. 3 0.0 0.0 0.0 str.w r12, [r0, #768] + // 81. 3 0.0 0.0 0.0 str.w lr, [r0, #896] + // 82. 3 0.0 0.0 0.0 str r5, [r0], #4 + // 83. 3 0.0 0.0 0.0 vmov r10, s9 + // 3 0.0 0.0 0.0 + // + // + // ORIGINAL LLVM MCA STATISTICS (ORIGINAL) END + // + // + // LLVM MCA STATISTICS (OPTIMIZED) BEGIN + // + // + // [0] Code Region + // + // Iterations: 100 + // Instructions: 8400 + // Total Cycles: 6402 + // Total uOps: 8400 + // + // Dispatch Width: 2 + // uOps Per Cycle: 1.31 + // IPC: 1.31 + // Block RThroughput: 42.0 + // + // + // Cycles with backend pressure increase [ 26.52% ] + // Throughput Bottlenecks: + // Resource Pressure [ 4.69% ] + // Data Dependencies: [ 21.84% ] + // - Register Dependencies [ 21.84% ] + // - Memory Dependencies [ 0.00% ] + // + // + // Instruction Info: + // [1]: #uOps + // [2]: Latency + // [3]: RThroughput + // [4]: MayLoad + // [5]: MayStore + // [6]: HasSideEffects (U) + // + // [1] [2] [3] [4] [5] [6] Instructions: + // 1 2 0.50 * ldr.w r7, [r0, #896] + // 1 3 0.50 vmov r4, s2 + // 1 2 0.50 * ldr.w r6, [r0, #640] + // 1 2 0.50 * ldr.w r9, [r0, #128] + // 1 2 1.00 smull r11, r8, r7, r4 + // 1 2 1.00 smull r1, r10, r6, r4 + // 1 2 0.50 * ldr.w r5, [r0, #768] + // 1 2 1.00 mul r6, r11, r2 + // 1 2 0.50 * ldr.w r7, [r0, #384] + // 1 2 1.00 mul lr, r1, r2 + // 1 3 0.50 vmov r12, s4 + // 1 2 1.00 smlal r11, r8, r6, r3 + // 1 2 1.00 smull r5, r11, r5, r4 + // 1 1 0.50 add r7, r8 + // 1 2 1.00 smlal r1, r10, lr, r3 + // 1 2 1.00 mul r6, r5, r2 + // 1 2 1.00 sub.w lr, r7, r8, lsl #1 + // 1 1 0.50 add r9, r10 + // 1 2 1.00 smull r1, lr, lr, r12 + // 1 2 1.00 smlal r5, r11, r6, r3 + // 1 2 0.50 * ldr.w r6, [r0, #512] + // 1 2 0.50 * ldr.w r8, [r0, #256] + // 1 2 1.00 mul r5, r1, r2 + // 1 2 1.00 sub.w r10, r9, r10, lsl #1 + // 1 2 1.00 smull r6, r4, r6, r4 + // 1 2 1.00 smlal r1, lr, r5, r3 + // 1 1 0.50 add r8, r11 + // 1 2 1.00 sub.w r1, r8, r11, lsl #1 + // 1 2 1.00 mul r5, r6, r2 + // 1 2 1.00 smull r11, r1, r1, r12 + // 1 1 0.50 add.w r12, r10, lr + // 1 2 1.00 sub.w lr, r12, lr, lsl #1 + // 1 2 1.00 smlal r6, r4, r5, r3 + // 1 2 1.00 mul r10, r11, r2 + // 1 3 0.50 vmov r5, s8 + // 1 2 1.00 smull r6, r5, lr, r5 + // 1 2 0.50 * ldr.w lr, [r0] + // 1 2 1.00 smlal r11, r1, r10, r3 + // 1 3 0.50 vmov r11, s7 + // 1 2 1.00 mul r10, r6, r2 + // 1 1 0.50 add lr, r4 + // 1 2 1.00 sub.w r4, lr, r4, lsl #1 + // 1 2 1.00 smull r11, r12, r12, r11 + // 1 2 1.00 smlal r6, r5, r10, r3 + // 1 1 0.50 add.w r10, r4, r1 + // 1 2 1.00 sub.w r1, r10, r1, lsl #1 + // 1 3 0.50 vmov r6, s3 + // 1 1 0.50 add r1, r5 + // 1 2 1.00 smull r4, r7, r7, r6 + // 1 3 1.00 * str.w r1, [r0, #768] + // 1 2 1.00 smull r6, r8, r8, r6 + // 1 2 1.00 sub.w r1, r1, r5, lsl #1 + // 1 2 1.00 mul r5, r4, r2 + // 1 3 1.00 * str.w r1, [r0, #896] + // 1 2 1.00 mul r1, r6, r2 + // 1 2 1.00 smlal r4, r7, r5, r3 + // 1 2 1.00 smlal r6, r8, r1, r3 + // 1 3 0.50 vmov r6, s5 + // 1 2 1.00 mul r1, r11, r2 + // 1 1 0.50 add.w r5, r9, r7 + // 1 2 1.00 sub.w r7, r5, r7, lsl #1 + // 1 2 1.00 smull r6, r4, r5, r6 + // 1 1 0.50 add.w r5, lr, r8 + // 1 2 1.00 smlal r11, r12, r1, r3 + // 1 3 0.50 vmov r9, s6 + // 1 2 1.00 mul r1, r6, r2 + // 1 1 0.50 add.w r11, r10, r12 + // 1 2 1.00 smull r9, r7, r7, r9 + // 1 2 1.00 sub.w r12, r11, r12, lsl #1 + // 1 2 1.00 smlal r6, r4, r1, r3 + // 1 2 1.00 mul r10, r9, r2 + // 1 3 1.00 * str.w r11, [r0, #512] + // 1 1 0.50 add.w r1, r5, r4 + // 1 2 1.00 sub.w r11, r5, r8, lsl #1 + // 1 2 1.00 sub.w r8, r1, r4, lsl #1 + // 1 2 1.00 smlal r9, r7, r10, r3 + // 1 3 1.00 * str.w r12, [r0, #640] + // 1 1 0.50 add.w r4, r11, r7 + // 1 3 1.00 * str.w r8, [r0, #128] + // 1 3 1.00 * str.w r4, [r0, #256] + // 1 2 1.00 sub.w r4, r4, r7, lsl #1 + // 1 3 1.00 * str.w r4, [r0, #384] + // 1 3 0.50 vmov r10, s9 + // 1 3 1.00 * str r1, [r0], #4 + // + // + // Dynamic Dispatch Stall Cycles: + // RAT - Register unavailable: 1398 (21.8%) + // RCU - Retire tokens unavailable: 0 + // SCHEDQ - Scheduler full: 0 + // LQ - Load queue full: 0 + // SQ - Store queue full: 0 + // GROUP - Static restrictions on the dispatch group: 300 (4.7%) + // USH - Uncategorised Structural Hazard: 0 + // + // + // Dispatch Logic - number of cycles where we saw N micro opcodes dispatched: + // [# dispatched], [# cycles] + // 0, 602 (9.4%) + // 1, 3200 (50.0%) + // 2, 2600 (40.6%) + // + // + // Schedulers - number of cycles where we saw N micro opcodes issued: + // [# issued], [# cycles] + // 0, 602 (9.4%) + // 1, 3200 (50.0%) + // 2, 2600 (40.6%) + // + // Scheduler's queue usage: + // No scheduler resources used. + // + // + // Register File statistics: + // Total number of mappings created: 10100 + // Max number of mappings used: 5 + // + // + // Resources: + // [0.0] - M7UnitALU + // [0.1] - M7UnitALU + // [1] - M7UnitBranch + // [2] - M7UnitLoadH + // [3] - M7UnitLoadL + // [4] - M7UnitMAC + // [5] - M7UnitSIMD + // [6] - M7UnitShift1 + // [7] - M7UnitShift2 + // [8] - M7UnitStore + // [9] - M7UnitVFP + // [10] - M7UnitVPortH + // [11] - M7UnitVPortL + // + // + // Resource pressure per iteration: + // [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] + // 12.00 12.00 - 4.00 4.00 36.00 - 12.00 - 8.00 - 4.00 4.00 + // + // Resource pressure by instruction: + // [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions: + // - - - - 1.00 - - - - - - - - ldr.w r7, [r0, #896] + // - - - - - - - - - - - - 1.00 vmov r4, s2 + // - - - 1.00 - - - - - - - - - ldr.w r6, [r0, #640] + // - - - - 1.00 - - - - - - - - ldr.w r9, [r0, #128] + // - - - - - 1.00 - - - - - - - smull r11, r8, r7, r4 + // - - - - - 1.00 - - - - - - - smull r1, r10, r6, r4 + // - - - 1.00 - - - - - - - - - ldr.w r5, [r0, #768] + // - - - - - 1.00 - - - - - - - mul r6, r11, r2 + // - - - - 1.00 - - - - - - - - ldr.w r7, [r0, #384] + // - - - - - 1.00 - - - - - - - mul lr, r1, r2 + // - - - - - - - - - - - 1.00 - vmov r12, s4 + // - - - - - 1.00 - - - - - - - smlal r11, r8, r6, r3 + // - - - - - 1.00 - - - - - - - smull r5, r11, r5, r4 + // - 1.00 - - - - - - - - - - - add r7, r8 + // - - - - - 1.00 - - - - - - - smlal r1, r10, lr, r3 + // - - - - - 1.00 - - - - - - - mul r6, r5, r2 + // 1.00 - - - - - - 1.00 - - - - - sub.w lr, r7, r8, lsl #1 + // - 1.00 - - - - - - - - - - - add r9, r10 + // - - - - - 1.00 - - - - - - - smull r1, lr, lr, r12 + // - - - - - 1.00 - - - - - - - smlal r5, r11, r6, r3 + // - - - 1.00 - - - - - - - - - ldr.w r6, [r0, #512] + // - - - - 1.00 - - - - - - - - ldr.w r8, [r0, #256] + // - - - - - 1.00 - - - - - - - mul r5, r1, r2 + // 1.00 - - - - - - 1.00 - - - - - sub.w r10, r9, r10, lsl #1 + // - - - - - 1.00 - - - - - - - smull r6, r4, r6, r4 + // - - - - - 1.00 - - - - - - - smlal r1, lr, r5, r3 + // - 1.00 - - - - - - - - - - - add r8, r11 + // 1.00 - - - - - - 1.00 - - - - - sub.w r1, r8, r11, lsl #1 + // - - - - - 1.00 - - - - - - - mul r5, r6, r2 + // - - - - - 1.00 - - - - - - - smull r11, r1, r1, r12 + // - 1.00 - - - - - - - - - - - add.w r12, r10, lr + // 1.00 - - - - - - 1.00 - - - - - sub.w lr, r12, lr, lsl #1 + // - - - - - 1.00 - - - - - - - smlal r6, r4, r5, r3 + // - - - - - 1.00 - - - - - - - mul r10, r11, r2 + // - - - - - - - - - - - - 1.00 vmov r5, s8 + // - - - - - 1.00 - - - - - - - smull r6, r5, lr, r5 + // - - - 1.00 - - - - - - - - - ldr.w lr, [r0] + // - - - - - 1.00 - - - - - - - smlal r11, r1, r10, r3 + // - - - - - - - - - - - 1.00 - vmov r11, s7 + // - - - - - 1.00 - - - - - - - mul r10, r6, r2 + // - 1.00 - - - - - - - - - - - add lr, r4 + // 1.00 - - - - - - 1.00 - - - - - sub.w r4, lr, r4, lsl #1 + // - - - - - 1.00 - - - - - - - smull r11, r12, r12, r11 + // - - - - - 1.00 - - - - - - - smlal r6, r5, r10, r3 + // - 1.00 - - - - - - - - - - - add.w r10, r4, r1 + // 1.00 - - - - - - 1.00 - - - - - sub.w r1, r10, r1, lsl #1 + // - - - - - - - - - - - - 1.00 vmov r6, s3 + // - 1.00 - - - - - - - - - - - add r1, r5 + // - - - - - 1.00 - - - - - - - smull r4, r7, r7, r6 + // - - - - - - - - - 1.00 - - - str.w r1, [r0, #768] + // - - - - - 1.00 - - - - - - - smull r6, r8, r8, r6 + // 1.00 - - - - - - 1.00 - - - - - sub.w r1, r1, r5, lsl #1 + // - - - - - 1.00 - - - - - - - mul r5, r4, r2 + // - - - - - - - - - 1.00 - - - str.w r1, [r0, #896] + // - - - - - 1.00 - - - - - - - mul r1, r6, r2 + // - - - - - 1.00 - - - - - - - smlal r4, r7, r5, r3 + // - - - - - 1.00 - - - - - - - smlal r6, r8, r1, r3 + // - - - - - - - - - - - 1.00 - vmov r6, s5 + // - - - - - 1.00 - - - - - - - mul r1, r11, r2 + // - 1.00 - - - - - - - - - - - add.w r5, r9, r7 + // 1.00 - - - - - - 1.00 - - - - - sub.w r7, r5, r7, lsl #1 + // - - - - - 1.00 - - - - - - - smull r6, r4, r5, r6 + // - 1.00 - - - - - - - - - - - add.w r5, lr, r8 + // - - - - - 1.00 - - - - - - - smlal r11, r12, r1, r3 + // - - - - - - - - - - - - 1.00 vmov r9, s6 + // - - - - - 1.00 - - - - - - - mul r1, r6, r2 + // 1.00 - - - - - - - - - - - - add.w r11, r10, r12 + // - - - - - 1.00 - - - - - - - smull r9, r7, r7, r9 + // - 1.00 - - - - - 1.00 - - - - - sub.w r12, r11, r12, lsl #1 + // - - - - - 1.00 - - - - - - - smlal r6, r4, r1, r3 + // - - - - - 1.00 - - - - - - - mul r10, r9, r2 + // - - - - - - - - - 1.00 - - - str.w r11, [r0, #512] + // 1.00 - - - - - - - - - - - - add.w r1, r5, r4 + // - 1.00 - - - - - 1.00 - - - - - sub.w r11, r5, r8, lsl #1 + // 1.00 - - - - - - 1.00 - - - - - sub.w r8, r1, r4, lsl #1 + // - - - - - 1.00 - - - - - - - smlal r9, r7, r10, r3 + // - - - - - - - - - 1.00 - - - str.w r12, [r0, #640] + // - 1.00 - - - - - - - - - - - add.w r4, r11, r7 + // - - - - - - - - - 1.00 - - - str.w r8, [r0, #128] + // - - - - - - - - - 1.00 - - - str.w r4, [r0, #256] + // 1.00 - - - - - - 1.00 - - - - - sub.w r4, r4, r7, lsl #1 + // - - - - - - - - - 1.00 - - - str.w r4, [r0, #384] + // - - - - - - - - - - - 1.00 - vmov r10, s9 + // - - - - - - - - - 1.00 - - - str r1, [r0], #4 + // + // + // Timeline view: + // 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123 + // Index 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 + // + // [0,0] DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r7, [r0, #896] + // [0,1] DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vmov r4, s2 + // [0,2] . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r6, [r0, #640] + // [0,3] . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r9, [r0, #128] + // [0,4] . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r11, r8, r7, r4 + // [0,5] . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r1, r10, r6, r4 + // [0,6] . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r5, [r0, #768] + // [0,7] . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r6, r11, r2 + // [0,8] . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r7, [r0, #384] + // [0,9] . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul lr, r1, r2 + // [0,10] . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vmov r12, s4 + // [0,11] . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r11, r8, r6, r3 + // [0,12] . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r5, r11, r5, r4 + // [0,13] . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add r7, r8 + // [0,14] . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r1, r10, lr, r3 + // [0,15] . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r6, r5, r2 + // [0,16] . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w lr, r7, r8, lsl #1 + // [0,17] . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add r9, r10 + // [0,18] . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r1, lr, lr, r12 + // [0,19] . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r5, r11, r6, r3 + // [0,20] . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r6, [r0, #512] + // [0,21] . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r8, [r0, #256] + // [0,22] . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r5, r1, r2 + // [0,23] . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w r10, r9, r10, lsl #1 + // [0,24] . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r6, r4, r6, r4 + // [0,25] . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r1, lr, r5, r3 + // [0,26] . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add r8, r11 + // [0,27] . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w r1, r8, r11, lsl #1 + // [0,28] . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r5, r6, r2 + // [0,29] . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r11, r1, r1, r12 + // [0,30] . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add.w r12, r10, lr + // [0,31] . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w lr, r12, lr, lsl #1 + // [0,32] . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r6, r4, r5, r3 + // [0,33] . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r10, r11, r2 + // [0,34] . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vmov r5, s8 + // [0,35] . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r6, r5, lr, r5 + // [0,36] . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w lr, [r0] + // [0,37] . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r11, r1, r10, r3 + // [0,38] . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vmov r11, s7 + // [0,39] . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r10, r6, r2 + // [0,40] . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add lr, r4 + // [0,41] . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w r4, lr, r4, lsl #1 + // [0,42] . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r11, r12, r12, r11 + // [0,43] . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r6, r5, r10, r3 + // [0,44] . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add.w r10, r4, r1 + // [0,45] . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w r1, r10, r1, lsl #1 + // [0,46] . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vmov r6, s3 + // [0,47] . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add r1, r5 + // [0,48] . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r4, r7, r7, r6 + // [0,49] . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . str.w r1, [r0, #768] + // [0,50] . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r6, r8, r8, r6 + // [0,51] . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w r1, r1, r5, lsl #1 + // [0,52] . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r5, r4, r2 + // [0,53] . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . str.w r1, [r0, #896] + // [0,54] . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r1, r6, r2 + // [0,55] . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r4, r7, r5, r3 + // [0,56] . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r6, r8, r1, r3 + // [0,57] . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vmov r6, s5 + // [0,58] . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r1, r11, r2 + // [0,59] . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add.w r5, r9, r7 + // [0,60] . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w r7, r5, r7, lsl #1 + // [0,61] . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r6, r4, r5, r6 + // [0,62] . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add.w r5, lr, r8 + // [0,63] . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r11, r12, r1, r3 + // [0,64] . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vmov r9, s6 + // [0,65] . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r1, r6, r2 + // [0,66] . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . add.w r11, r10, r12 + // [0,67] . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . smull r9, r7, r7, r9 + // [0,68] . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w r12, r11, r12, lsl #1 + // [0,69] . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r6, r4, r1, r3 + // [0,70] . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . mul r10, r9, r2 + // [0,71] . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . str.w r11, [r0, #512] + // [0,72] . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . add.w r1, r5, r4 + // [0,73] . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w r11, r5, r8, lsl #1 + // [0,74] . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w r8, r1, r4, lsl #1 + // [0,75] . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . smlal r9, r7, r10, r3 + // [0,76] . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . . str.w r12, [r0, #640] + // [0,77] . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . . add.w r4, r11, r7 + // [0,78] . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . . . str.w r8, [r0, #128] + // [0,79] . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . str.w r4, [r0, #256] + // [0,80] . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . . sub.w r4, r4, r7, lsl #1 + // [0,81] . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . . str.w r4, [r0, #384] + // [0,82] . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . . vmov r10, s9 + // [0,83] . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . . str r1, [r0], #4 + // [1,0] . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r7, [r0, #896] + // [1,1] . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . . . . . . vmov r4, s2 + // [1,2] . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r6, [r0, #640] + // [1,3] . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r9, [r0, #128] + // [1,4] . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . . smull r11, r8, r7, r4 + // [1,5] . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . smull r1, r10, r6, r4 + // [1,6] . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r5, [r0, #768] + // [1,7] . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . mul r6, r11, r2 + // [1,8] . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . . ldr.w r7, [r0, #384] + // [1,9] . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . . mul lr, r1, r2 + // [1,10] . . . . . . . . . . . . . . .DeeE. . . . . . . . . . . . . . . . . . . . . . . . . vmov r12, s4 + // [1,11] . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . . smlal r11, r8, r6, r3 + // [1,12] . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . smull r5, r11, r5, r4 + // [1,13] . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . . add r7, r8 + // [1,14] . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . smlal r1, r10, lr, r3 + // [1,15] . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . . mul r6, r5, r2 + // [1,16] . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . sub.w lr, r7, r8, lsl #1 + // [1,17] . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . . add r9, r10 + // [1,18] . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . . smull r1, lr, lr, r12 + // [1,19] . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . smlal r5, r11, r6, r3 + // [1,20] . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . ldr.w r6, [r0, #512] + // [1,21] . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . . ldr.w r8, [r0, #256] + // [1,22] . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . . mul r5, r1, r2 + // [1,23] . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . . sub.w r10, r9, r10, lsl #1 + // [1,24] . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . . . smull r6, r4, r6, r4 + // [1,25] . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . . smlal r1, lr, r5, r3 + // [1,26] . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . . . . add r8, r11 + // [1,27] . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . sub.w r1, r8, r11, lsl #1 + // [1,28] . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . mul r5, r6, r2 + // [1,29] . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . . smull r11, r1, r1, r12 + // [1,30] . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . . . add.w r12, r10, lr + // [1,31] . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . . sub.w lr, r12, lr, lsl #1 + // [1,32] . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . . smlal r6, r4, r5, r3 + // [1,33] . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . . mul r10, r11, r2 + // [1,34] . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . . vmov r5, s8 + // [1,35] . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . . smull r6, r5, lr, r5 + // [1,36] . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . . ldr.w lr, [r0] + // [1,37] . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . . smlal r11, r1, r10, r3 + // [1,38] . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . . vmov r11, s7 + // [1,39] . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . . . mul r10, r6, r2 + // [1,40] . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . . add lr, r4 + // [1,41] . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . . sub.w r4, lr, r4, lsl #1 + // [1,42] . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . . . smull r11, r12, r12, r11 + // [1,43] . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . . smlal r6, r5, r10, r3 + // [1,44] . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . . . . . add.w r10, r4, r1 + // [1,45] . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . . sub.w r1, r10, r1, lsl #1 + // [1,46] . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . . . vmov r6, s3 + // [1,47] . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . . . add r1, r5 + // [1,48] . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . smull r4, r7, r7, r6 + // [1,49] . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . . str.w r1, [r0, #768] + // [1,50] . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . smull r6, r8, r8, r6 + // [1,51] . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . . sub.w r1, r1, r5, lsl #1 + // [1,52] . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . mul r5, r4, r2 + // [1,53] . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . str.w r1, [r0, #896] + // [1,54] . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . . mul r1, r6, r2 + // [1,55] . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . . smlal r4, r7, r5, r3 + // [1,56] . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . . . smlal r6, r8, r1, r3 + // [1,57] . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . . vmov r6, s5 + // [1,58] . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . mul r1, r11, r2 + // [1,59] . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . add.w r5, r9, r7 + // [1,60] . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . . sub.w r7, r5, r7, lsl #1 + // [1,61] . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . . smull r6, r4, r5, r6 + // [1,62] . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . . add.w r5, lr, r8 + // [1,63] . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . . smlal r11, r12, r1, r3 + // [1,64] . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . . . vmov r9, s6 + // [1,65] . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . mul r1, r6, r2 + // [1,66] . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . . add.w r11, r10, r12 + // [1,67] . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . . smull r9, r7, r7, r9 + // [1,68] . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . . sub.w r12, r11, r12, lsl #1 + // [1,69] . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . . smlal r6, r4, r1, r3 + // [1,70] . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . mul r10, r9, r2 + // [1,71] . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . . str.w r11, [r0, #512] + // [1,72] . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . add.w r1, r5, r4 + // [1,73] . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . . sub.w r11, r5, r8, lsl #1 + // [1,74] . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . . . sub.w r8, r1, r4, lsl #1 + // [1,75] . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . smlal r9, r7, r10, r3 + // [1,76] . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . . str.w r12, [r0, #640] + // [1,77] . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . . . . . . . add.w r4, r11, r7 + // [1,78] . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . . . str.w r8, [r0, #128] + // [1,79] . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . . str.w r4, [r0, #256] + // [1,80] . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . . sub.w r4, r4, r7, lsl #1 + // [1,81] . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . . . str.w r4, [r0, #384] + // [1,82] . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . . vmov r10, s9 + // [1,83] . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . . str r1, [r0], #4 + // [2,0] . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . . ldr.w r7, [r0, #896] + // [2,1] . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . . vmov r4, s2 + // [2,2] . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . ldr.w r6, [r0, #640] + // [2,3] . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . . ldr.w r9, [r0, #128] + // [2,4] . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . . smull r11, r8, r7, r4 + // [2,5] . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . . smull r1, r10, r6, r4 + // [2,6] . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . . ldr.w r5, [r0, #768] + // [2,7] . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . mul r6, r11, r2 + // [2,8] . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . . ldr.w r7, [r0, #384] + // [2,9] . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . . mul lr, r1, r2 + // [2,10] . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . . . . . vmov r12, s4 + // [2,11] . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . . smlal r11, r8, r6, r3 + // [2,12] . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . . smull r5, r11, r5, r4 + // [2,13] . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . . add r7, r8 + // [2,14] . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . smlal r1, r10, lr, r3 + // [2,15] . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . . mul r6, r5, r2 + // [2,16] . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . sub.w lr, r7, r8, lsl #1 + // [2,17] . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . . add r9, r10 + // [2,18] . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . . smull r1, lr, lr, r12 + // [2,19] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . . . smlal r5, r11, r6, r3 + // [2,20] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . ldr.w r6, [r0, #512] + // [2,21] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . . ldr.w r8, [r0, #256] + // [2,22] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . mul r5, r1, r2 + // [2,23] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . sub.w r10, r9, r10, lsl #1 + // [2,24] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . . smull r6, r4, r6, r4 + // [2,25] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . . smlal r1, lr, r5, r3 + // [2,26] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . . add r8, r11 + // [2,27] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . . . . sub.w r1, r8, r11, lsl #1 + // [2,28] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . mul r5, r6, r2 + // [2,29] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . . smull r11, r1, r1, r12 + // [2,30] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . . . add.w r12, r10, lr + // [2,31] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . . sub.w lr, r12, lr, lsl #1 + // [2,32] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . . smlal r6, r4, r5, r3 + // [2,33] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . . . . mul r10, r11, r2 + // [2,34] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . . vmov r5, s8 + // [2,35] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . . smull r6, r5, lr, r5 + // [2,36] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DE . . . . . . . . ldr.w lr, [r0] + // [2,37] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . . smlal r11, r1, r10, r3 + // [2,38] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . . vmov r11, s7 + // [2,39] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . mul r10, r6, r2 + // [2,40] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . add lr, r4 + // [2,41] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . sub.w r4, lr, r4, lsl #1 + // [2,42] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . . . smull r11, r12, r12, r11 + // [2,43] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . . smlal r6, r5, r10, r3 + // [2,44] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . . add.w r10, r4, r1 + // [2,45] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . . sub.w r1, r10, r1, lsl #1 + // [2,46] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . . . . . . vmov r6, s3 + // [2,47] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . . . add r1, r5 + // [2,48] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . smull r4, r7, r7, r6 + // [2,49] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . . str.w r1, [r0, #768] + // [2,50] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . . smull r6, r8, r8, r6 + // [2,51] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . . sub.w r1, r1, r5, lsl #1 + // [2,52] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . mul r5, r4, r2 + // [2,53] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . str.w r1, [r0, #896] + // [2,54] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . mul r1, r6, r2 + // [2,55] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . . smlal r4, r7, r5, r3 + // [2,56] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . . . smlal r6, r8, r1, r3 + // [2,57] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeeE. . . . . vmov r6, s5 + // [2,58] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . . mul r1, r11, r2 + // [2,59] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . . add.w r5, r9, r7 + // [2,60] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . sub.w r7, r5, r7, lsl #1 + // [2,61] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . smull r6, r4, r5, r6 + // [2,62] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . . add.w r5, lr, r8 + // [2,63] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . . smlal r11, r12, r1, r3 + // [2,64] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeeE. . . . vmov r9, s6 + // [2,65] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . . . mul r1, r6, r2 + // [2,66] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . . add.w r11, r10, r12 + // [2,67] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . smull r9, r7, r7, r9 + // [2,68] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . sub.w r12, r11, r12, lsl #1 + // [2,69] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . . smlal r6, r4, r1, r3 + // [2,70] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . mul r10, r9, r2 + // [2,71] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . . str.w r11, [r0, #512] + // [2,72] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . add.w r1, r5, r4 + // [2,73] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . . sub.w r11, r5, r8, lsl #1 + // [2,74] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE. . . sub.w r8, r1, r4, lsl #1 + // [2,75] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . smlal r9, r7, r10, r3 + // [2,76] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . str.w r12, [r0, #640] + // [2,77] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . add.w r4, r11, r7 + // [2,78] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE . . str.w r8, [r0, #128] + // [2,79] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE . . str.w r4, [r0, #256] + // [2,80] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DE . . sub.w r4, r4, r7, lsl #1 + // [2,81] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeE. . str.w r4, [r0, #384] + // [2,82] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DeeE . vmov r10, s9 + // [2,83] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .DeE str r1, [r0], #4 + // + // + // Average Wait times (based on the timeline view): + // [0]: Executions + // [1]: Average time spent waiting in a scheduler's queue + // [2]: Average time spent waiting in a scheduler's queue while ready + // [3]: Average time elapsed from WB until retire stage + // + // [0] [1] [2] [3] + // 0. 3 0.0 0.0 0.0 ldr.w r7, [r0, #896] + // 1. 3 0.0 0.0 0.0 vmov r4, s2 + // 2. 3 0.0 0.0 0.0 ldr.w r6, [r0, #640] + // 3. 3 0.0 0.0 0.0 ldr.w r9, [r0, #128] + // 4. 3 0.0 0.0 0.0 smull r11, r8, r7, r4 + // 5. 3 0.0 0.0 0.0 smull r1, r10, r6, r4 + // 6. 3 0.0 0.0 0.0 ldr.w r5, [r0, #768] + // 7. 3 0.0 0.0 0.0 mul r6, r11, r2 + // 8. 3 0.0 0.0 0.0 ldr.w r7, [r0, #384] + // 9. 3 0.0 0.0 0.0 mul lr, r1, r2 + // 10. 3 0.0 0.0 0.0 vmov r12, s4 + // 11. 3 0.0 0.0 0.0 smlal r11, r8, r6, r3 + // 12. 3 0.0 0.0 0.0 smull r5, r11, r5, r4 + // 13. 3 0.0 0.0 0.0 add r7, r8 + // 14. 3 0.0 0.0 0.0 smlal r1, r10, lr, r3 + // 15. 3 0.0 0.0 0.0 mul r6, r5, r2 + // 16. 3 0.0 0.0 0.0 sub.w lr, r7, r8, lsl #1 + // 17. 3 0.0 0.0 0.0 add r9, r10 + // 18. 3 0.0 0.0 0.0 smull r1, lr, lr, r12 + // 19. 3 0.0 0.0 0.0 smlal r5, r11, r6, r3 + // 20. 3 0.0 0.0 0.0 ldr.w r6, [r0, #512] + // 21. 3 0.0 0.0 0.0 ldr.w r8, [r0, #256] + // 22. 3 0.0 0.0 0.0 mul r5, r1, r2 + // 23. 3 0.0 0.0 0.0 sub.w r10, r9, r10, lsl #1 + // 24. 3 0.0 0.0 0.0 smull r6, r4, r6, r4 + // 25. 3 0.0 0.0 0.0 smlal r1, lr, r5, r3 + // 26. 3 0.0 0.0 0.0 add r8, r11 + // 27. 3 0.0 0.0 0.0 sub.w r1, r8, r11, lsl #1 + // 28. 3 0.0 0.0 0.0 mul r5, r6, r2 + // 29. 3 0.0 0.0 0.0 smull r11, r1, r1, r12 + // 30. 3 0.0 0.0 0.0 add.w r12, r10, lr + // 31. 3 0.0 0.0 0.0 sub.w lr, r12, lr, lsl #1 + // 32. 3 0.0 0.0 0.0 smlal r6, r4, r5, r3 + // 33. 3 0.0 0.0 0.0 mul r10, r11, r2 + // 34. 3 0.0 0.0 0.0 vmov r5, s8 + // 35. 3 0.0 0.0 0.0 smull r6, r5, lr, r5 + // 36. 3 0.0 0.0 0.0 ldr.w lr, [r0] + // 37. 3 0.0 0.0 0.0 smlal r11, r1, r10, r3 + // 38. 3 0.0 0.0 0.0 vmov r11, s7 + // 39. 3 0.0 0.0 0.0 mul r10, r6, r2 + // 40. 3 0.0 0.0 0.0 add lr, r4 + // 41. 3 0.0 0.0 0.0 sub.w r4, lr, r4, lsl #1 + // 42. 3 0.0 0.0 0.0 smull r11, r12, r12, r11 + // 43. 3 0.0 0.0 0.0 smlal r6, r5, r10, r3 + // 44. 3 0.0 0.0 0.0 add.w r10, r4, r1 + // 45. 3 0.0 0.0 0.0 sub.w r1, r10, r1, lsl #1 + // 46. 3 0.0 0.0 0.0 vmov r6, s3 + // 47. 3 0.0 0.0 0.0 add r1, r5 + // 48. 3 0.0 0.0 0.0 smull r4, r7, r7, r6 + // 49. 3 0.0 0.0 0.0 str.w r1, [r0, #768] + // 50. 3 0.0 0.0 0.0 smull r6, r8, r8, r6 + // 51. 3 0.0 0.0 0.0 sub.w r1, r1, r5, lsl #1 + // 52. 3 0.0 0.0 0.0 mul r5, r4, r2 + // 53. 3 0.0 0.0 0.0 str.w r1, [r0, #896] + // 54. 3 0.0 0.0 0.0 mul r1, r6, r2 + // 55. 3 0.0 0.0 0.0 smlal r4, r7, r5, r3 + // 56. 3 0.0 0.0 0.0 smlal r6, r8, r1, r3 + // 57. 3 0.0 0.0 0.0 vmov r6, s5 + // 58. 3 0.0 0.0 0.0 mul r1, r11, r2 + // 59. 3 0.0 0.0 0.0 add.w r5, r9, r7 + // 60. 3 0.0 0.0 0.0 sub.w r7, r5, r7, lsl #1 + // 61. 3 0.0 0.0 0.0 smull r6, r4, r5, r6 + // 62. 3 0.0 0.0 0.0 add.w r5, lr, r8 + // 63. 3 0.0 0.0 0.0 smlal r11, r12, r1, r3 + // 64. 3 0.0 0.0 0.0 vmov r9, s6 + // 65. 3 0.0 0.0 0.0 mul r1, r6, r2 + // 66. 3 0.0 0.0 0.0 add.w r11, r10, r12 + // 67. 3 0.0 0.0 0.0 smull r9, r7, r7, r9 + // 68. 3 0.0 0.0 0.0 sub.w r12, r11, r12, lsl #1 + // 69. 3 0.0 0.0 0.0 smlal r6, r4, r1, r3 + // 70. 3 0.0 0.0 0.0 mul r10, r9, r2 + // 71. 3 0.0 0.0 0.0 str.w r11, [r0, #512] + // 72. 3 0.0 0.0 0.0 add.w r1, r5, r4 + // 73. 3 0.0 0.0 0.0 sub.w r11, r5, r8, lsl #1 + // 74. 3 0.0 0.0 0.0 sub.w r8, r1, r4, lsl #1 + // 75. 3 0.0 0.0 0.0 smlal r9, r7, r10, r3 + // 76. 3 0.0 0.0 0.0 str.w r12, [r0, #640] + // 77. 3 0.0 0.0 0.0 add.w r4, r11, r7 + // 78. 3 0.0 0.0 0.0 str.w r8, [r0, #128] + // 79. 3 0.0 0.0 0.0 str.w r4, [r0, #256] + // 80. 3 0.0 0.0 0.0 sub.w r4, r4, r7, lsl #1 + // 81. 3 0.0 0.0 0.0 str.w r4, [r0, #384] + // 82. 3 0.0 0.0 0.0 vmov r10, s9 + // 83. 3 0.0 0.0 0.0 str r1, [r0], #4 + // 3 0.0 0.0 0.0 + // + // + // ORIGINAL LLVM MCA STATISTICS (OPTIMIZED) END + // layer123_end: cmp.w ptr_p, temp_l @@ -475,7 +1701,7 @@ pqcrystals_dilithium_ntt_opt_m7: str.w pol5, [ptr_p, #5*distance/4] str.w pol6, [ptr_p, #6*distance/4] str.w pol7, [ptr_p, #7*distance/4] - str.w pol0, [ptr_p], #4 + str pol0, [ptr_p], #4 .endr vmov temp_l, s10 cmp.w ptr_p, temp_l @@ -534,10 +1760,12 @@ pqcrystals_dilithium_ntt_opt_m7: // ############################## // void pqcrystals_dilithium_invntt_tomont(int32_t p[N]); -.global pqcrystals_dilithium_invntt_tomont_ -.type pqcrystals_dilithium_invntt_tomont_,%function +.global pqcrystals_dilithium_invntt_tomont2 +#ifndef __CLANG__ +.type pqcrystals_dilithium_invntt_tomont2,%function +#endif .align 2 -pqcrystals_dilithium_invntt_tomont_: +pqcrystals_dilithium_invntt_tomont2: // bind aliases ptr_p .req R0 ptr_zeta .req R1 @@ -570,7 +1798,7 @@ pqcrystals_dilithium_invntt_tomont_: .equ distance, 16 .equ strincr, 32 - ldr ptr_zeta, =#zetas_new332inv + ldr ptr_zeta, =zetas_new332inv vldm ptr_zeta!, {s2-s8} vmov s0, ptr_zeta @@ -596,7 +1824,7 @@ pqcrystals_dilithium_invntt_tomont_: str.w pol5, [ptr_p, #5*distance/4] str.w pol6, [ptr_p, #6*distance/4] str.w pol7, [ptr_p, #7*distance/4] - str.w pol0, [ptr_p], #strincr + str pol0, [ptr_p], #strincr vmov temp_l, s9 cmp.w ptr_p, temp_l bne.w 1b @@ -761,4 +1989,4 @@ zetas_new332: .align 2 zetas_new332inv: .word 4193792, 4193792, -25847, 4193792, 518909, -25847, 2608894, 4193792, 4193792, -25847, 4193792, 518909, -25847, 2608894, -466468, -2680103, -3111497, -280005, 19422, -4010497, -1757237, 518909, -466468, 876248, -2680103, 2884855, -3111497, -3119733, 777960, 2091905, 359251, 2108549, 1119584, -2619752, 549488, -25847, 518909, 2608894, -466468, 777960, 876248, -237124, 876248, 2884855, -3119733, 3277672, 3859737, 1399561, 2118186, 2608894, 777960, -237124, 2091905, -2353451, 359251, -1826347, -237124, -2353451, -1826347, -3585928, -1024112, 1079900, -2725464, 4193792, 4193792, -25847, 41978, 3024400, 3975713, -1225192, 2797779, -3839961, 3628969, -1711436, 3835778, 485110, -3954267, -280005, 2797779, -2071892, -2831100, -2698859, -908040, -2292170, 539299, 1430430, -1852771, -3658785, 3512212, 1859141, -1607594, -2680103, -280005, -4010497, 715005, 1483994, -1045894, -980943, -3699596, 1316856, -759969, -955715, 3677139, 3933849, 2719610, 2108549, 539299, -2348700, 1658328, -1403403, 1775852, -2460465, -3915439, -126922, 3632928, 1067023, 3847594, 4179270, 1652689, -466468, -2680103, -3111497, -2953811, -284642, 2507426, -324139, -3881043, -1341330, -1315589, 3990128, -2137097, -4109898, 4092021, 3277672, -3699596, 1600420, 1541634, 3493410, 3487504, 2497815, 2867647, 2477047, 411027, 1654972, 1326223, -2608226, -2752209, 2091905, 2108549, -2619752, 1836700, 2945615, -1908953, 729864, 3821735, -3958618, -904516, 2080615, 1555380, -3471815, -1978758, -3585928, -3915439, 2537516, -892788, -553664, -3095038, 658596, -3530437, 1585221, -2176455, 3355482, -1783485, 2780552, -3623330, 518909, -466468, 876248, -442683, 2523147, -2847660, -3683140, 2556880, 1439742, 812732, 774207, -3168108, 1877157, 3406477, 19422, -3881043, -954230, -214686, -1182619, 2453526, -2201920, 300467, 1308169, 22981, 3614022, 2136260, 1459487, -2233803, 2884855, 3277672, 1399561, 394072, -3933227, 4136064, 156486, 2140649, 3249728, -1653064, 1596950, 633578, 2722529, -554462, 1119584, 2867647, -3574422, 1004840, 191586, 3969463, 1161373, 3592148, 1000202, 4083598, 3189243, 3561667, -3650125, 3490511, 777960, 2091905, 359251, -1829156, -3707725, -661807, 1144558, -531354, 1851402, -3159746, 1543095, -2903948, 1505516, -1500460, 3859737, 3821735, -3505694, -2413330, 3908886, -1203856, 3570263, 3043716, -2715295, -2147896, 758741, 3917553, -2414897, -1613811, -2353451, -3585928, 1079900, 990020, -719638, 2718792, 2260310, 1643818, -3097992, -508951, -783456, -2089539, 2616547, 4060031, -1024112, -3530437, -3077325, -1821861, 1920615, 3988525, 2048419, -95776, 3041255, 3677745, -971504, 2190617, 2311312, -1170082, -25847, 518909, 2608894, 1261528, -2073537, -959585, 3948120, -2071892, 3881060, 3019102, -1342633, -1115066, 3589694, -1929116, -4010497, 2556880, -3900724, 3360006, 1758630, -2306989, -1841637, -2348700, -1349076, 381987, -1699982, 3189673, 3531558, -1210546, -3111497, 19422, -1757237, 2977353, 2612035, -2718155, -1544829, 1600420, 210977, -2389356, 2052582, -2737802, 2383976, -450259, -2619752, 300467, -3539968, 1698289, -4065084, -644023, -1114140, 2537516, 3157330, 3190144, -993399, -2220524, 2920588, 252737, 876248, 2884855, -3119733, 1490985, -34731, -1212610, -3183745, -954230, 177440, 2409325, -3302554, -2390327, -2749545, 653128, 1399561, 2140649, -3507263, -3745105, -1942293, -3367121, 2734884, -3574422, 3693493, 2967645, 1393803, -2467905, 1786029, -1633410, 359251, 1119584, 549488, -2824548, -1325638, -2207625, -2601586, -3505694, 1100098, -44288, 3478676, -2457992, -1617107, 2551364, 1079900, 3592148, 1661693, 1593929, 318899, -3366475, 3118416, -3077325, -3475950, 1452451, 3772814, 1424805, -3391376, 632820, 2608894, 777960, -237124, 2062597, 4064335, 2197148, -1127864, -3900724, 1584928, -1285669, 2525341, -896437, -1915773, 1792087, -1757237, -531354, -811944, 938441, -674578, 2876837, 3959371, -3539968, 1228525, 671102, 1219592, -3853560, 2630979, -2134676, -3119733, 3859737, 2118186, -2432637, 2746655, 718593, -2353280, -3507263, 8578, 3724342, -34852, 1387945, 358956, 1604944, 549488, 3043716, 3861115, 1290746, 3208584, 2538711, -1442830, 1661693, -1939314, 1257611, -367371, -1308058, 264382, 2614173, -237124, -2353451, -1826347, 2050674, 592050, -138487, 2310528, -811944, 3553272, -189548, -2728561, -4168358, -79, 3844932, 2118186, 1643818, 1699267, 500408, 743398, 879633, -3105206, 3861115, 983419, -3412210, 712597, -23479, 3729381, -1010481, -1826347, -1024112, -2725464, -2361217, -1864453, 3850522, 2337144, 1699267, -264944, 3343383, 3842267, 4181974, -4032642, 3983585, -2725464, -95776, -2706023, 260345, 2526550, 2000777, 987079, -2706023, 1528703, 3930395, -3030761, -3082055, -2374824, 1836319 -.size zetas_new332inv,.-zetas_new332inv +.size zetas_new332inv,.-zetas_new332inv \ No newline at end of file