1f71323e297a928af368937089d3ed71239786f86Andreas Huber; 2f71323e297a928af368937089d3ed71239786f86Andreas Huber; Copyright (c) 2010 The WebM project authors. All Rights Reserved. 3f71323e297a928af368937089d3ed71239786f86Andreas Huber; 4f71323e297a928af368937089d3ed71239786f86Andreas Huber; Use of this source code is governed by a BSD-style license and patent 5f71323e297a928af368937089d3ed71239786f86Andreas Huber; grant that can be found in the LICENSE file in the root of the source 6f71323e297a928af368937089d3ed71239786f86Andreas Huber; tree. All contributing project authors may be found in the AUTHORS 7f71323e297a928af368937089d3ed71239786f86Andreas Huber; file in the root of the source tree. 8f71323e297a928af368937089d3ed71239786f86Andreas Huber; 9f71323e297a928af368937089d3ed71239786f86Andreas Huber 10f71323e297a928af368937089d3ed71239786f86Andreas Huber EXPORT |vp8_dequant_idct_add_v6| 11f71323e297a928af368937089d3ed71239786f86Andreas Huber 12f71323e297a928af368937089d3ed71239786f86Andreas Huber AREA |.text|, CODE, READONLY 131b362b15af34006e6a11974088a46d42b903418eJohann;void vp8_dequant_idct_v6(short *input, short *dq, 141b362b15af34006e6a11974088a46d42b903418eJohann; unsigned char *dest, int stride) 151b362b15af34006e6a11974088a46d42b903418eJohann; r0 = q 16f71323e297a928af368937089d3ed71239786f86Andreas Huber; r1 = dq 171b362b15af34006e6a11974088a46d42b903418eJohann; r2 = dst 181b362b15af34006e6a11974088a46d42b903418eJohann; r3 = stride 19f71323e297a928af368937089d3ed71239786f86Andreas Huber 20f71323e297a928af368937089d3ed71239786f86Andreas Huber|vp8_dequant_idct_add_v6| PROC 21f71323e297a928af368937089d3ed71239786f86Andreas Huber stmdb sp!, {r4-r11, lr} 22f71323e297a928af368937089d3ed71239786f86Andreas Huber 23f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r4, [r0] ;input 24f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r5, [r1], #4 ;dq 25f71323e297a928af368937089d3ed71239786f86Andreas Huber 26f71323e297a928af368937089d3ed71239786f86Andreas Huber sub sp, sp, #4 27f71323e297a928af368937089d3ed71239786f86Andreas Huber str r3, [sp] 28f71323e297a928af368937089d3ed71239786f86Andreas Huber 29f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r12, #4 30f71323e297a928af368937089d3ed71239786f86Andreas Huber 31f71323e297a928af368937089d3ed71239786f86Andreas Hubervp8_dequant_add_loop 32f71323e297a928af368937089d3ed71239786f86Andreas Huber smulbb r6, r4, r5 33f71323e297a928af368937089d3ed71239786f86Andreas Huber smultt r7, r4, r5 34f71323e297a928af368937089d3ed71239786f86Andreas Huber 35f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r4, [r0, #4] ;input 36f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r5, [r1], #4 ;dq 37f71323e297a928af368937089d3ed71239786f86Andreas Huber 38f71323e297a928af368937089d3ed71239786f86Andreas Huber strh r6, [r0], #2 39f71323e297a928af368937089d3ed71239786f86Andreas Huber strh r7, [r0], #2 40f71323e297a928af368937089d3ed71239786f86Andreas Huber 41f71323e297a928af368937089d3ed71239786f86Andreas Huber smulbb r6, r4, r5 42f71323e297a928af368937089d3ed71239786f86Andreas Huber smultt r7, r4, r5 43f71323e297a928af368937089d3ed71239786f86Andreas Huber 44f71323e297a928af368937089d3ed71239786f86Andreas Huber subs r12, r12, #1 45f71323e297a928af368937089d3ed71239786f86Andreas Huber 46f71323e297a928af368937089d3ed71239786f86Andreas Huber ldrne r4, [r0, #4] 47f71323e297a928af368937089d3ed71239786f86Andreas Huber ldrne r5, [r1], #4 48f71323e297a928af368937089d3ed71239786f86Andreas Huber 49f71323e297a928af368937089d3ed71239786f86Andreas Huber strh r6, [r0], #2 50f71323e297a928af368937089d3ed71239786f86Andreas Huber strh r7, [r0], #2 51f71323e297a928af368937089d3ed71239786f86Andreas Huber 52f71323e297a928af368937089d3ed71239786f86Andreas Huber bne vp8_dequant_add_loop 53f71323e297a928af368937089d3ed71239786f86Andreas Huber 54f71323e297a928af368937089d3ed71239786f86Andreas Huber sub r0, r0, #32 55f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r1, r0 56f71323e297a928af368937089d3ed71239786f86Andreas Huber 57f71323e297a928af368937089d3ed71239786f86Andreas Huber; short_idct4x4llm_v6_dual 58f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r3, cospi8sqrt2minus1 59f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r4, sinpi8sqrt2 60f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r6, [r0, #8] 61f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r5, #2 62f71323e297a928af368937089d3ed71239786f86Andreas Hubervp8_dequant_idct_loop1_v6 63f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r12, [r0, #24] 64f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r14, [r0, #16] 65f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r9, r3, r6 66f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r7, r3, r6 67f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r10, r4, r6 68f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r8, r4, r6 69f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r7, r7, r9, lsl #16 70f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r11, r3, r12 71f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r8, r8, r10, lsl #16 72f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r6, r7 73f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r7, r4, r12 74f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r9, r3, r12 75f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r10, r4, r12 76f71323e297a928af368937089d3ed71239786f86Andreas Huber subs r5, r5, #1 77f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r9, r9, r11, lsl #16 78f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r11, [r0], #4 79f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r10, r10, r7, lsl #16 80f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r7, r12, r9 81f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r7, r8, r7 82f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r6, r10 83f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r10, r11, r14 84f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r8, r11, r14 85f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r9, r10, r6 86f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r10, r10, r6 87f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r8, r7 88f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r7, r8, r7 89f71323e297a928af368937089d3ed71239786f86Andreas Huber str r6, [r1, #8] 90f71323e297a928af368937089d3ed71239786f86Andreas Huber ldrne r6, [r0, #8] 91f71323e297a928af368937089d3ed71239786f86Andreas Huber str r7, [r1, #16] 92f71323e297a928af368937089d3ed71239786f86Andreas Huber str r10, [r1, #24] 93f71323e297a928af368937089d3ed71239786f86Andreas Huber str r9, [r1], #4 94f71323e297a928af368937089d3ed71239786f86Andreas Huber bne vp8_dequant_idct_loop1_v6 95f71323e297a928af368937089d3ed71239786f86Andreas Huber 96f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r5, #2 97f71323e297a928af368937089d3ed71239786f86Andreas Huber sub r0, r1, #8 98f71323e297a928af368937089d3ed71239786f86Andreas Hubervp8_dequant_idct_loop2_v6 99f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r6, [r0], #4 100f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r7, [r0], #4 101f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r8, [r0], #4 102f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r9, [r0], #4 103f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r1, r3, r6 104f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r12, r4, r6 105f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt lr, r3, r8 106f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r10, r4, r8 107f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r11, r8, r6, lsl #16 108f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r1, lr, r1, lsl #16 109f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r12, r10, r12, lsl #16 110f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r6, r6, r8, asr #16 111f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r1, r6 112f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt lr, r9, r7, lsl #16 113f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r10, r11, lr 114f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 lr, r11, lr 115f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r8, r7, r9, asr #16 116f71323e297a928af368937089d3ed71239786f86Andreas Huber subs r5, r5, #1 117f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r1, r3, r8 118f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r7, r3, r8 119f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r11, r4, r8 120f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r9, r4, r8 121f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r1, r7, r1, lsl #16 122f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r8, r1, r8 123f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r11, r9, r11, lsl #16 124f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r1, r12, r8 125f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r8, r11, r6 126f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r9, c0x00040004 1271b362b15af34006e6a11974088a46d42b903418eJohann ldr r12, [sp] ; get stride from stack 128f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r10, r8 129f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r7, r10, r8 130f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r7, r7, r9 131f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r6, r9 132f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r10, r14, r1 133f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r1, r14, r1 134f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r10, r10, r9 135f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r1, r1, r9 1361b362b15af34006e6a11974088a46d42b903418eJohann ldr r11, [r2] ; load input from dst 137f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r8, r7, asr #3 138f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r9, r8, r10, asr #19 139f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r8, r1, asr #3 140f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r8, r8, r6, asr #19 141f71323e297a928af368937089d3ed71239786f86Andreas Huber uxtb16 lr, r11, ror #8 142f71323e297a928af368937089d3ed71239786f86Andreas Huber qadd16 r9, r9, lr 143f71323e297a928af368937089d3ed71239786f86Andreas Huber uxtb16 lr, r11 144f71323e297a928af368937089d3ed71239786f86Andreas Huber qadd16 r8, r8, lr 145f71323e297a928af368937089d3ed71239786f86Andreas Huber usat16 r9, #8, r9 146f71323e297a928af368937089d3ed71239786f86Andreas Huber usat16 r8, #8, r8 147f71323e297a928af368937089d3ed71239786f86Andreas Huber orr r9, r8, r9, lsl #8 1481b362b15af34006e6a11974088a46d42b903418eJohann ldr r11, [r2, r12] ; load input from dst 149f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r7, r7, lsl #16 150f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r1, r1, lsl #16 151f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r10, r10, lsl #16 152f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r6, r6, lsl #16 153f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r7, r7, asr #3 154f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r7, r7, r10, asr #19 155f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r1, r1, asr #3 156f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r1, r1, r6, asr #19 157f71323e297a928af368937089d3ed71239786f86Andreas Huber uxtb16 r8, r11, ror #8 158f71323e297a928af368937089d3ed71239786f86Andreas Huber qadd16 r7, r7, r8 159f71323e297a928af368937089d3ed71239786f86Andreas Huber uxtb16 r8, r11 160f71323e297a928af368937089d3ed71239786f86Andreas Huber qadd16 r1, r1, r8 161f71323e297a928af368937089d3ed71239786f86Andreas Huber usat16 r7, #8, r7 162f71323e297a928af368937089d3ed71239786f86Andreas Huber usat16 r1, #8, r1 163f71323e297a928af368937089d3ed71239786f86Andreas Huber orr r1, r1, r7, lsl #8 1641b362b15af34006e6a11974088a46d42b903418eJohann str r9, [r2], r12 ; store output to dst 1651b362b15af34006e6a11974088a46d42b903418eJohann str r1, [r2], r12 ; store output to dst 166f71323e297a928af368937089d3ed71239786f86Andreas Huber bne vp8_dequant_idct_loop2_v6 167f71323e297a928af368937089d3ed71239786f86Andreas Huber 168f71323e297a928af368937089d3ed71239786f86Andreas Huber; vpx_memset 169f71323e297a928af368937089d3ed71239786f86Andreas Huber sub r0, r0, #32 170f71323e297a928af368937089d3ed71239786f86Andreas Huber add sp, sp, #4 171f71323e297a928af368937089d3ed71239786f86Andreas Huber 172f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r12, #0 173f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0] 174f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #4] 175f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #8] 176f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #12] 177f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #16] 178f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #20] 179f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #24] 180f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #28] 181f71323e297a928af368937089d3ed71239786f86Andreas Huber 182f71323e297a928af368937089d3ed71239786f86Andreas Huber ldmia sp!, {r4 - r11, pc} 183f71323e297a928af368937089d3ed71239786f86Andreas Huber ENDP ; |vp8_dequant_idct_add_v6| 184f71323e297a928af368937089d3ed71239786f86Andreas Huber 185f71323e297a928af368937089d3ed71239786f86Andreas Huber; Constant Pool 186f71323e297a928af368937089d3ed71239786f86Andreas Hubercospi8sqrt2minus1 DCD 0x00004E7B 187f71323e297a928af368937089d3ed71239786f86Andreas Hubersinpi8sqrt2 DCD 0x00008A8C 188f71323e297a928af368937089d3ed71239786f86Andreas Huberc0x00040004 DCD 0x00040004 189f71323e297a928af368937089d3ed71239786f86Andreas Huber 190f71323e297a928af368937089d3ed71239786f86Andreas Huber END 191