1 /* 2 * Copyright (C) 2007-2008 ARM Limited 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * 16 */ 17 /* 18 * 19 */ 20 21 .eabi_attribute 24, 1 22 .eabi_attribute 25, 1 23 24 .arm 25 .fpu neon 26 .text 27 .syntax unified 28 29 .global omxVCM4P10_TransformDequantChromaDCFromPair 30 omxVCM4P10_TransformDequantChromaDCFromPair: 31 push {r4-r10, lr} 32 ldr r9, [r0,#0] 33 vmov.i16 d0, #0 34 mov r8, #0x1f 35 vst1.16 {d0}, [r1] 36 ldrb r6, [r9], #1 37 unpackLoop: 38 tst r6, #0x10 39 ldrsbne r5, [r9, #1] 40 ldrbne r4, [r9], #2 41 and r7, r8, r6, lsl #1 42 ldrsbeq r4, [r9], #1 43 orrne r4, r4, r5, lsl #8 44 tst r6, #0x20 45 ldrbeq r6, [r9], #1 46 strh r4, [r1, r7] 47 beq unpackLoop 48 ldmia r1, {r3, r4} 49 str r9, [r0, #0] 50 ldr r5, .LarmVCM4P10_QPDivTable 51 P0: add r5, pc 52 ldr r6, .LarmVCM4P10_VMatrixQPModTable 53 P1: add r6, pc 54 saddsubx r3, r3, r3 55 saddsubx r4, r4, r4 56 ldrsb r9, [r5, r2] 57 ldrsb r2, [r6, r2] 58 sadd16 r5, r3, r4 59 ssub16 r6, r3, r4 60 lsl r2, r2, r9 61 vmov d0, r5, r6 62 vrev32.16 d0, d0 63 vdup.16 d1, r2 64 vmull.s16 q1, d0, d1 65 vshrn.i32 d2, q1, #1 66 vst1.16 {d2}, [r1] 67 mov r0, #0 68 pop {r4-r10, pc} 69 70 .LarmVCM4P10_QPDivTable: 71 .word armVCM4P10_QPDivTable-(P0+8) 72 .LarmVCM4P10_VMatrixQPModTable: 73 .word armVCM4P10_VMatrixQPModTable-(P1+8) 74 75 .end 76