10c1bc742181ded4930842b46e9507372f0b1b963James Dong/*
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 *
1678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar */
1778e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar/*
180c1bc742181ded4930842b46e9507372f0b1b963James Dong *
190c1bc742181ded4930842b46e9507372f0b1b963James Dong */
200c1bc742181ded4930842b46e9507372f0b1b963James Dong
210c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 24, 1
220c1bc742181ded4930842b46e9507372f0b1b963James Dong    .eabi_attribute 25, 1
230c1bc742181ded4930842b46e9507372f0b1b963James Dong
240c1bc742181ded4930842b46e9507372f0b1b963James Dong    .arm
250c1bc742181ded4930842b46e9507372f0b1b963James Dong    .fpu neon
260c1bc742181ded4930842b46e9507372f0b1b963James Dong    .text
270c1bc742181ded4930842b46e9507372f0b1b963James Dong
280c1bc742181ded4930842b46e9507372f0b1b963James Dong    .global armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe
290c1bc742181ded4930842b46e9507372f0b1b963James Dong    .func   armVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe
300c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_InterpolateLuma_HalfDiagHorVer4x4_unsafe:
310c1bc742181ded4930842b46e9507372f0b1b963James Dong    PUSH     {r4-r12,lr}
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r0],r1
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I16 d31,#0x14
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I16 d30,#0x5
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d4,d0,d1,#1
360c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d2,d0,d1,#2
370c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d3,d0,d1,#3
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d5,d0,d1,#4
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d1,d0,d1,#5
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q1,d2,d3
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q2,d4,d5
420c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q5,d0,d1
430c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r0],r1
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I16 d10,d2,d31
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 d8,d4,d30
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d4,d0,d1,#1
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d2,d0,d1,#2
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d3,d0,d1,#3
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d5,d0,d1,#4
500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d1,d0,d1,#5
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q1,d2,d3
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q2,d4,d5
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q6,d0,d1
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r0],r1
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 d10,d10,d8
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I16 d12,d2,d31
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 d8,d4,d30
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d4,d0,d1,#1
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d2,d0,d1,#2
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d3,d0,d1,#3
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d5,d0,d1,#4
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d1,d0,d1,#5
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q1,d2,d3
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q2,d4,d5
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q7,d0,d1
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r0],r1
670c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 d12,d12,d8
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I16 d14,d2,d31
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 d8,d4,d30
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d4,d0,d1,#1
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d2,d0,d1,#2
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d3,d0,d1,#3
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d5,d0,d1,#4
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d1,d0,d1,#5
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q1,d2,d3
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q2,d4,d5
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q8,d0,d1
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r0],r1
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 d14,d14,d8
800c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I16 d16,d2,d31
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 d8,d4,d30
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d4,d0,d1,#1
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d2,d0,d1,#2
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d3,d0,d1,#3
850c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d5,d0,d1,#4
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d1,d0,d1,#5
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q1,d2,d3
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q2,d4,d5
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q9,d0,d1
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r0],r1
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 d16,d16,d8
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I16 d18,d2,d31
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 d8,d4,d30
940c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d4,d0,d1,#1
950c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d2,d0,d1,#2
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d3,d0,d1,#3
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d5,d0,d1,#4
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d1,d0,d1,#5
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q1,d2,d3
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q2,d4,d5
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q10,d0,d1
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r0],r1
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 d18,d18,d8
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I16 d20,d2,d31
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 d8,d4,d30
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d4,d0,d1,#1
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d2,d0,d1,#2
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d3,d0,d1,#3
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d5,d0,d1,#4
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d1,d0,d1,#5
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q1,d2,d3
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q2,d4,d5
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q11,d0,d1
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r0],r1
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 d20,d20,d8
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I16 d22,d2,d31
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 d8,d4,d30
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d4,d0,d1,#1
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d2,d0,d1,#2
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d3,d0,d1,#3
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d5,d0,d1,#4
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d1,d0,d1,#5
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q1,d2,d3
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q2,d4,d5
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q12,d0,d1
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r0],r1
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 d22,d22,d8
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I16 d24,d2,d31
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 d8,d4,d30
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d4,d0,d1,#1
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d2,d0,d1,#2
1320c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d3,d0,d1,#3
1330c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d5,d0,d1,#4
1340c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d1,d0,d1,#5
1350c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q1,d2,d3
1360c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q2,d4,d5
1370c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q13,d0,d1
1380c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 d24,d24,d8
1390c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I16 d26,d2,d31
1400c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I16 d8,d4,d30
1410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I32 q15,#0x14
1420c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I32 q14,#0x5
1430c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q5,d10,d20
1440c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q1,d14,d16
1450c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q0,d12,d18
1460c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I16 d26,d26,d8
1470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I32 q5,q1,q15
1480c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I32 q4,q0,q14
1490c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q6,d12,d22
1500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q1,d16,d18
1510c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q0,d14,d20
1520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I32 q6,q1,q15
1530c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I32 q5,q5,q4
1540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I32 q4,q0,q14
1550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q2,d14,d24
1560c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q1,d18,d20
1570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q0,d16,d22
1580c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I32 q2,q1,q15
1590c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I32 q6,q6,q4
1600c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMUL.I32 q4,q0,q14
1610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q3,d16,d26
1620c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q1,d20,d22
1630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q0,d18,d24
1640c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLA.I32 q3,q1,q15
1650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VSUB.I32 q2,q2,q4
1660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLS.I32 q3,q0,q14
1670c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S32 d0,q5,#10
1680c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S32 d2,q6,#10
1690c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S32 d4,q2,#10
1700c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S32 d6,q3,#10
1710c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQMOVN.U16 d0,q0
1720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQMOVN.U16 d2,q1
1730c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQMOVN.U16 d4,q2
1740c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQMOVN.U16 d6,q3
1750c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
1760c1bc742181ded4930842b46e9507372f0b1b963James Dong    .endfunc
1770c1bc742181ded4930842b46e9507372f0b1b963James Dong
1780c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
1790c1bc742181ded4930842b46e9507372f0b1b963James Dong
180