omxVCM4P10_PredictIntra_16x16_s.S revision 0c1bc742181ded4930842b46e9507372f0b1b963
10c1bc742181ded4930842b46e9507372f0b1b963James Dong/*
20c1bc742181ded4930842b46e9507372f0b1b963James Dong * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
30c1bc742181ded4930842b46e9507372f0b1b963James Dong *
40c1bc742181ded4930842b46e9507372f0b1b963James Dong */
50c1bc742181ded4930842b46e9507372f0b1b963James Dong
60c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 24, 1
70c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 25, 1
80c1bc742181ded4930842b46e9507372f0b1b963James Dong
90c1bc742181ded4930842b46e9507372f0b1b963James Dong    .arm
100c1bc742181ded4930842b46e9507372f0b1b963James Dong    .fpu neon
110c1bc742181ded4930842b46e9507372f0b1b963James Dong
120c1bc742181ded4930842b46e9507372f0b1b963James Dong    .section .rodata
130c1bc742181ded4930842b46e9507372f0b1b963James Dong    .align 4
140c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------------------
150c1bc742181ded4930842b46e9507372f0b1b963James Dong;// This table for implementing switch case of C in asm by
160c1bc742181ded4930842b46e9507372f0b1b963James Dong;// the mehtod of two levels of indexing.
170c1bc742181ded4930842b46e9507372f0b1b963James Dong;//-------------------------------------------------------
180c1bc742181ded4930842b46e9507372f0b1b963James Dong
190c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_pIndexTable16x16:
200c1bc742181ded4930842b46e9507372f0b1b963James Dong    .word  OMX_VC_16X16_VERT, OMX_VC_16X16_HOR
210c1bc742181ded4930842b46e9507372f0b1b963James Dong    .word  OMX_VC_16X16_DC,   OMX_VC_16X16_PLANE
220c1bc742181ded4930842b46e9507372f0b1b963James Dong
230c1bc742181ded4930842b46e9507372f0b1b963James Dong
240c1bc742181ded4930842b46e9507372f0b1b963James Dong
250c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_MultiplierTable16x16:
260c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword   7,  6,  5,  4,  3,  2,  1,  8
270c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword   0,  1,  2,  3,  4,  5,  6,  7
280c1bc742181ded4930842b46e9507372f0b1b963James Dong    .hword   8,  9, 10, 11, 12, 13, 14, 15
290c1bc742181ded4930842b46e9507372f0b1b963James Dong
300c1bc742181ded4930842b46e9507372f0b1b963James Dong    .text
310c1bc742181ded4930842b46e9507372f0b1b963James Dong
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global omxVCM4P10_PredictIntra_16x16
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    .func   omxVCM4P10_PredictIntra_16x16
340c1bc742181ded4930842b46e9507372f0b1b963James DongomxVCM4P10_PredictIntra_16x16:
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    PUSH     {r4-r12,lr}
360c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPUSH    {d8-d15}
370c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r9, =armVCM4P10_pIndexTable16x16
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r6,[sp,#0x70]
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r4,[sp,#0x68]
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r5,[sp,#0x6c]
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r7,[sp,#0x74]
420c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r12,#0x10
430c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      pc,[r9,r6,LSL #2]
440c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_16X16_VERT:
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r1]
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r3,r5
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r5,r5
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3],r10
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8],r10
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r3]
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r8]
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
670c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_16X16_HOR:
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r0,r4
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r4,r4,r4
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r11,r3,r5
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r5,r5,r5
720c1bc742181ded4930842b46e9507372f0b1b963James DongL0x8c:
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[],d3[]},[r0],r4
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[],d1[]},[r8],r4
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#8
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d2,d3},[r3],r5
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r11],r5
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[],d3[]},[r0],r4
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[],d1[]},[r8],r4
800c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d2,d3},[r3],r5
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r11],r5
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[],d3[]},[r0],r4
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[],d1[]},[r8],r4
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d2,d3},[r3],r5
850c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r11],r5
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[],d3[]},[r0],r4
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0[],d1[]},[r8],r4
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d2,d3},[r3],r5
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d0,d1},[r11],r5
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x8c
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
940c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_16X16_DC:
950c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r11,#0
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r7,#2
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x14c
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r0,r4
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r4,r4
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[0]},[r0],r10
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[1]},[r8],r10
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[2]},[r0],r10
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[3]},[r8],r10
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[4]},[r0],r10
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[5]},[r8],r10
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[6]},[r0],r10
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[7]},[r8],r10
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[0]},[r0],r10
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[1]},[r8],r10
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[2]},[r0],r10
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[3]},[r8],r10
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[4]},[r0],r10
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[5]},[r8],r10
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[6]},[r0],r10
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[7]},[r8]
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U8 q0,q1
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r11,r11,#1
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADD.I16 d0,d0,d1
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U16 d0,d0
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U32 d6,d0
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong    VRSHR.U64 d8,d6,#4
1220c1bc742181ded4930842b46e9507372f0b1b963James DongL0x14c:
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong    TST      r7,#1
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong    BEQ      L0x170
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r1]
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r11,r11,#1
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U8 q0,q0
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADD.I16 d0,d0,d1
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U16 d0,d0
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.U32 d7,d0
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong    VRSHR.U64 d8,d7,#4
1320c1bc742181ded4930842b46e9507372f0b1b963James DongL0x170:
1330c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r11,#2
1340c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x180
1350c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I64 d8,d7,d6
1360c1bc742181ded4930842b46e9507372f0b1b963James Dong    VRSHR.U64 d8,d8,#5
1370c1bc742181ded4930842b46e9507372f0b1b963James DongL0x180:
1380c1bc742181ded4930842b46e9507372f0b1b963James Dong    VDUP.8   q3,d8[0]
1390c1bc742181ded4930842b46e9507372f0b1b963James Dong    CMP      r11,#0
1400c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r3,r5
1410c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r5,r5
1420c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x198
1430c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  q3,#0x80
1440c1bc742181ded4930842b46e9507372f0b1b963James DongL0x198:
1450c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1460c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1480c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1490c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1510c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1530c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
1550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r10
1560c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r8],r10
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    MOV      r0,#0
1620c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
1630c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
1640c1bc742181ded4930842b46e9507372f0b1b963James DongOMX_VC_16X16_PLANE:
1650c1bc742181ded4930842b46e9507372f0b1b963James Dong    LDR      r9, =armVCM4P10_MultiplierTable16x16
1660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r1]
1670c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d4[0]},[r2]
1680c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r8,r0,r4
1690c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r10,r4,r4
1700c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[0]},[r0],r10
1710c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[1]},[r8],r10
1720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[2]},[r0],r10
1730c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[3]},[r8],r10
1740c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[4]},[r0],r10
1750c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[5]},[r8],r10
1760c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[6]},[r0],r10
1770c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2[7]},[r8],r10
1780c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[0]},[r0],r10
1790c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[1]},[r8],r10
1800c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[2]},[r0],r10
1810c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[3]},[r8],r10
1820c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[4]},[r0],r10
1830c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[5]},[r8],r10
1840c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[6]},[r0],r10
1850c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d3[7]},[r8]
1860c1bc742181ded4930842b46e9507372f0b1b963James Dong    VREV64.8 d5,d1
1870c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUBL.U8 q3,d5,d4
1880c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHR.U64 d5,d5,#8
1890c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUBL.U8 q4,d5,d0
1900c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHL.I64 d9,d9,#16
1910c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d9,d9,d6,#2
1920c1bc742181ded4930842b46e9507372f0b1b963James Dong    VREV64.8 d12,d3
1930c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUBL.U8 q7,d12,d4
1940c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHR.U64 d12,d12,#8
1950c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUBL.U8 q8,d12,d2
1960c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.16  {d20,d21},[r9]!
1970c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHL.I64 d17,d17,#16
1980c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d17,d17,d14,#2
1990c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMULL.S16 q11,d8,d20
2000c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMULL.S16 q12,d16,d20
2010c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.S16 q11,d9,d21
2020c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.S16 q12,d17,d21
2030c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADD.I32 d22,d23,d22
2040c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADD.I32 d23,d25,d24
2050c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPADDL.S32 q11,q11
2060c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHL.I64 q12,q11,#2
2070c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I64 q11,q11,q12
2080c1bc742181ded4930842b46e9507372f0b1b963James Dong    VRSHR.S64 q11,q11,#6
2090c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHL.I64 q12,q11,#3
2100c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I64 q12,q12,q11
2110c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.16  {d20,d21},[r9]!
2120c1bc742181ded4930842b46e9507372f0b1b963James Dong    VDUP.16  q6,d22[0]
2130c1bc742181ded4930842b46e9507372f0b1b963James Dong    VDUP.16  q7,d23[0]
2140c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q11,d1,d3
2150c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSHL.I16 q11,q11,#4
2160c1bc742181ded4930842b46e9507372f0b1b963James Dong    VDUP.16  q11,d23[3]
2170c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I64 d1,d24,d25
2180c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.16  {d24,d25},[r9]
2190c1bc742181ded4930842b46e9507372f0b1b963James Dong    VDUP.16  q13,d1[0]
2200c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 q13,q11,q13
2210c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 q5,q6,q10
2220c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 q6,q6,q12
2230c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 q0,q5,q13
2240c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 q1,q6,q13
2250c1bc742181ded4930842b46e9507372f0b1b963James DongL0x2d4:
2260c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S16 d6,q0,#5
2270c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S16 d7,q1,#5
2280c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS     r12,r12,#1
2290c1bc742181ded4930842b46e9507372f0b1b963James Dong    VST1.8   {d6,d7},[r3],r5
2300c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 q0,q0,q7
2310c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 q1,q1,q7
2320c1bc742181ded4930842b46e9507372f0b1b963James Dong    BNE      L0x2d4
2330c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV      r0,#0
2340c1bc742181ded4930842b46e9507372f0b1b963James Dong    VPOP     {d8-d15}
2350c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
2360c1bc742181ded4930842b46e9507372f0b1b963James Dong    .endfunc
2370c1bc742181ded4930842b46e9507372f0b1b963James Dong
2380c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
2390c1bc742181ded4930842b46e9507372f0b1b963James Dong
240