1474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; 2474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; 4474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; Use of this source code is governed by a BSD-style license 5474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; that can be found in the LICENSE file in the root of the source 6474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; tree. An additional intellectual property rights grant can be found 7474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; in the file PATENTS. All contributing project authors may 8474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; be found in the AUTHORS file in the root of the source tree. 9474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; 10474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 11474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 12474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org EXPORT |vp8_build_intra_predictors_mby_neon_func| 13474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org EXPORT |vp8_build_intra_predictors_mby_s_neon_func| 14474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 15474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ARM 16474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org REQUIRE8 17474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org PRESERVE8 18474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 19474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org AREA ||.text||, CODE, READONLY, ALIGN=2 20474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; r0 unsigned char *y_buffer 21474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; r1 unsigned char *ypred_ptr 22474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; r2 int y_stride 23474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; r3 int mode 24474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; stack int Up 25474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; stack int Left 26474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 27474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org|vp8_build_intra_predictors_mby_neon_func| PROC 28474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org push {r4-r8, lr} 2977496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org vpush {d8-d15} 30474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 31474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r3, #0 32474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq case_dc_pred 33474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r3, #1 34474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq case_v_pred 35474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r3, #2 36474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq case_h_pred 37474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r3, #3 38474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq case_tm_pred 39474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 40474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcase_dc_pred 4177496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org ldr r4, [sp, #88] ; Up 4277496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org ldr r5, [sp, #92] ; Left 43474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 44474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Default the DC average to 128 45474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r12, #128 46474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r12 47474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 48474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Zero out running sum 49474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r12, #0 50474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 51474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; compute shift and jump 52474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org adds r7, r4, r5 53474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq skip_dc_pred_up_left 54474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 55474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load above row, if it exists 56474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r4, #0 57474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq skip_dc_pred_up 58474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 59474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r6, r0, r2 60474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vld1.8 {q1}, [r6] 61474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vpaddl.u8 q2, q1 62474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vpaddl.u16 q3, q2 63474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vpaddl.u32 q4, q3 64474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 65474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vmov.32 r4, d8[0] 66474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vmov.32 r6, d9[0] 67474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 68474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r4, r6 69474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 70474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Move back to interger registers 71474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 72474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgskip_dc_pred_up 73474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 74474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r5, #0 75474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq skip_dc_pred_left 76474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 77474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r0, r0, #1 78474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 79474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load left row, if it exists 80474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 81474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 82474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 83474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 84474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 85474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r3 86474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r4 87474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r5 88474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r6 89474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 90474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 91474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 92474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 93474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 94474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 95474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r3 96474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r4 97474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r5 98474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r6 99474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 100474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 101474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 102474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 103474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 104474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 105474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r3 106474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r4 107474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r5 108474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r6 109474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 110474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 111474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 112474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 113474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0] 114474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 115474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r3 116474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r4 117474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r5 118474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r6 119474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 120474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgskip_dc_pred_left 121474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r7, r7, #3 ; Shift 122474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r4, r7, #1 123474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r5, #1 124474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r5, lsl r4 125474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r5, r12, lsr r7 ; expected_dc 126474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 127474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r5 128474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 129474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgskip_dc_pred_up_left 130474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 131474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 132474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 133474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 134474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 135474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 136474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 137474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 138474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 139474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 140474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 141474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 142474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 143474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 144474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 145474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 146474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 14777496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org vpop {d8-d15} 148474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pop {r4-r8,pc} 149474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcase_v_pred 150474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Copy down above row 151474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r6, r0, r2 152474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vld1.8 {q0}, [r6] 153474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 154474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 155474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 156474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 157474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 158474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 159474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 160474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 161474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 162474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 163474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 164474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 165474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 166474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 167474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 168474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 169474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 17077496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org vpop {d8-d15} 171474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pop {r4-r8,pc} 172474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 173474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcase_h_pred 174474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load 4x yleft_col 175474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r0, r0, #1 176474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 177474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 178474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 179474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 180474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 181474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r3 182474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q1, r4 183474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q2, r5 184474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q3, r6 185474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 186474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q1}, [r1]! 187474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q2}, [r1]! 188474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q3}, [r1]! 189474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 190474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 191474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 192474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 193474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 194474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r3 195474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q1, r4 196474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q2, r5 197474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q3, r6 198474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 199474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q1}, [r1]! 200474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q2}, [r1]! 201474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q3}, [r1]! 202474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 203474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 204474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 205474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 206474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 207474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 208474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r3 209474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q1, r4 210474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q2, r5 211474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q3, r6 212474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 213474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q1}, [r1]! 214474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q2}, [r1]! 215474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q3}, [r1]! 216474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 217474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 218474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 219474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 220474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 221474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r3 222474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q1, r4 223474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q2, r5 224474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q3, r6 225474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 226474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q1}, [r1]! 227474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q2}, [r1]! 228474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q3}, [r1]! 229474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 23077496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org vpop {d8-d15} 231474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pop {r4-r8,pc} 232474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 233474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcase_tm_pred 234474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load yabove_row 235474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r3, r0, r2 236474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vld1.8 {q8}, [r3] 237474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 238474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load ytop_left 239474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r3, r3, #1 240474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r7, [r3] 241474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 242474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u16 q7, r7 243474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 244474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Compute yabove_row - ytop_left 245474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r3, #1 246474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r3 247474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 248474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vmull.u8 q4, d16, d0 249474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vmull.u8 q5, d17, d0 250474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 251474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vsub.s16 q4, q4, q7 252474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vsub.s16 q5, q5, q7 253474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 254474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load 4x yleft_col 255474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r0, r0, #1 256474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r12, #4 257474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 258474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcase_tm_pred_loop 259474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 260474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 261474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 262474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 263474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u16 q0, r3 264474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u16 q1, r4 265474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u16 q2, r5 266474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u16 q3, r6 267474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 268474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q8, q0, q4 269474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q9, q0, q5 270474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 271474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q10, q1, q4 272474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q11, q1, q5 273474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 274474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q12, q2, q4 275474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q13, q2, q5 276474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 277474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q14, q3, q4 278474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q15, q3, q5 279474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 280474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d0, q8, #0 281474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d1, q9, #0 282474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 283474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d2, q10, #0 284474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d3, q11, #0 285474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 286474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d4, q12, #0 287474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d5, q13, #0 288474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 289474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d6, q14, #0 290474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d7, q15, #0 291474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 292474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1]! 293474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q1}, [r1]! 294474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q2}, [r1]! 295474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q3}, [r1]! 296474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 297474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org subs r12, r12, #1 298474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org bne case_tm_pred_loop 299474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 30077496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org vpop {d8-d15} 301474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pop {r4-r8,pc} 302474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 303474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ENDP 304474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 305474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 306474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; r0 unsigned char *y_buffer 307474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; r1 unsigned char *ypred_ptr 308474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; r2 int y_stride 309474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; r3 int mode 310474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; stack int Up 311474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org; stack int Left 312474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 313474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org|vp8_build_intra_predictors_mby_s_neon_func| PROC 314474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org push {r4-r8, lr} 31577496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org vpush {d8-d15} 316474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 317474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r1, r0 ; unsigned char *ypred_ptr = x->dst.y_buffer; //x->Predictor; 318474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 319474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r3, #0 320474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq case_dc_pred_s 321474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r3, #1 322474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq case_v_pred_s 323474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r3, #2 324474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq case_h_pred_s 325474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r3, #3 326474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq case_tm_pred_s 327474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 328474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcase_dc_pred_s 32977496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org ldr r4, [sp, #88] ; Up 33077496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org ldr r5, [sp, #92] ; Left 331474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 332474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Default the DC average to 128 333474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r12, #128 334474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r12 335474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 336474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Zero out running sum 337474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r12, #0 338474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 339474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; compute shift and jump 340474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org adds r7, r4, r5 341474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq skip_dc_pred_up_left_s 342474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 343474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load above row, if it exists 344474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r4, #0 345474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq skip_dc_pred_up_s 346474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 347474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r6, r0, r2 348474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vld1.8 {q1}, [r6] 349474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vpaddl.u8 q2, q1 350474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vpaddl.u16 q3, q2 351474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vpaddl.u32 q4, q3 352474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 353474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vmov.32 r4, d8[0] 354474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vmov.32 r6, d9[0] 355474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 356474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r4, r6 357474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 358474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Move back to interger registers 359474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 360474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgskip_dc_pred_up_s 361474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 362474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org cmp r5, #0 363474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org beq skip_dc_pred_left_s 364474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 365474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r0, r0, #1 366474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 367474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load left row, if it exists 368474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 369474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 370474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 371474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 372474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 373474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r3 374474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r4 375474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r5 376474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r6 377474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 378474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 379474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 380474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 381474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 382474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 383474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r3 384474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r4 385474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r5 386474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r6 387474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 388474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 389474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 390474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 391474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 392474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 393474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r3 394474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r4 395474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r5 396474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r6 397474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 398474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 399474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 400474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 401474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0] 402474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 403474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r3 404474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r4 405474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r5 406474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r6 407474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 408474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgskip_dc_pred_left_s 409474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r7, r7, #3 ; Shift 410474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r4, r7, #1 411474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r5, #1 412474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org add r12, r12, r5, lsl r4 413474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r5, r12, lsr r7 ; expected_dc 414474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 415474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r5 416474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 417474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgskip_dc_pred_up_left_s 418474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 419474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 420474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 421474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 422474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 423474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 424474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 425474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 426474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 427474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 428474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 429474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 430474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 431474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 432474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 433474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 434474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 43577496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org vpop {d8-d15} 436474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pop {r4-r8,pc} 437474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcase_v_pred_s 438474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Copy down above row 439474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r6, r0, r2 440474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vld1.8 {q0}, [r6] 441474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 442474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 443474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 444474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 445474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 446474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 447474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 448474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 449474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 450474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 451474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 452474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 453474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 454474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 455474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 456474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 457474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 45877496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org 45977496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org vpop {d8-d15} 460474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pop {r4-r8,pc} 461474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 462474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcase_h_pred_s 463474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load 4x yleft_col 464474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r0, r0, #1 465474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 466474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 467474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 468474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 469474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 470474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r3 471474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q1, r4 472474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q2, r5 473474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q3, r6 474474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 475474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q1}, [r1], r2 476474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q2}, [r1], r2 477474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q3}, [r1], r2 478474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 479474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 480474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 481474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 482474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 483474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r3 484474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q1, r4 485474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q2, r5 486474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q3, r6 487474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 488474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q1}, [r1], r2 489474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q2}, [r1], r2 490474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q3}, [r1], r2 491474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 492474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 493474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 494474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 495474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 496474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 497474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r3 498474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q1, r4 499474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q2, r5 500474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q3, r6 501474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 502474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q1}, [r1], r2 503474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q2}, [r1], r2 504474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q3}, [r1], r2 505474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 506474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 507474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 508474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 509474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 510474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r3 511474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q1, r4 512474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q2, r5 513474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q3, r6 514474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 515474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q1}, [r1], r2 516474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q2}, [r1], r2 517474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q3}, [r1], r2 518474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 51977496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org vpop {d8-d15} 520474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pop {r4-r8,pc} 521474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 522474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcase_tm_pred_s 523474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load yabove_row 524474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r3, r0, r2 525474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vld1.8 {q8}, [r3] 526474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 527474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load ytop_left 528474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r3, r3, #1 529474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r7, [r3] 530474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 531474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u16 q7, r7 532474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 533474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Compute yabove_row - ytop_left 534474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r3, #1 535474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u8 q0, r3 536474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 537474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vmull.u8 q4, d16, d0 538474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vmull.u8 q5, d17, d0 539474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 540474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vsub.s16 q4, q4, q7 541474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vsub.s16 q5, q5, q7 542474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 543474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ; Load 4x yleft_col 544474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org sub r0, r0, #1 545474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org mov r12, #4 546474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 547474eb7536515fb785e925cc9375d22817c416851hclam@chromium.orgcase_tm_pred_loop_s 548474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r3, [r0], r2 549474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r4, [r0], r2 550474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r5, [r0], r2 551474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ldrb r6, [r0], r2 552474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u16 q0, r3 553474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u16 q1, r4 554474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u16 q2, r5 555474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vdup.u16 q3, r6 556474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 557474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q8, q0, q4 558474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q9, q0, q5 559474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 560474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q10, q1, q4 561474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q11, q1, q5 562474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 563474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q12, q2, q4 564474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q13, q2, q5 565474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 566474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q14, q3, q4 567474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqadd.s16 q15, q3, q5 568474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 569474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d0, q8, #0 570474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d1, q9, #0 571474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 572474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d2, q10, #0 573474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d3, q11, #0 574474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 575474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d4, q12, #0 576474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d5, q13, #0 577474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 578474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d6, q14, #0 579474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vqshrun.s16 d7, q15, #0 580474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 581474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q0}, [r1], r2 582474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q1}, [r1], r2 583474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q2}, [r1], r2 584474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org vst1.u8 {q3}, [r1], r2 585474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 586474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org subs r12, r12, #1 587474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org bne case_tm_pred_loop_s 588474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 58977496404dc182c2f4a5f86ebabffe1d1ceb81e7ejohannkoenig@chromium.org vpop {d8-d15} 590474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org pop {r4-r8,pc} 591474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 592474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org ENDP 593474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 594474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org 595474eb7536515fb785e925cc9375d22817c416851hclam@chromium.org END 596