dequant_idct_v6.asm revision f71323e297a928af368937089d3ed71239786f86
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 13f71323e297a928af368937089d3ed71239786f86Andreas Huber;void vp8_dequant_idct_v6(short *input, short *dq, unsigned char *pred, 14f71323e297a928af368937089d3ed71239786f86Andreas Huber; unsigned char *dest, int pitch, int stride) 15f71323e297a928af368937089d3ed71239786f86Andreas Huber; r0 = input 16f71323e297a928af368937089d3ed71239786f86Andreas Huber; r1 = dq 17f71323e297a928af368937089d3ed71239786f86Andreas Huber; r2 = pred 18f71323e297a928af368937089d3ed71239786f86Andreas Huber; r3 = dest 19f71323e297a928af368937089d3ed71239786f86Andreas Huber; sp + 36 = pitch ; +4 = 40 20f71323e297a928af368937089d3ed71239786f86Andreas Huber; sp + 40 = stride ; +4 = 44 21f71323e297a928af368937089d3ed71239786f86Andreas Huber 22f71323e297a928af368937089d3ed71239786f86Andreas Huber 23f71323e297a928af368937089d3ed71239786f86Andreas Huber|vp8_dequant_idct_add_v6| PROC 24f71323e297a928af368937089d3ed71239786f86Andreas Huber stmdb sp!, {r4-r11, lr} 25f71323e297a928af368937089d3ed71239786f86Andreas Huber 26f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r4, [r0] ;input 27f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r5, [r1], #4 ;dq 28f71323e297a928af368937089d3ed71239786f86Andreas Huber 29f71323e297a928af368937089d3ed71239786f86Andreas Huber sub sp, sp, #4 30f71323e297a928af368937089d3ed71239786f86Andreas Huber str r3, [sp] 31f71323e297a928af368937089d3ed71239786f86Andreas Huber 32f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r12, #4 33f71323e297a928af368937089d3ed71239786f86Andreas Huber 34f71323e297a928af368937089d3ed71239786f86Andreas Hubervp8_dequant_add_loop 35f71323e297a928af368937089d3ed71239786f86Andreas Huber smulbb r6, r4, r5 36f71323e297a928af368937089d3ed71239786f86Andreas Huber smultt r7, r4, r5 37f71323e297a928af368937089d3ed71239786f86Andreas Huber 38f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r4, [r0, #4] ;input 39f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r5, [r1], #4 ;dq 40f71323e297a928af368937089d3ed71239786f86Andreas Huber 41f71323e297a928af368937089d3ed71239786f86Andreas Huber strh r6, [r0], #2 42f71323e297a928af368937089d3ed71239786f86Andreas Huber strh r7, [r0], #2 43f71323e297a928af368937089d3ed71239786f86Andreas Huber 44f71323e297a928af368937089d3ed71239786f86Andreas Huber smulbb r6, r4, r5 45f71323e297a928af368937089d3ed71239786f86Andreas Huber smultt r7, r4, r5 46f71323e297a928af368937089d3ed71239786f86Andreas Huber 47f71323e297a928af368937089d3ed71239786f86Andreas Huber subs r12, r12, #1 48f71323e297a928af368937089d3ed71239786f86Andreas Huber 49f71323e297a928af368937089d3ed71239786f86Andreas Huber ldrne r4, [r0, #4] 50f71323e297a928af368937089d3ed71239786f86Andreas Huber ldrne r5, [r1], #4 51f71323e297a928af368937089d3ed71239786f86Andreas Huber 52f71323e297a928af368937089d3ed71239786f86Andreas Huber strh r6, [r0], #2 53f71323e297a928af368937089d3ed71239786f86Andreas Huber strh r7, [r0], #2 54f71323e297a928af368937089d3ed71239786f86Andreas Huber 55f71323e297a928af368937089d3ed71239786f86Andreas Huber bne vp8_dequant_add_loop 56f71323e297a928af368937089d3ed71239786f86Andreas Huber 57f71323e297a928af368937089d3ed71239786f86Andreas Huber sub r0, r0, #32 58f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r1, r0 59f71323e297a928af368937089d3ed71239786f86Andreas Huber 60f71323e297a928af368937089d3ed71239786f86Andreas Huber; short_idct4x4llm_v6_dual 61f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r3, cospi8sqrt2minus1 62f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r4, sinpi8sqrt2 63f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r6, [r0, #8] 64f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r5, #2 65f71323e297a928af368937089d3ed71239786f86Andreas Hubervp8_dequant_idct_loop1_v6 66f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r12, [r0, #24] 67f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r14, [r0, #16] 68f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r9, r3, r6 69f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r7, r3, r6 70f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r10, r4, r6 71f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r8, r4, r6 72f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r7, r7, r9, lsl #16 73f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r11, r3, r12 74f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r8, r8, r10, lsl #16 75f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r6, r7 76f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r7, r4, r12 77f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r9, r3, r12 78f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r10, r4, r12 79f71323e297a928af368937089d3ed71239786f86Andreas Huber subs r5, r5, #1 80f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r9, r9, r11, lsl #16 81f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r11, [r0], #4 82f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r10, r10, r7, lsl #16 83f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r7, r12, r9 84f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r7, r8, r7 85f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r6, r10 86f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r10, r11, r14 87f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r8, r11, r14 88f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r9, r10, r6 89f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r10, r10, r6 90f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r8, r7 91f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r7, r8, r7 92f71323e297a928af368937089d3ed71239786f86Andreas Huber str r6, [r1, #8] 93f71323e297a928af368937089d3ed71239786f86Andreas Huber ldrne r6, [r0, #8] 94f71323e297a928af368937089d3ed71239786f86Andreas Huber str r7, [r1, #16] 95f71323e297a928af368937089d3ed71239786f86Andreas Huber str r10, [r1, #24] 96f71323e297a928af368937089d3ed71239786f86Andreas Huber str r9, [r1], #4 97f71323e297a928af368937089d3ed71239786f86Andreas Huber bne vp8_dequant_idct_loop1_v6 98f71323e297a928af368937089d3ed71239786f86Andreas Huber 99f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r5, #2 100f71323e297a928af368937089d3ed71239786f86Andreas Huber sub r0, r1, #8 101f71323e297a928af368937089d3ed71239786f86Andreas Hubervp8_dequant_idct_loop2_v6 102f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r6, [r0], #4 103f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r7, [r0], #4 104f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r8, [r0], #4 105f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r9, [r0], #4 106f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r1, r3, r6 107f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r12, r4, r6 108f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt lr, r3, r8 109f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r10, r4, r8 110f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r11, r8, r6, lsl #16 111f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r1, lr, r1, lsl #16 112f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r12, r10, r12, lsl #16 113f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r6, r6, r8, asr #16 114f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r1, r6 115f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt lr, r9, r7, lsl #16 116f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r10, r11, lr 117f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 lr, r11, lr 118f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r8, r7, r9, asr #16 119f71323e297a928af368937089d3ed71239786f86Andreas Huber subs r5, r5, #1 120f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r1, r3, r8 121f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r7, r3, r8 122f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwt r11, r4, r8 123f71323e297a928af368937089d3ed71239786f86Andreas Huber smulwb r9, r4, r8 124f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r1, r7, r1, lsl #16 125f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r8, r1, r8 126f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhbt r11, r9, r11, lsl #16 127f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r1, r12, r8 128f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r8, r11, r6 129f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r9, c0x00040004 130f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r12, [sp, #40] 131f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r10, r8 132f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r7, r10, r8 133f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r7, r7, r9 134f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r6, r6, r9 135f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r10, r14, r1 136f71323e297a928af368937089d3ed71239786f86Andreas Huber usub16 r1, r14, r1 137f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r10, r10, r9 138f71323e297a928af368937089d3ed71239786f86Andreas Huber uadd16 r1, r1, r9 139f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r11, [r2], r12 140f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r8, r7, asr #3 141f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r9, r8, r10, asr #19 142f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r8, r1, asr #3 143f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r8, r8, r6, asr #19 144f71323e297a928af368937089d3ed71239786f86Andreas Huber uxtb16 lr, r11, ror #8 145f71323e297a928af368937089d3ed71239786f86Andreas Huber qadd16 r9, r9, lr 146f71323e297a928af368937089d3ed71239786f86Andreas Huber uxtb16 lr, r11 147f71323e297a928af368937089d3ed71239786f86Andreas Huber qadd16 r8, r8, lr 148f71323e297a928af368937089d3ed71239786f86Andreas Huber usat16 r9, #8, r9 149f71323e297a928af368937089d3ed71239786f86Andreas Huber usat16 r8, #8, r8 150f71323e297a928af368937089d3ed71239786f86Andreas Huber orr r9, r8, r9, lsl #8 151f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r11, [r2], r12 152f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr lr, [sp] 153f71323e297a928af368937089d3ed71239786f86Andreas Huber ldr r12, [sp, #44] 154f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r7, r7, lsl #16 155f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r1, r1, lsl #16 156f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r10, r10, lsl #16 157f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r6, r6, lsl #16 158f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r7, r7, asr #3 159f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r7, r7, r10, asr #19 160f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r1, r1, asr #3 161f71323e297a928af368937089d3ed71239786f86Andreas Huber pkhtb r1, r1, r6, asr #19 162f71323e297a928af368937089d3ed71239786f86Andreas Huber uxtb16 r8, r11, ror #8 163f71323e297a928af368937089d3ed71239786f86Andreas Huber qadd16 r7, r7, r8 164f71323e297a928af368937089d3ed71239786f86Andreas Huber uxtb16 r8, r11 165f71323e297a928af368937089d3ed71239786f86Andreas Huber qadd16 r1, r1, r8 166f71323e297a928af368937089d3ed71239786f86Andreas Huber usat16 r7, #8, r7 167f71323e297a928af368937089d3ed71239786f86Andreas Huber usat16 r1, #8, r1 168f71323e297a928af368937089d3ed71239786f86Andreas Huber orr r1, r1, r7, lsl #8 169f71323e297a928af368937089d3ed71239786f86Andreas Huber str r9, [lr], r12 170f71323e297a928af368937089d3ed71239786f86Andreas Huber str r1, [lr], r12 171f71323e297a928af368937089d3ed71239786f86Andreas Huber str lr, [sp] 172f71323e297a928af368937089d3ed71239786f86Andreas Huber bne vp8_dequant_idct_loop2_v6 173f71323e297a928af368937089d3ed71239786f86Andreas Huber 174f71323e297a928af368937089d3ed71239786f86Andreas Huber; vpx_memset 175f71323e297a928af368937089d3ed71239786f86Andreas Huber sub r0, r0, #32 176f71323e297a928af368937089d3ed71239786f86Andreas Huber add sp, sp, #4 177f71323e297a928af368937089d3ed71239786f86Andreas Huber 178f71323e297a928af368937089d3ed71239786f86Andreas Huber mov r12, #0 179f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0] 180f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #4] 181f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #8] 182f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #12] 183f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #16] 184f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #20] 185f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #24] 186f71323e297a928af368937089d3ed71239786f86Andreas Huber str r12, [r0, #28] 187f71323e297a928af368937089d3ed71239786f86Andreas Huber 188f71323e297a928af368937089d3ed71239786f86Andreas Huber ldmia sp!, {r4 - r11, pc} 189f71323e297a928af368937089d3ed71239786f86Andreas Huber ENDP ; |vp8_dequant_idct_add_v6| 190f71323e297a928af368937089d3ed71239786f86Andreas Huber 191f71323e297a928af368937089d3ed71239786f86Andreas Huber; Constant Pool 192f71323e297a928af368937089d3ed71239786f86Andreas Hubercospi8sqrt2minus1 DCD 0x00004E7B 193f71323e297a928af368937089d3ed71239786f86Andreas Hubersinpi8sqrt2 DCD 0x00008A8C 194f71323e297a928af368937089d3ed71239786f86Andreas Huberc0x00040004 DCD 0x00040004 195f71323e297a928af368937089d3ed71239786f86Andreas Huber 196f71323e297a928af368937089d3ed71239786f86Andreas Huber END 197