11b362b15af34006e6a11974088a46d42b903418eJohann; 21b362b15af34006e6a11974088a46d42b903418eJohann; Copyright (c) 2011 The WebM project authors. All Rights Reserved. 31b362b15af34006e6a11974088a46d42b903418eJohann; 41b362b15af34006e6a11974088a46d42b903418eJohann; Use of this source code is governed by a BSD-style license 51b362b15af34006e6a11974088a46d42b903418eJohann; that can be found in the LICENSE file in the root of the source 61b362b15af34006e6a11974088a46d42b903418eJohann; tree. An additional intellectual property rights grant can be found 71b362b15af34006e6a11974088a46d42b903418eJohann; in the file PATENTS. All contributing project authors may 81b362b15af34006e6a11974088a46d42b903418eJohann; be found in the AUTHORS file in the root of the source tree. 91b362b15af34006e6a11974088a46d42b903418eJohann; 101b362b15af34006e6a11974088a46d42b903418eJohann 111b362b15af34006e6a11974088a46d42b903418eJohann 121b362b15af34006e6a11974088a46d42b903418eJohann EXPORT |vp8_intra4x4_predict_armv6| 131b362b15af34006e6a11974088a46d42b903418eJohann 141b362b15af34006e6a11974088a46d42b903418eJohann ARM 151b362b15af34006e6a11974088a46d42b903418eJohann REQUIRE8 161b362b15af34006e6a11974088a46d42b903418eJohann PRESERVE8 171b362b15af34006e6a11974088a46d42b903418eJohann 181b362b15af34006e6a11974088a46d42b903418eJohann AREA ||.text||, CODE, READONLY, ALIGN=2 191b362b15af34006e6a11974088a46d42b903418eJohann 201b362b15af34006e6a11974088a46d42b903418eJohann 211b362b15af34006e6a11974088a46d42b903418eJohann;void vp8_intra4x4_predict_armv6(unsigned char *Above, unsigned char *yleft, 221b362b15af34006e6a11974088a46d42b903418eJohann; B_PREDICTION_MODE left_stride, int b_mode, 231b362b15af34006e6a11974088a46d42b903418eJohann; unsigned char *dst, int dst_stride, 241b362b15af34006e6a11974088a46d42b903418eJohann; unsigned char top_left) 251b362b15af34006e6a11974088a46d42b903418eJohann 261b362b15af34006e6a11974088a46d42b903418eJohann; r0: *Above 271b362b15af34006e6a11974088a46d42b903418eJohann; r1: *yleft 281b362b15af34006e6a11974088a46d42b903418eJohann; r2: left_stride 291b362b15af34006e6a11974088a46d42b903418eJohann; r3: b_mode 301b362b15af34006e6a11974088a46d42b903418eJohann; sp + #40: dst 311b362b15af34006e6a11974088a46d42b903418eJohann; sp + #44: dst_stride 321b362b15af34006e6a11974088a46d42b903418eJohann; sp + #48: top_left 331b362b15af34006e6a11974088a46d42b903418eJohann|vp8_intra4x4_predict_armv6| PROC 341b362b15af34006e6a11974088a46d42b903418eJohann push {r4-r12, lr} 351b362b15af34006e6a11974088a46d42b903418eJohann 361b362b15af34006e6a11974088a46d42b903418eJohann cmp r3, #10 371b362b15af34006e6a11974088a46d42b903418eJohann addlt pc, pc, r3, lsl #2 ; position independent switch 381b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} ; default 391b362b15af34006e6a11974088a46d42b903418eJohann b b_dc_pred 401b362b15af34006e6a11974088a46d42b903418eJohann b b_tm_pred 411b362b15af34006e6a11974088a46d42b903418eJohann b b_ve_pred 421b362b15af34006e6a11974088a46d42b903418eJohann b b_he_pred 431b362b15af34006e6a11974088a46d42b903418eJohann b b_ld_pred 441b362b15af34006e6a11974088a46d42b903418eJohann b b_rd_pred 451b362b15af34006e6a11974088a46d42b903418eJohann b b_vr_pred 461b362b15af34006e6a11974088a46d42b903418eJohann b b_vl_pred 471b362b15af34006e6a11974088a46d42b903418eJohann b b_hd_pred 481b362b15af34006e6a11974088a46d42b903418eJohann b b_hu_pred 491b362b15af34006e6a11974088a46d42b903418eJohann 501b362b15af34006e6a11974088a46d42b903418eJohannb_dc_pred 511b362b15af34006e6a11974088a46d42b903418eJohann ; load values 521b362b15af34006e6a11974088a46d42b903418eJohann ldr r8, [r0] ; Above 531b362b15af34006e6a11974088a46d42b903418eJohann ldrb r4, [r1], r2 ; Left[0] 541b362b15af34006e6a11974088a46d42b903418eJohann mov r9, #0 551b362b15af34006e6a11974088a46d42b903418eJohann ldrb r5, [r1], r2 ; Left[1] 561b362b15af34006e6a11974088a46d42b903418eJohann ldrb r6, [r1], r2 ; Left[2] 571b362b15af34006e6a11974088a46d42b903418eJohann usad8 r12, r8, r9 581b362b15af34006e6a11974088a46d42b903418eJohann ldrb r7, [r1] ; Left[3] 591b362b15af34006e6a11974088a46d42b903418eJohann 601b362b15af34006e6a11974088a46d42b903418eJohann ; calculate dc 611b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r5 621b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r6 631b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r7 641b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r12 651b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, #4 661b362b15af34006e6a11974088a46d42b903418eJohann ldr r0, [sp, #44] ; dst_stride 671b362b15af34006e6a11974088a46d42b903418eJohann mov r12, r4, asr #3 ; (expected_dc + 4) >> 3 681b362b15af34006e6a11974088a46d42b903418eJohann 691b362b15af34006e6a11974088a46d42b903418eJohann add r12, r12, r12, lsl #8 701b362b15af34006e6a11974088a46d42b903418eJohann ldr r3, [sp, #40] ; dst 711b362b15af34006e6a11974088a46d42b903418eJohann add r12, r12, r12, lsl #16 721b362b15af34006e6a11974088a46d42b903418eJohann 731b362b15af34006e6a11974088a46d42b903418eJohann ; store values 741b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3], r0 751b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3], r0 761b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3], r0 771b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3] 781b362b15af34006e6a11974088a46d42b903418eJohann 791b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} 801b362b15af34006e6a11974088a46d42b903418eJohann 811b362b15af34006e6a11974088a46d42b903418eJohannb_tm_pred 821b362b15af34006e6a11974088a46d42b903418eJohann ldr r8, [r0] ; Above 831b362b15af34006e6a11974088a46d42b903418eJohann ldrb r9, [sp, #48] ; top_left 841b362b15af34006e6a11974088a46d42b903418eJohann ldrb r4, [r1], r2 ; Left[0] 851b362b15af34006e6a11974088a46d42b903418eJohann ldrb r5, [r1], r2 ; Left[1] 861b362b15af34006e6a11974088a46d42b903418eJohann ldrb r6, [r1], r2 ; Left[2] 871b362b15af34006e6a11974088a46d42b903418eJohann ldrb r7, [r1] ; Left[3] 881b362b15af34006e6a11974088a46d42b903418eJohann ldr r0, [sp, #44] ; dst_stride 891b362b15af34006e6a11974088a46d42b903418eJohann ldr r3, [sp, #40] ; dst 901b362b15af34006e6a11974088a46d42b903418eJohann 911b362b15af34006e6a11974088a46d42b903418eJohann add r9, r9, r9, lsl #16 ; [tl|tl] 921b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r10, r8 ; a[2|0] 931b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r11, r8, ror #8 ; a[3|1] 941b362b15af34006e6a11974088a46d42b903418eJohann ssub16 r10, r10, r9 ; a[2|0] - [tl|tl] 951b362b15af34006e6a11974088a46d42b903418eJohann ssub16 r11, r11, r9 ; a[3|1] - [tl|tl] 961b362b15af34006e6a11974088a46d42b903418eJohann 971b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r4, lsl #16 ; l[0|0] 981b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r5, lsl #16 ; l[1|1] 991b362b15af34006e6a11974088a46d42b903418eJohann add r6, r6, r6, lsl #16 ; l[2|2] 1001b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r7, lsl #16 ; l[3|3] 1011b362b15af34006e6a11974088a46d42b903418eJohann 1021b362b15af34006e6a11974088a46d42b903418eJohann sadd16 r1, r4, r10 ; l[0|0] + a[2|0] - [tl|tl] 1031b362b15af34006e6a11974088a46d42b903418eJohann sadd16 r2, r4, r11 ; l[0|0] + a[3|1] - [tl|tl] 1041b362b15af34006e6a11974088a46d42b903418eJohann usat16 r1, #8, r1 1051b362b15af34006e6a11974088a46d42b903418eJohann usat16 r2, #8, r2 1061b362b15af34006e6a11974088a46d42b903418eJohann 1071b362b15af34006e6a11974088a46d42b903418eJohann sadd16 r4, r5, r10 ; l[1|1] + a[2|0] - [tl|tl] 1081b362b15af34006e6a11974088a46d42b903418eJohann sadd16 r5, r5, r11 ; l[1|1] + a[3|1] - [tl|tl] 1091b362b15af34006e6a11974088a46d42b903418eJohann 1101b362b15af34006e6a11974088a46d42b903418eJohann add r12, r1, r2, lsl #8 ; [3|2|1|0] 1111b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3], r0 1121b362b15af34006e6a11974088a46d42b903418eJohann 1131b362b15af34006e6a11974088a46d42b903418eJohann usat16 r4, #8, r4 1141b362b15af34006e6a11974088a46d42b903418eJohann usat16 r5, #8, r5 1151b362b15af34006e6a11974088a46d42b903418eJohann 1161b362b15af34006e6a11974088a46d42b903418eJohann sadd16 r1, r6, r10 ; l[2|2] + a[2|0] - [tl|tl] 1171b362b15af34006e6a11974088a46d42b903418eJohann sadd16 r2, r6, r11 ; l[2|2] + a[3|1] - [tl|tl] 1181b362b15af34006e6a11974088a46d42b903418eJohann 1191b362b15af34006e6a11974088a46d42b903418eJohann add r12, r4, r5, lsl #8 ; [3|2|1|0] 1201b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3], r0 1211b362b15af34006e6a11974088a46d42b903418eJohann 1221b362b15af34006e6a11974088a46d42b903418eJohann usat16 r1, #8, r1 1231b362b15af34006e6a11974088a46d42b903418eJohann usat16 r2, #8, r2 1241b362b15af34006e6a11974088a46d42b903418eJohann 1251b362b15af34006e6a11974088a46d42b903418eJohann sadd16 r4, r7, r10 ; l[3|3] + a[2|0] - [tl|tl] 1261b362b15af34006e6a11974088a46d42b903418eJohann sadd16 r5, r7, r11 ; l[3|3] + a[3|1] - [tl|tl] 1271b362b15af34006e6a11974088a46d42b903418eJohann 1281b362b15af34006e6a11974088a46d42b903418eJohann add r12, r1, r2, lsl #8 ; [3|2|1|0] 1291b362b15af34006e6a11974088a46d42b903418eJohann 1301b362b15af34006e6a11974088a46d42b903418eJohann usat16 r4, #8, r4 1311b362b15af34006e6a11974088a46d42b903418eJohann usat16 r5, #8, r5 1321b362b15af34006e6a11974088a46d42b903418eJohann 1331b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3], r0 1341b362b15af34006e6a11974088a46d42b903418eJohann 1351b362b15af34006e6a11974088a46d42b903418eJohann add r12, r4, r5, lsl #8 ; [3|2|1|0] 1361b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3] 1371b362b15af34006e6a11974088a46d42b903418eJohann 1381b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} 1391b362b15af34006e6a11974088a46d42b903418eJohann 1401b362b15af34006e6a11974088a46d42b903418eJohannb_ve_pred 1411b362b15af34006e6a11974088a46d42b903418eJohann ldr r8, [r0] ; a[3|2|1|0] 1421b362b15af34006e6a11974088a46d42b903418eJohann ldr r11, c00FF00FF 1431b362b15af34006e6a11974088a46d42b903418eJohann ldrb r9, [sp, #48] ; top_left 1441b362b15af34006e6a11974088a46d42b903418eJohann ldrb r10, [r0, #4] ; a[4] 1451b362b15af34006e6a11974088a46d42b903418eJohann 1461b362b15af34006e6a11974088a46d42b903418eJohann ldr r0, c00020002 1471b362b15af34006e6a11974088a46d42b903418eJohann 1481b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r4, r8 ; a[2|0] 1491b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r5, r8, ror #8 ; a[3|1] 1501b362b15af34006e6a11974088a46d42b903418eJohann ldr r2, [sp, #44] ; dst_stride 1511b362b15af34006e6a11974088a46d42b903418eJohann pkhbt r9, r9, r5, lsl #16 ; a[1|-1] 1521b362b15af34006e6a11974088a46d42b903418eJohann 1531b362b15af34006e6a11974088a46d42b903418eJohann add r9, r9, r4, lsl #1 ;[a[1]+2*a[2] | tl+2*a[0] ] 1541b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r9, r9, r5 ;[a[1]+2*a[2]+a[3] | tl+2*a[0]+a[1] ] 1551b362b15af34006e6a11974088a46d42b903418eJohann ldr r3, [sp, #40] ; dst 1561b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r9, r9, r0 ;[a[1]+2*a[2]+a[3]+2| tl+2*a[0]+a[1]+2] 1571b362b15af34006e6a11974088a46d42b903418eJohann 1581b362b15af34006e6a11974088a46d42b903418eJohann add r0, r0, r10, lsl #16 ;[a[4]+2 | 2] 1591b362b15af34006e6a11974088a46d42b903418eJohann add r0, r0, r4, asr #16 ;[a[4]+2 | a[2]+2] 1601b362b15af34006e6a11974088a46d42b903418eJohann add r0, r0, r5, lsl #1 ;[a[4]+2*a[3]+2 | a[2]+2*a[1]+2] 1611b362b15af34006e6a11974088a46d42b903418eJohann uadd16 r4, r4, r0 ;[a[4]+2*a[3]+a[2]+2|a[2]+2*a[1]+a[0]+2] 1621b362b15af34006e6a11974088a46d42b903418eJohann 1631b362b15af34006e6a11974088a46d42b903418eJohann and r9, r11, r9, asr #2 1641b362b15af34006e6a11974088a46d42b903418eJohann and r4, r11, r4, asr #2 1651b362b15af34006e6a11974088a46d42b903418eJohann add r9, r9, r4, lsl #8 1661b362b15af34006e6a11974088a46d42b903418eJohann 1671b362b15af34006e6a11974088a46d42b903418eJohann ; store values 1681b362b15af34006e6a11974088a46d42b903418eJohann str r9, [r3], r2 1691b362b15af34006e6a11974088a46d42b903418eJohann str r9, [r3], r2 1701b362b15af34006e6a11974088a46d42b903418eJohann str r9, [r3], r2 1711b362b15af34006e6a11974088a46d42b903418eJohann str r9, [r3] 1721b362b15af34006e6a11974088a46d42b903418eJohann 1731b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} 1741b362b15af34006e6a11974088a46d42b903418eJohann 1751b362b15af34006e6a11974088a46d42b903418eJohann 1761b362b15af34006e6a11974088a46d42b903418eJohannb_he_pred 1771b362b15af34006e6a11974088a46d42b903418eJohann ldrb r4, [r1], r2 ; Left[0] 1781b362b15af34006e6a11974088a46d42b903418eJohann ldrb r8, [sp, #48] ; top_left 1791b362b15af34006e6a11974088a46d42b903418eJohann ldrb r5, [r1], r2 ; Left[1] 1801b362b15af34006e6a11974088a46d42b903418eJohann ldrb r6, [r1], r2 ; Left[2] 1811b362b15af34006e6a11974088a46d42b903418eJohann ldrb r7, [r1] ; Left[3] 1821b362b15af34006e6a11974088a46d42b903418eJohann 1831b362b15af34006e6a11974088a46d42b903418eJohann add r8, r8, r4 ; tl + l[0] 1841b362b15af34006e6a11974088a46d42b903418eJohann add r9, r4, r5 ; l[0] + l[1] 1851b362b15af34006e6a11974088a46d42b903418eJohann add r10, r5, r6 ; l[1] + l[2] 1861b362b15af34006e6a11974088a46d42b903418eJohann add r11, r6, r7 ; l[2] + l[3] 1871b362b15af34006e6a11974088a46d42b903418eJohann 1881b362b15af34006e6a11974088a46d42b903418eJohann mov r0, #2<<14 1891b362b15af34006e6a11974088a46d42b903418eJohann 1901b362b15af34006e6a11974088a46d42b903418eJohann add r8, r8, r9 ; tl + 2*l[0] + l[1] 1911b362b15af34006e6a11974088a46d42b903418eJohann add r4, r9, r10 ; l[0] + 2*l[1] + l[2] 1921b362b15af34006e6a11974088a46d42b903418eJohann add r5, r10, r11 ; l[1] + 2*l[2] + l[3] 1931b362b15af34006e6a11974088a46d42b903418eJohann add r6, r11, r7, lsl #1 ; l[2] + 2*l[3] + l[3] 1941b362b15af34006e6a11974088a46d42b903418eJohann 1951b362b15af34006e6a11974088a46d42b903418eJohann 1961b362b15af34006e6a11974088a46d42b903418eJohann add r8, r0, r8, lsl #14 ; (tl + 2*l[0] + l[1])>>2 in top half 1971b362b15af34006e6a11974088a46d42b903418eJohann add r9, r0, r4, lsl #14 ; (l[0] + 2*l[1] + l[2])>>2 in top half 1981b362b15af34006e6a11974088a46d42b903418eJohann add r10,r0, r5, lsl #14 ; (l[1] + 2*l[2] + l[3])>>2 in top half 1991b362b15af34006e6a11974088a46d42b903418eJohann add r11,r0, r6, lsl #14 ; (l[2] + 2*l[3] + l[3])>>2 in top half 2001b362b15af34006e6a11974088a46d42b903418eJohann 2011b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r8, r8, r8, asr #16 ; l[-|0|-|0] 2021b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r9, r9, r9, asr #16 ; l[-|1|-|1] 2031b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r10, r10, r10, asr #16 ; l[-|2|-|2] 2041b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r11, r11, r11, asr #16 ; l[-|3|-|3] 2051b362b15af34006e6a11974088a46d42b903418eJohann 2061b362b15af34006e6a11974088a46d42b903418eJohann ldr r0, [sp, #44] ; dst_stride 2071b362b15af34006e6a11974088a46d42b903418eJohann ldr r3, [sp, #40] ; dst 2081b362b15af34006e6a11974088a46d42b903418eJohann 2091b362b15af34006e6a11974088a46d42b903418eJohann add r8, r8, r8, lsl #8 ; l[0|0|0|0] 2101b362b15af34006e6a11974088a46d42b903418eJohann add r9, r9, r9, lsl #8 ; l[1|1|1|1] 2111b362b15af34006e6a11974088a46d42b903418eJohann add r10, r10, r10, lsl #8 ; l[2|2|2|2] 2121b362b15af34006e6a11974088a46d42b903418eJohann add r11, r11, r11, lsl #8 ; l[3|3|3|3] 2131b362b15af34006e6a11974088a46d42b903418eJohann 2141b362b15af34006e6a11974088a46d42b903418eJohann ; store values 2151b362b15af34006e6a11974088a46d42b903418eJohann str r8, [r3], r0 2161b362b15af34006e6a11974088a46d42b903418eJohann str r9, [r3], r0 2171b362b15af34006e6a11974088a46d42b903418eJohann str r10, [r3], r0 2181b362b15af34006e6a11974088a46d42b903418eJohann str r11, [r3] 2191b362b15af34006e6a11974088a46d42b903418eJohann 2201b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} 2211b362b15af34006e6a11974088a46d42b903418eJohann 2221b362b15af34006e6a11974088a46d42b903418eJohannb_ld_pred 2231b362b15af34006e6a11974088a46d42b903418eJohann ldr r4, [r0] ; Above[0-3] 2241b362b15af34006e6a11974088a46d42b903418eJohann ldr r12, c00020002 2251b362b15af34006e6a11974088a46d42b903418eJohann ldr r5, [r0, #4] ; Above[4-7] 2261b362b15af34006e6a11974088a46d42b903418eJohann ldr lr, c00FF00FF 2271b362b15af34006e6a11974088a46d42b903418eJohann 2281b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r6, r4 ; a[2|0] 2291b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r7, r4, ror #8 ; a[3|1] 2301b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r8, r5 ; a[6|4] 2311b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r9, r5, ror #8 ; a[7|5] 2321b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r10, r6, r8 ; a[2|4] 2331b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r11, r7, r9 ; a[3|5] 2341b362b15af34006e6a11974088a46d42b903418eJohann 2351b362b15af34006e6a11974088a46d42b903418eJohann add r4, r6, r7, lsl #1 ; [a2+2*a3 | a0+2*a1] 2361b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r10, ror #16 ; [a2+2*a3+a4 | a0+2*a1+a2] 2371b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r4, r4, r12 ; [a2+2*a3+a4+2 | a0+2*a1+a2+2] 2381b362b15af34006e6a11974088a46d42b903418eJohann 2391b362b15af34006e6a11974088a46d42b903418eJohann add r5, r7, r10, ror #15 ; [a3+2*a4 | a1+2*a2] 2401b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r11, ror #16 ; [a3+2*a4+a5 | a1+2*a2+a3] 2411b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r5, r5, r12 ; [a3+2*a4+a5+2 | a1+2*a2+a3+2] 2421b362b15af34006e6a11974088a46d42b903418eJohann 2431b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r7, r9, r8, asr #16 2441b362b15af34006e6a11974088a46d42b903418eJohann add r6, r8, r9, lsl #1 ; [a6+2*a7 | a4+2*a5] 2451b362b15af34006e6a11974088a46d42b903418eJohann uadd16 r6, r6, r7 ; [a6+2*a7+a7 | a4+2*a5+a6] 2461b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r6, r6, r12 ; [a6+2*a7+a7+2 | a4+2*a5+a6+2] 2471b362b15af34006e6a11974088a46d42b903418eJohann 2481b362b15af34006e6a11974088a46d42b903418eJohann uxth r7, r9 ; [ a5] 2491b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r8, asr #15 ; [ a5+2*a6] 2501b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r9, asr #16 ; [ a5+2*a6+a7] 2511b362b15af34006e6a11974088a46d42b903418eJohann uxtah r7, r7, r12 ; [ a5+2*a6+a7+2] 2521b362b15af34006e6a11974088a46d42b903418eJohann 2531b362b15af34006e6a11974088a46d42b903418eJohann ldr r0, [sp, #44] ; dst_stride 2541b362b15af34006e6a11974088a46d42b903418eJohann ldr r3, [sp, #40] ; dst 2551b362b15af34006e6a11974088a46d42b903418eJohann 2561b362b15af34006e6a11974088a46d42b903418eJohann ; scale down 2571b362b15af34006e6a11974088a46d42b903418eJohann and r4, lr, r4, asr #2 2581b362b15af34006e6a11974088a46d42b903418eJohann and r5, lr, r5, asr #2 2591b362b15af34006e6a11974088a46d42b903418eJohann and r6, lr, r6, asr #2 2601b362b15af34006e6a11974088a46d42b903418eJohann mov r7, r7, asr #2 2611b362b15af34006e6a11974088a46d42b903418eJohann 2621b362b15af34006e6a11974088a46d42b903418eJohann add r8, r4, r5, lsl #8 ; [3|2|1|0] 2631b362b15af34006e6a11974088a46d42b903418eJohann str r8, [r3], r0 2641b362b15af34006e6a11974088a46d42b903418eJohann 2651b362b15af34006e6a11974088a46d42b903418eJohann mov r9, r8, lsr #8 2661b362b15af34006e6a11974088a46d42b903418eJohann add r9, r9, r6, lsl #24 ; [4|3|2|1] 2671b362b15af34006e6a11974088a46d42b903418eJohann str r9, [r3], r0 2681b362b15af34006e6a11974088a46d42b903418eJohann 2691b362b15af34006e6a11974088a46d42b903418eJohann mov r10, r9, lsr #8 2701b362b15af34006e6a11974088a46d42b903418eJohann add r10, r10, r7, lsl #24 ; [5|4|3|2] 2711b362b15af34006e6a11974088a46d42b903418eJohann str r10, [r3], r0 2721b362b15af34006e6a11974088a46d42b903418eJohann 2731b362b15af34006e6a11974088a46d42b903418eJohann mov r6, r6, lsr #16 2741b362b15af34006e6a11974088a46d42b903418eJohann mov r11, r10, lsr #8 2751b362b15af34006e6a11974088a46d42b903418eJohann add r11, r11, r6, lsl #24 ; [6|5|4|3] 2761b362b15af34006e6a11974088a46d42b903418eJohann str r11, [r3] 2771b362b15af34006e6a11974088a46d42b903418eJohann 2781b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} 2791b362b15af34006e6a11974088a46d42b903418eJohann 2801b362b15af34006e6a11974088a46d42b903418eJohannb_rd_pred 2811b362b15af34006e6a11974088a46d42b903418eJohann ldrb r7, [r1], r2 ; l[0] = pp[3] 2821b362b15af34006e6a11974088a46d42b903418eJohann ldr lr, [r0] ; Above = pp[8|7|6|5] 2831b362b15af34006e6a11974088a46d42b903418eJohann ldrb r8, [sp, #48] ; tl = pp[4] 2841b362b15af34006e6a11974088a46d42b903418eJohann ldrb r6, [r1], r2 ; l[1] = pp[2] 2851b362b15af34006e6a11974088a46d42b903418eJohann ldrb r5, [r1], r2 ; l[2] = pp[1] 2861b362b15af34006e6a11974088a46d42b903418eJohann ldrb r4, [r1], r2 ; l[3] = pp[0] 2871b362b15af34006e6a11974088a46d42b903418eJohann 2881b362b15af34006e6a11974088a46d42b903418eJohann 2891b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r9, lr ; p[7|5] 2901b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r10, lr, ror #8 ; p[8|6] 2911b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r6, lsl #16 ; p[2|0] 2921b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r7, lsl #16 ; p[3|1] 2931b362b15af34006e6a11974088a46d42b903418eJohann add r6, r6, r8, lsl #16 ; p[4|2] 2941b362b15af34006e6a11974088a46d42b903418eJohann pkhbt r7, r7, r9, lsl #16 ; p[5|3] 2951b362b15af34006e6a11974088a46d42b903418eJohann pkhbt r8, r8, r10, lsl #16 ; p[6|4] 2961b362b15af34006e6a11974088a46d42b903418eJohann 2971b362b15af34006e6a11974088a46d42b903418eJohann ldr r12, c00020002 2981b362b15af34006e6a11974088a46d42b903418eJohann ldr lr, c00FF00FF 2991b362b15af34006e6a11974088a46d42b903418eJohann 3001b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r5, lsl #1 ; [p2+2*p3 | p0+2*p1] 3011b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r6 ; [p2+2*p3+p4 | p0+2*p1+p2] 3021b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r4, r4, r12 ; [p2+2*p3+p4+2 | p0+2*p1+p2+2] 3031b362b15af34006e6a11974088a46d42b903418eJohann 3041b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r6, lsl #1 ; [p3+2*p4 | p1+2*p2] 3051b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r7 ; [p3+2*p4+p5 | p1+2*p2+p3] 3061b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r5, r5, r12 ; [p3+2*p4+p5+2 | p1+2*p2+p3+2] 3071b362b15af34006e6a11974088a46d42b903418eJohann 3081b362b15af34006e6a11974088a46d42b903418eJohann add r6, r7, r8, lsl #1 ; [p5+2*p6 | p3+2*p4] 3091b362b15af34006e6a11974088a46d42b903418eJohann add r6, r6, r9 ; [p5+2*p6+p7 | p3+2*p4+p5] 3101b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r6, r6, r12 ; [p5+2*p6+p7+2 | p3+2*p4+p5+2] 3111b362b15af34006e6a11974088a46d42b903418eJohann 3121b362b15af34006e6a11974088a46d42b903418eJohann add r7, r8, r9, lsl #1 ; [p6+2*p7 | p4+2*p5] 3131b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r10 ; [p6+2*p7+p8 | p4+2*p5+p6] 3141b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r7, r7, r12 ; [p6+2*p7+p8+2 | p4+2*p5+p6+2] 3151b362b15af34006e6a11974088a46d42b903418eJohann 3161b362b15af34006e6a11974088a46d42b903418eJohann ldr r0, [sp, #44] ; dst_stride 3171b362b15af34006e6a11974088a46d42b903418eJohann ldr r3, [sp, #40] ; dst 3181b362b15af34006e6a11974088a46d42b903418eJohann 3191b362b15af34006e6a11974088a46d42b903418eJohann ; scale down 3201b362b15af34006e6a11974088a46d42b903418eJohann and r7, lr, r7, asr #2 3211b362b15af34006e6a11974088a46d42b903418eJohann and r6, lr, r6, asr #2 3221b362b15af34006e6a11974088a46d42b903418eJohann and r5, lr, r5, asr #2 3231b362b15af34006e6a11974088a46d42b903418eJohann and r4, lr, r4, asr #2 3241b362b15af34006e6a11974088a46d42b903418eJohann 3251b362b15af34006e6a11974088a46d42b903418eJohann add r8, r6, r7, lsl #8 ; [6|5|4|3] 3261b362b15af34006e6a11974088a46d42b903418eJohann str r8, [r3], r0 3271b362b15af34006e6a11974088a46d42b903418eJohann 3281b362b15af34006e6a11974088a46d42b903418eJohann mov r9, r8, lsl #8 ; [5|4|3|-] 3291b362b15af34006e6a11974088a46d42b903418eJohann uxtab r9, r9, r4, ror #16 ; [5|4|3|2] 3301b362b15af34006e6a11974088a46d42b903418eJohann str r9, [r3], r0 3311b362b15af34006e6a11974088a46d42b903418eJohann 3321b362b15af34006e6a11974088a46d42b903418eJohann mov r10, r9, lsl #8 ; [4|3|2|-] 3331b362b15af34006e6a11974088a46d42b903418eJohann uxtab r10, r10, r5 ; [4|3|2|1] 3341b362b15af34006e6a11974088a46d42b903418eJohann str r10, [r3], r0 3351b362b15af34006e6a11974088a46d42b903418eJohann 3361b362b15af34006e6a11974088a46d42b903418eJohann mov r11, r10, lsl #8 ; [3|2|1|-] 3371b362b15af34006e6a11974088a46d42b903418eJohann uxtab r11, r11, r4 ; [3|2|1|0] 3381b362b15af34006e6a11974088a46d42b903418eJohann str r11, [r3] 3391b362b15af34006e6a11974088a46d42b903418eJohann 3401b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} 3411b362b15af34006e6a11974088a46d42b903418eJohann 3421b362b15af34006e6a11974088a46d42b903418eJohannb_vr_pred 3431b362b15af34006e6a11974088a46d42b903418eJohann ldrb r7, [r1], r2 ; l[0] = pp[3] 3441b362b15af34006e6a11974088a46d42b903418eJohann ldr lr, [r0] ; Above = pp[8|7|6|5] 3451b362b15af34006e6a11974088a46d42b903418eJohann ldrb r8, [sp, #48] ; tl = pp[4] 3461b362b15af34006e6a11974088a46d42b903418eJohann ldrb r6, [r1], r2 ; l[1] = pp[2] 3471b362b15af34006e6a11974088a46d42b903418eJohann ldrb r5, [r1], r2 ; l[2] = pp[1] 3481b362b15af34006e6a11974088a46d42b903418eJohann ldrb r4, [r1] ; l[3] = pp[0] 3491b362b15af34006e6a11974088a46d42b903418eJohann 3501b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r7, lsl #16 ; p[3|1] 3511b362b15af34006e6a11974088a46d42b903418eJohann add r6, r6, r8, lsl #16 ; p[4|2] 3521b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r9, lr ; p[7|5] 3531b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r10, lr, ror #8 ; p[8|6] 3541b362b15af34006e6a11974088a46d42b903418eJohann pkhbt r7, r7, r9, lsl #16 ; p[5|3] 3551b362b15af34006e6a11974088a46d42b903418eJohann pkhbt r8, r8, r10, lsl #16 ; p[6|4] 3561b362b15af34006e6a11974088a46d42b903418eJohann 3571b362b15af34006e6a11974088a46d42b903418eJohann ldr r4, c00010001 3581b362b15af34006e6a11974088a46d42b903418eJohann ldr r12, c00020002 3591b362b15af34006e6a11974088a46d42b903418eJohann ldr lr, c00FF00FF 3601b362b15af34006e6a11974088a46d42b903418eJohann 3611b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r6, lsl #1 ; [p3+2*p4 | p1+2*p2] 3621b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r7 ; [p3+2*p4+p5 | p1+2*p2+p3] 3631b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r5, r5, r12 ; [p3+2*p4+p5+2 | p1+2*p2+p3+2] 3641b362b15af34006e6a11974088a46d42b903418eJohann 3651b362b15af34006e6a11974088a46d42b903418eJohann add r6, r6, r7, lsl #1 ; [p4+2*p5 | p2+2*p3] 3661b362b15af34006e6a11974088a46d42b903418eJohann add r6, r6, r8 ; [p4+2*p5+p6 | p2+2*p3+p4] 3671b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r6, r6, r12 ; [p4+2*p5+p6+2 | p2+2*p3+p4+2] 3681b362b15af34006e6a11974088a46d42b903418eJohann 3691b362b15af34006e6a11974088a46d42b903418eJohann uadd16 r11, r8, r9 ; [p6+p7 | p4+p5] 3701b362b15af34006e6a11974088a46d42b903418eJohann uhadd16 r11, r11, r4 ; [(p6+p7+1)>>1 | (p4+p5+1)>>1] 3711b362b15af34006e6a11974088a46d42b903418eJohann ; [F|E] 3721b362b15af34006e6a11974088a46d42b903418eJohann 3731b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r8, lsl #1 ; [p5+2*p6 | p3+2*p4] 3741b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r9 ; [p5+2*p6+p7 | p3+2*p4+p5] 3751b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r7, r7, r12 ; [p5+2*p6+p7+2 | p3+2*p4+p5+2] 3761b362b15af34006e6a11974088a46d42b903418eJohann 3771b362b15af34006e6a11974088a46d42b903418eJohann uadd16 r2, r9, r10 ; [p7+p8 | p5+p6] 3781b362b15af34006e6a11974088a46d42b903418eJohann uhadd16 r2, r2, r4 ; [(p7+p8+1)>>1 | (p5+p6+1)>>1] 3791b362b15af34006e6a11974088a46d42b903418eJohann ; [J|I] 3801b362b15af34006e6a11974088a46d42b903418eJohann 3811b362b15af34006e6a11974088a46d42b903418eJohann add r8, r8, r9, lsl #1 ; [p6+2*p7 | p4+2*p5] 3821b362b15af34006e6a11974088a46d42b903418eJohann add r8, r8, r10 ; [p6+2*p7+p8 | p4+2*p5+p6] 3831b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r8, r8, r12 ; [p6+2*p7+p8+2 | p4+2*p5+p6+2] 3841b362b15af34006e6a11974088a46d42b903418eJohann 3851b362b15af34006e6a11974088a46d42b903418eJohann ldr r0, [sp, #44] ; dst_stride 3861b362b15af34006e6a11974088a46d42b903418eJohann ldr r3, [sp, #40] ; dst 3871b362b15af34006e6a11974088a46d42b903418eJohann 3881b362b15af34006e6a11974088a46d42b903418eJohann ; scale down 3891b362b15af34006e6a11974088a46d42b903418eJohann and r5, lr, r5, asr #2 ; [B|A] 3901b362b15af34006e6a11974088a46d42b903418eJohann and r6, lr, r6, asr #2 ; [D|C] 3911b362b15af34006e6a11974088a46d42b903418eJohann and r7, lr, r7, asr #2 ; [H|G] 3921b362b15af34006e6a11974088a46d42b903418eJohann and r8, lr, r8, asr #2 ; [L|K] 3931b362b15af34006e6a11974088a46d42b903418eJohann 3941b362b15af34006e6a11974088a46d42b903418eJohann add r12, r11, r2, lsl #8 ; [J|F|I|E] 3951b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3], r0 3961b362b15af34006e6a11974088a46d42b903418eJohann 3971b362b15af34006e6a11974088a46d42b903418eJohann add r12, r7, r8, lsl #8 ; [L|H|K|G] 3981b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3], r0 3991b362b15af34006e6a11974088a46d42b903418eJohann 4001b362b15af34006e6a11974088a46d42b903418eJohann pkhbt r2, r6, r2, lsl #16 ; [-|I|-|C] 4011b362b15af34006e6a11974088a46d42b903418eJohann add r2, r2, r11, lsl #8 ; [F|I|E|C] 4021b362b15af34006e6a11974088a46d42b903418eJohann 4031b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r12, r6, r5 ; [-|D|-|A] 4041b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r10, r7, r5, asr #16 ; [-|H|-|B] 4051b362b15af34006e6a11974088a46d42b903418eJohann str r2, [r3], r0 4061b362b15af34006e6a11974088a46d42b903418eJohann add r12, r12, r10, lsl #8 ; [H|D|B|A] 4071b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3] 4081b362b15af34006e6a11974088a46d42b903418eJohann 4091b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} 4101b362b15af34006e6a11974088a46d42b903418eJohann 4111b362b15af34006e6a11974088a46d42b903418eJohannb_vl_pred 4121b362b15af34006e6a11974088a46d42b903418eJohann ldr r4, [r0] ; [3|2|1|0] = Above[0-3] 4131b362b15af34006e6a11974088a46d42b903418eJohann ldr r12, c00020002 4141b362b15af34006e6a11974088a46d42b903418eJohann ldr r5, [r0, #4] ; [7|6|5|4] = Above[4-7] 4151b362b15af34006e6a11974088a46d42b903418eJohann ldr lr, c00FF00FF 4161b362b15af34006e6a11974088a46d42b903418eJohann ldr r2, c00010001 4171b362b15af34006e6a11974088a46d42b903418eJohann 4181b362b15af34006e6a11974088a46d42b903418eJohann mov r0, r4, lsr #16 ; [-|-|3|2] 4191b362b15af34006e6a11974088a46d42b903418eJohann add r0, r0, r5, lsl #16 ; [5|4|3|2] 4201b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r6, r4 ; [2|0] 4211b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r7, r4, ror #8 ; [3|1] 4221b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r8, r0 ; [4|2] 4231b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r9, r0, ror #8 ; [5|3] 4241b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r10, r5 ; [6|4] 4251b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r11, r5, ror #8 ; [7|5] 4261b362b15af34006e6a11974088a46d42b903418eJohann 4271b362b15af34006e6a11974088a46d42b903418eJohann uadd16 r4, r6, r7 ; [p2+p3 | p0+p1] 4281b362b15af34006e6a11974088a46d42b903418eJohann uhadd16 r4, r4, r2 ; [(p2+p3+1)>>1 | (p0+p1+1)>>1] 4291b362b15af34006e6a11974088a46d42b903418eJohann ; [B|A] 4301b362b15af34006e6a11974088a46d42b903418eJohann 4311b362b15af34006e6a11974088a46d42b903418eJohann add r5, r6, r7, lsl #1 ; [p2+2*p3 | p0+2*p1] 4321b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r8 ; [p2+2*p3+p4 | p0+2*p1+p2] 4331b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r5, r5, r12 ; [p2+2*p3+p4+2 | p0+2*p1+p2+2] 4341b362b15af34006e6a11974088a46d42b903418eJohann 4351b362b15af34006e6a11974088a46d42b903418eJohann uadd16 r6, r7, r8 ; [p3+p4 | p1+p2] 4361b362b15af34006e6a11974088a46d42b903418eJohann uhadd16 r6, r6, r2 ; [(p3+p4+1)>>1 | (p1+p2+1)>>1] 4371b362b15af34006e6a11974088a46d42b903418eJohann ; [F|E] 4381b362b15af34006e6a11974088a46d42b903418eJohann 4391b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r8, lsl #1 ; [p3+2*p4 | p1+2*p2] 4401b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r9 ; [p3+2*p4+p5 | p1+2*p2+p3] 4411b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r7, r7, r12 ; [p3+2*p4+p5+2 | p1+2*p2+p3+2] 4421b362b15af34006e6a11974088a46d42b903418eJohann 4431b362b15af34006e6a11974088a46d42b903418eJohann add r8, r8, r9, lsl #1 ; [p4+2*p5 | p2+2*p3] 4441b362b15af34006e6a11974088a46d42b903418eJohann add r8, r8, r10 ; [p4+2*p5+p6 | p2+2*p3+p4] 4451b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r8, r8, r12 ; [p4+2*p5+p6+2 | p2+2*p3+p4+2] 4461b362b15af34006e6a11974088a46d42b903418eJohann 4471b362b15af34006e6a11974088a46d42b903418eJohann add r9, r9, r10, lsl #1 ; [p5+2*p6 | p3+2*p4] 4481b362b15af34006e6a11974088a46d42b903418eJohann add r9, r9, r11 ; [p5+2*p6+p7 | p3+2*p4+p5] 4491b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r9, r9, r12 ; [p5+2*p6+p7+2 | p3+2*p4+p5+2] 4501b362b15af34006e6a11974088a46d42b903418eJohann 4511b362b15af34006e6a11974088a46d42b903418eJohann ldr r0, [sp, #44] ; dst_stride 4521b362b15af34006e6a11974088a46d42b903418eJohann ldr r3, [sp, #40] ; dst 4531b362b15af34006e6a11974088a46d42b903418eJohann 4541b362b15af34006e6a11974088a46d42b903418eJohann ; scale down 4551b362b15af34006e6a11974088a46d42b903418eJohann and r5, lr, r5, asr #2 ; [D|C] 4561b362b15af34006e6a11974088a46d42b903418eJohann and r7, lr, r7, asr #2 ; [H|G] 4571b362b15af34006e6a11974088a46d42b903418eJohann and r8, lr, r8, asr #2 ; [I|D] 4581b362b15af34006e6a11974088a46d42b903418eJohann and r9, lr, r9, asr #2 ; [J|H] 4591b362b15af34006e6a11974088a46d42b903418eJohann 4601b362b15af34006e6a11974088a46d42b903418eJohann add r10, r4, r6, lsl #8 ; [F|B|E|A] 4611b362b15af34006e6a11974088a46d42b903418eJohann str r10, [r3], r0 4621b362b15af34006e6a11974088a46d42b903418eJohann 4631b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r7, lsl #8 ; [H|C|G|D] 4641b362b15af34006e6a11974088a46d42b903418eJohann str r5, [r3], r0 4651b362b15af34006e6a11974088a46d42b903418eJohann 4661b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r12, r8, r4, asr #16 ; [-|I|-|B] 4671b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r10, r9, r8 ; [-|J|-|D] 4681b362b15af34006e6a11974088a46d42b903418eJohann 4691b362b15af34006e6a11974088a46d42b903418eJohann add r12, r6, r12, lsl #8 ; [I|F|B|E] 4701b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3], r0 4711b362b15af34006e6a11974088a46d42b903418eJohann 4721b362b15af34006e6a11974088a46d42b903418eJohann add r10, r7, r10, lsl #8 ; [J|H|D|G] 4731b362b15af34006e6a11974088a46d42b903418eJohann str r10, [r3] 4741b362b15af34006e6a11974088a46d42b903418eJohann 4751b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} 4761b362b15af34006e6a11974088a46d42b903418eJohann 4771b362b15af34006e6a11974088a46d42b903418eJohannb_hd_pred 4781b362b15af34006e6a11974088a46d42b903418eJohann ldrb r7, [r1], r2 ; l[0] = pp[3] 4791b362b15af34006e6a11974088a46d42b903418eJohann ldr lr, [r0] ; Above = pp[8|7|6|5] 4801b362b15af34006e6a11974088a46d42b903418eJohann ldrb r8, [sp, #48] ; tl = pp[4] 4811b362b15af34006e6a11974088a46d42b903418eJohann ldrb r6, [r1], r2 ; l[1] = pp[2] 4821b362b15af34006e6a11974088a46d42b903418eJohann ldrb r5, [r1], r2 ; l[2] = pp[1] 4831b362b15af34006e6a11974088a46d42b903418eJohann ldrb r4, [r1] ; l[3] = pp[0] 4841b362b15af34006e6a11974088a46d42b903418eJohann 4851b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r9, lr ; p[7|5] 4861b362b15af34006e6a11974088a46d42b903418eJohann uxtb16 r10, lr, ror #8 ; p[8|6] 4871b362b15af34006e6a11974088a46d42b903418eJohann 4881b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r5, lsl #16 ; p[1|0] 4891b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r6, lsl #16 ; p[2|1] 4901b362b15af34006e6a11974088a46d42b903418eJohann add r6, r6, r7, lsl #16 ; p[3|2] 4911b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r8, lsl #16 ; p[4|3] 4921b362b15af34006e6a11974088a46d42b903418eJohann 4931b362b15af34006e6a11974088a46d42b903418eJohann ldr r12, c00020002 4941b362b15af34006e6a11974088a46d42b903418eJohann ldr lr, c00FF00FF 4951b362b15af34006e6a11974088a46d42b903418eJohann ldr r2, c00010001 4961b362b15af34006e6a11974088a46d42b903418eJohann 4971b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r8, r7, r9 ; p[4|5] 4981b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r1, r9, r10 ; p[7|6] 4991b362b15af34006e6a11974088a46d42b903418eJohann pkhbt r10, r8, r10, lsl #16 ; p[6|5] 5001b362b15af34006e6a11974088a46d42b903418eJohann 5011b362b15af34006e6a11974088a46d42b903418eJohann uadd16 r11, r4, r5 ; [p1+p2 | p0+p1] 5021b362b15af34006e6a11974088a46d42b903418eJohann uhadd16 r11, r11, r2 ; [(p1+p2+1)>>1 | (p0+p1+1)>>1] 5031b362b15af34006e6a11974088a46d42b903418eJohann ; [B|A] 5041b362b15af34006e6a11974088a46d42b903418eJohann 5051b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r5, lsl #1 ; [p1+2*p2 | p0+2*p1] 5061b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r6 ; [p1+2*p2+p3 | p0+2*p1+p2] 5071b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r4, r4, r12 ; [p1+2*p2+p3+2 | p0+2*p1+p2+2] 5081b362b15af34006e6a11974088a46d42b903418eJohann 5091b362b15af34006e6a11974088a46d42b903418eJohann uadd16 r0, r6, r7 ; [p3+p4 | p2+p3] 5101b362b15af34006e6a11974088a46d42b903418eJohann uhadd16 r0, r0, r2 ; [(p3+p4+1)>>1 | (p2+p3+1)>>1] 5111b362b15af34006e6a11974088a46d42b903418eJohann ; [F|E] 5121b362b15af34006e6a11974088a46d42b903418eJohann 5131b362b15af34006e6a11974088a46d42b903418eJohann add r5, r6, r7, lsl #1 ; [p3+2*p4 | p2+2*p3] 5141b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r8, ror #16 ; [p3+2*p4+p5 | p2+2*p3+p4] 5151b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r5, r5, r12 ; [p3+2*p4+p5+2 | p2+2*p3+p4+2] 5161b362b15af34006e6a11974088a46d42b903418eJohann 5171b362b15af34006e6a11974088a46d42b903418eJohann add r6, r12, r8, ror #16 ; [p5+2 | p4+2] 5181b362b15af34006e6a11974088a46d42b903418eJohann add r6, r6, r10, lsl #1 ; [p5+2+2*p6 | p4+2+2*p5] 5191b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r6, r6, r1 ; [p5+2+2*p6+p7 | p4+2+2*p5+p6] 5201b362b15af34006e6a11974088a46d42b903418eJohann 5211b362b15af34006e6a11974088a46d42b903418eJohann ; scale down 5221b362b15af34006e6a11974088a46d42b903418eJohann and r4, lr, r4, asr #2 ; [D|C] 5231b362b15af34006e6a11974088a46d42b903418eJohann and r5, lr, r5, asr #2 ; [H|G] 5241b362b15af34006e6a11974088a46d42b903418eJohann and r6, lr, r6, asr #2 ; [J|I] 5251b362b15af34006e6a11974088a46d42b903418eJohann 5261b362b15af34006e6a11974088a46d42b903418eJohann ldr lr, [sp, #44] ; dst_stride 5271b362b15af34006e6a11974088a46d42b903418eJohann ldr r3, [sp, #40] ; dst 5281b362b15af34006e6a11974088a46d42b903418eJohann 5291b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r2, r0, r6 ; [-|F|-|I] 5301b362b15af34006e6a11974088a46d42b903418eJohann pkhtb r12, r6, r5, asr #16 ; [-|J|-|H] 5311b362b15af34006e6a11974088a46d42b903418eJohann add r12, r12, r2, lsl #8 ; [F|J|I|H] 5321b362b15af34006e6a11974088a46d42b903418eJohann add r2, r0, r5, lsl #8 ; [H|F|G|E] 5331b362b15af34006e6a11974088a46d42b903418eJohann mov r12, r12, ror #24 ; [J|I|H|F] 5341b362b15af34006e6a11974088a46d42b903418eJohann str r12, [r3], lr 5351b362b15af34006e6a11974088a46d42b903418eJohann 5361b362b15af34006e6a11974088a46d42b903418eJohann mov r7, r11, asr #16 ; [-|-|-|B] 5371b362b15af34006e6a11974088a46d42b903418eJohann str r2, [r3], lr 5381b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r0, lsl #16 ; [-|E|-|B] 5391b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r4, asr #8 ; [-|E|D|B] 5401b362b15af34006e6a11974088a46d42b903418eJohann add r7, r7, r5, lsl #24 ; [G|E|D|B] 5411b362b15af34006e6a11974088a46d42b903418eJohann str r7, [r3], lr 5421b362b15af34006e6a11974088a46d42b903418eJohann 5431b362b15af34006e6a11974088a46d42b903418eJohann add r5, r11, r4, lsl #8 ; [D|B|C|A] 5441b362b15af34006e6a11974088a46d42b903418eJohann str r5, [r3] 5451b362b15af34006e6a11974088a46d42b903418eJohann 5461b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} 5471b362b15af34006e6a11974088a46d42b903418eJohann 5481b362b15af34006e6a11974088a46d42b903418eJohann 5491b362b15af34006e6a11974088a46d42b903418eJohann 5501b362b15af34006e6a11974088a46d42b903418eJohannb_hu_pred 5511b362b15af34006e6a11974088a46d42b903418eJohann ldrb r4, [r1], r2 ; Left[0] 5521b362b15af34006e6a11974088a46d42b903418eJohann ldr r12, c00020002 5531b362b15af34006e6a11974088a46d42b903418eJohann ldrb r5, [r1], r2 ; Left[1] 5541b362b15af34006e6a11974088a46d42b903418eJohann ldr lr, c00FF00FF 5551b362b15af34006e6a11974088a46d42b903418eJohann ldrb r6, [r1], r2 ; Left[2] 5561b362b15af34006e6a11974088a46d42b903418eJohann ldr r2, c00010001 5571b362b15af34006e6a11974088a46d42b903418eJohann ldrb r7, [r1] ; Left[3] 5581b362b15af34006e6a11974088a46d42b903418eJohann 5591b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r5, lsl #16 ; [1|0] 5601b362b15af34006e6a11974088a46d42b903418eJohann add r5, r5, r6, lsl #16 ; [2|1] 5611b362b15af34006e6a11974088a46d42b903418eJohann add r9, r6, r7, lsl #16 ; [3|2] 5621b362b15af34006e6a11974088a46d42b903418eJohann 5631b362b15af34006e6a11974088a46d42b903418eJohann uadd16 r8, r4, r5 ; [p1+p2 | p0+p1] 5641b362b15af34006e6a11974088a46d42b903418eJohann uhadd16 r8, r8, r2 ; [(p1+p2+1)>>1 | (p0+p1+1)>>1] 5651b362b15af34006e6a11974088a46d42b903418eJohann ; [B|A] 5661b362b15af34006e6a11974088a46d42b903418eJohann 5671b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r5, lsl #1 ; [p1+2*p2 | p0+2*p1] 5681b362b15af34006e6a11974088a46d42b903418eJohann add r4, r4, r9 ; [p1+2*p2+p3 | p0+2*p1+p2] 5691b362b15af34006e6a11974088a46d42b903418eJohann uxtab16 r4, r4, r12 ; [p1+2*p2+p3+2 | p0+2*p1+p2+2] 5701b362b15af34006e6a11974088a46d42b903418eJohann ldr r2, [sp, #44] ; dst_stride 5711b362b15af34006e6a11974088a46d42b903418eJohann ldr r3, [sp, #40] ; dst 5721b362b15af34006e6a11974088a46d42b903418eJohann and r4, lr, r4, asr #2 ; [D|C] 5731b362b15af34006e6a11974088a46d42b903418eJohann 5741b362b15af34006e6a11974088a46d42b903418eJohann add r10, r6, r7 ; [p2+p3] 5751b362b15af34006e6a11974088a46d42b903418eJohann add r11, r10, r7, lsl #1 ; [p2+3*p3] 5761b362b15af34006e6a11974088a46d42b903418eJohann add r10, r10, #1 5771b362b15af34006e6a11974088a46d42b903418eJohann add r11, r11, #2 5781b362b15af34006e6a11974088a46d42b903418eJohann mov r10, r10, asr #1 ; [E] 5791b362b15af34006e6a11974088a46d42b903418eJohann mov r11, r11, asr #2 ; [F] 5801b362b15af34006e6a11974088a46d42b903418eJohann 5811b362b15af34006e6a11974088a46d42b903418eJohann add r9, r7, r9, asr #8 ; [-|-|G|G] 5821b362b15af34006e6a11974088a46d42b903418eJohann add r0, r8, r4, lsl #8 ; [D|B|C|A] 5831b362b15af34006e6a11974088a46d42b903418eJohann add r7, r9, r9, lsl #16 ; [G|G|G|G] 5841b362b15af34006e6a11974088a46d42b903418eJohann 5851b362b15af34006e6a11974088a46d42b903418eJohann str r0, [r3], r2 5861b362b15af34006e6a11974088a46d42b903418eJohann 5871b362b15af34006e6a11974088a46d42b903418eJohann mov r1, r8, asr #16 ; [-|-|-|B] 5881b362b15af34006e6a11974088a46d42b903418eJohann add r1, r1, r4, asr #8 ; [-|-|D|B] 5891b362b15af34006e6a11974088a46d42b903418eJohann add r1, r1, r10, lsl #16 ; [-|E|D|B] 5901b362b15af34006e6a11974088a46d42b903418eJohann add r1, r1, r11, lsl #24 ; [F|E|D|B] 5911b362b15af34006e6a11974088a46d42b903418eJohann str r1, [r3], r2 5921b362b15af34006e6a11974088a46d42b903418eJohann 5931b362b15af34006e6a11974088a46d42b903418eJohann add r10, r11, lsl #8 ; [-|-|F|E] 5941b362b15af34006e6a11974088a46d42b903418eJohann add r10, r10, r9, lsl #16 ; [G|G|F|E] 5951b362b15af34006e6a11974088a46d42b903418eJohann str r10, [r3], r2 5961b362b15af34006e6a11974088a46d42b903418eJohann 5971b362b15af34006e6a11974088a46d42b903418eJohann str r7, [r3] 5981b362b15af34006e6a11974088a46d42b903418eJohann 5991b362b15af34006e6a11974088a46d42b903418eJohann pop {r4-r12, pc} 6001b362b15af34006e6a11974088a46d42b903418eJohann 6011b362b15af34006e6a11974088a46d42b903418eJohann ENDP 6021b362b15af34006e6a11974088a46d42b903418eJohann 6031b362b15af34006e6a11974088a46d42b903418eJohann; constants 6041b362b15af34006e6a11974088a46d42b903418eJohannc00010001 6051b362b15af34006e6a11974088a46d42b903418eJohann DCD 0x00010001 6061b362b15af34006e6a11974088a46d42b903418eJohannc00020002 6071b362b15af34006e6a11974088a46d42b903418eJohann DCD 0x00020002 6081b362b15af34006e6a11974088a46d42b903418eJohannc00FF00FF 6091b362b15af34006e6a11974088a46d42b903418eJohann DCD 0x00FF00FF 6101b362b15af34006e6a11974088a46d42b903418eJohann 6111b362b15af34006e6a11974088a46d42b903418eJohann END 612