178e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Copyright (C) 2007-2008 ARM Limited
378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Licensed under the Apache License, Version 2.0 (the "License");
578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// you may not use this file except in compliance with the License.
678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// You may obtain a copy of the License at
778e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
878e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//      http://www.apache.org/licenses/LICENSE-2.0
978e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
1078e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Unless required by applicable law or agreed to in writing, software
1178e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// distributed under the License is distributed on an "AS IS" BASIS,
1278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// See the License for the specific language governing permissions and
1478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// limitations under the License.
1578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
160c1bc742181ded4930842b46e9507372f0b1b963James Dong/*
170c1bc742181ded4930842b46e9507372f0b1b963James Dong *
180c1bc742181ded4930842b46e9507372f0b1b963James Dong */
190c1bc742181ded4930842b46e9507372f0b1b963James Dong
200c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 24, 1
210c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 25, 1
220c1bc742181ded4930842b46e9507372f0b1b963James Dong
230c1bc742181ded4930842b46e9507372f0b1b963James Dong    .arm
240c1bc742181ded4930842b46e9507372f0b1b963James Dong    .fpu neon
250c1bc742181ded4930842b46e9507372f0b1b963James Dong
2622e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .text
270c1bc742181ded4930842b46e9507372f0b1b963James Dong    .align 4
280c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------------------
290c1bc742181ded4930842b46e9507372f0b1b963James Dong;// This table for implementing switch case of C in asm by
300c1bc742181ded4930842b46e9507372f0b1b963James Dong;// the mehtod of two levels of indexing.
310c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------------------
320c1bc742181ded4930842b46e9507372f0b1b963James Dong
330c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_pIndexTable16x16:
3422e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .word  OMX_VC_16X16_VERT-(P0+8), OMX_VC_16X16_HOR-(P0+8)
3522e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    .word  OMX_VC_16X16_DC-(P0+8),   OMX_VC_16X16_PLANE-(P0+8)
360c1bc742181ded4930842b46e9507372f0b1b963James Dong
370c1bc742181ded4930842b46e9507372f0b1b963James Dong
380c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_MultiplierTable16x16:
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword   7,  6,  5,  4,  3,  2,  1,  8
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword   0,  1,  2,  3,  4,  5,  6,  7
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword   8,  9, 10, 11, 12, 13, 14, 15
420c1bc742181ded4930842b46e9507372f0b1b963James Dong
430c1bc742181ded4930842b46e9507372f0b1b963James Dong
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global omxVCM4P10_PredictIntra_16x16
450c1bc742181ded4930842b46e9507372f0b1b963James DongomxVCM4P10_PredictIntra_16x16:
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    PUSH     {r4-r12,lr}
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPUSH    {d8-d15}
4822e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    ADR      r9, armVCM4P10_pIndexTable16x16
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r6,[sp,#0x70]
500c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r4,[sp,#0x68]
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r5,[sp,#0x6c]
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r7,[sp,#0x74]
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r12,#0x10
5422e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    LDR      r9,[r9,r6,LSL #2]
5522e06318d04074d1a7c90caa173857abdcfd153eArd BiesheuvelP0: ADD      pc,r9
560c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_16X16_VERT:
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r1]
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r3,r5
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r5,r5
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
670c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3]
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8]
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
790c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_16X16_HOR:
800c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r0,r4
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r4,r4,r4
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r11,r3,r5
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,r5
840c1bc742181ded4930842b46e9507372f0b1b963James DongL0x8c:
850c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[],d3[]},[r0],r4
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[],d1[]},[r8],r4
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#8
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d2,d3},[r3],r5
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r11],r5
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[],d3[]},[r0],r4
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[],d1[]},[r8],r4
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d2,d3},[r3],r5
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r11],r5
940c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[],d3[]},[r0],r4
950c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[],d1[]},[r8],r4
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d2,d3},[r3],r5
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r11],r5
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[],d3[]},[r0],r4
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[],d1[]},[r8],r4
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d2,d3},[r3],r5
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r11],r5
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x8c
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
1060c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_16X16_DC:
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r11,#0
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r7,#2
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x14c
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r0,r4
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r4,r4
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[0]},[r0],r10
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[1]},[r8],r10
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[2]},[r0],r10
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[3]},[r8],r10
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[4]},[r0],r10
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[5]},[r8],r10
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[6]},[r0],r10
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[7]},[r8],r10
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[0]},[r0],r10
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[1]},[r8],r10
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[2]},[r0],r10
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[3]},[r8],r10
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[4]},[r0],r10
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[5]},[r8],r10
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[6]},[r0],r10
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[7]},[r8]
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U8 q0,q1
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r11,r11,#1
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADD.I16 d0,d0,d1
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U16 d0,d0
1320c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U32 d6,d0
1330c1bc742181ded4930842b46e9507372f0b1b963James Dong    VRSHR.U64 d8,d6,#4
1340c1bc742181ded4930842b46e9507372f0b1b963James DongL0x14c:
1350c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r7,#1
1360c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x170
1370c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r1]
1380c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r11,r11,#1
1390c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U8 q0,q0
1400c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADD.I16 d0,d0,d1
1410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U16 d0,d0
1420c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U32 d7,d0
1430c1bc742181ded4930842b46e9507372f0b1b963James Dong    VRSHR.U64 d8,d7,#4
1440c1bc742181ded4930842b46e9507372f0b1b963James DongL0x170:
1450c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r11,#2
1460c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x180
1470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I64 d8,d7,d6
1480c1bc742181ded4930842b46e9507372f0b1b963James Dong    VRSHR.U64 d8,d8,#5
1490c1bc742181ded4930842b46e9507372f0b1b963James DongL0x180:
1500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VDUP.8   q3,d8[0]
1510c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r11,#0
1520c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r3,r5
1530c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r5,r5
1540c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x198
1550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  q3,#0x80
1560c1bc742181ded4930842b46e9507372f0b1b963James DongL0x198:
1570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1580c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1590c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1600c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1620c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1640c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1670c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1680c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1690c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1700c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1710c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1730c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
1740c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
1750c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
1760c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_16X16_PLANE:
17722e06318d04074d1a7c90caa173857abdcfd153eArd Biesheuvel    ADR      r9, armVCM4P10_MultiplierTable16x16
1780c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r1]
1790c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d4[0]},[r2]
1800c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r0,r4
1810c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r4,r4
1820c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[0]},[r0],r10
1830c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[1]},[r8],r10
1840c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[2]},[r0],r10
1850c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[3]},[r8],r10
1860c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[4]},[r0],r10
1870c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[5]},[r8],r10
1880c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[6]},[r0],r10
1890c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[7]},[r8],r10
1900c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[0]},[r0],r10
1910c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[1]},[r8],r10
1920c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[2]},[r0],r10
1930c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[3]},[r8],r10
1940c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[4]},[r0],r10
1950c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[5]},[r8],r10
1960c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[6]},[r0],r10
1970c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[7]},[r8]
1980c1bc742181ded4930842b46e9507372f0b1b963James Dong    VREV64.8 d5,d1
1990c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUBL.U8 q3,d5,d4
2000c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHR.U64 d5,d5,#8
2010c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUBL.U8 q4,d5,d0
2020c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHL.I64 d9,d9,#16
2030c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d9,d9,d6,#2
2040c1bc742181ded4930842b46e9507372f0b1b963James Dong    VREV64.8 d12,d3
2050c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUBL.U8 q7,d12,d4
2060c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHR.U64 d12,d12,#8
2070c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUBL.U8 q8,d12,d2
2080c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.16  {d20,d21},[r9]!
2090c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHL.I64 d17,d17,#16
2100c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d17,d17,d14,#2
2110c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMULL.S16 q11,d8,d20
2120c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMULL.S16 q12,d16,d20
2130c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.S16 q11,d9,d21
2140c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.S16 q12,d17,d21
2150c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADD.I32 d22,d23,d22
2160c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADD.I32 d23,d25,d24
2170c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.S32 q11,q11
2180c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHL.I64 q12,q11,#2
2190c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I64 q11,q11,q12
2200c1bc742181ded4930842b46e9507372f0b1b963James Dong    VRSHR.S64 q11,q11,#6
2210c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHL.I64 q12,q11,#3
2220c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I64 q12,q12,q11
2230c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.16  {d20,d21},[r9]!
2240c1bc742181ded4930842b46e9507372f0b1b963James Dong    VDUP.16  q6,d22[0]
2250c1bc742181ded4930842b46e9507372f0b1b963James Dong    VDUP.16  q7,d23[0]
2260c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q11,d1,d3
2270c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHL.I16 q11,q11,#4
2280c1bc742181ded4930842b46e9507372f0b1b963James Dong    VDUP.16  q11,d23[3]
2290c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I64 d1,d24,d25
2300c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.16  {d24,d25},[r9]
2310c1bc742181ded4930842b46e9507372f0b1b963James Dong    VDUP.16  q13,d1[0]
2320c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 q13,q11,q13
2330c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 q5,q6,q10
2340c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 q6,q6,q12
2350c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 q0,q5,q13
2360c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 q1,q6,q13
2370c1bc742181ded4930842b46e9507372f0b1b963James DongL0x2d4:
2380c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S16 d6,q0,#5
2390c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S16 d7,q1,#5
2400c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#1
2410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r5
2420c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 q0,q0,q7
2430c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 q1,q1,q7
2440c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x2d4
2450c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
2460c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
2470c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
2480c1bc742181ded4930842b46e9507372f0b1b963James Dong
2490c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
2500c1bc742181ded4930842b46e9507372f0b1b963James Dong
251