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_HalfDiagVerHor4x4_unsafe
290c1bc742181ded4930842b46e9507372f0b1b963James DongarmVCM4P10_InterpolateLuma_HalfDiagVerHor4x4_unsafe:
300c1bc742181ded4930842b46e9507372f0b1b963James Dong    PUSH     {r4-r12,lr}
310c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d0,d1},[r0],r1
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD      r12,r0,r1,LSL #2
330c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d30,#0x5
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I8  d31,#0x14
350c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d10,d11},[r12],r1
360c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d2,d3},[r0],r1
370c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d12,d13},[r12],r1
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q9,d0,d10
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d4,d5},[r0],r1
400c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q0,d1,d11
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d6,d7},[r0],r1
420c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q10,d2,d12
430c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d8,d9},[r0],r1
440c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q9,d4,d31
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d14,d15},[r12],r1
460c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q0,d5,d31
470c1bc742181ded4930842b46e9507372f0b1b963James Dong    VLD1.8   {d16,d17},[r12],r1
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q9,d6,d31
490c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q10,d6,d31
500c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q0,d3,d30
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q11,d4,d14
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q9,d2,d30
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q1,d3,d13
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q0,d7,d31
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q10,d8,d31
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q9,d8,d30
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q1,d7,d31
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q0,d9,d30
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q11,d8,d31
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q10,d4,d30
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q1,d5,d30
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q2,d5,d15
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q11,d10,d31
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q10,d10,d30
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q1,d9,d31
660c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q2,d9,d31
670c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q12,d6,d16
680c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q11,d6,d30
690c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q1,d11,d30
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q2,d7,d30
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.U8 q3,d7,d17
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q12,d10,d31
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q11,d12,d30
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q2,d13,d30
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q3,d11,d31
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q12,d12,d31
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d26,d18,d19,#2
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q2,d11,d31
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.U8 q3,d13,d31
800c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q12,d8,d30
810c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d27,d18,d19,#4
820c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I16 d31,#0x14
830c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q3,d9,d30
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q12,d14,d30
850c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d29,d19,d0,#2
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d28,d18,d19,#6
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.U8 q3,d15,d30
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q0,d18,d29
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 d27,d27,d28
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMOV.I16 d30,#0x5
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 d26,d26,d19
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.S16 q0,d27,d31
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d27,d20,d21,#4
940c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d28,d20,d21,#6
950c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d29,d21,d2,#2
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.S16 q0,d26,d30
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d26,d20,d21,#2
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q1,d20,d29
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 d27,d27,d28
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 d26,d26,d21
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d28,d22,d23,#6
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.S16 q1,d27,d31
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d29,d23,d4,#2
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d27,d22,d23,#4
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d8,d22,d23,#2
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q2,d22,d29
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.S16 q1,d26,d30
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 d27,d27,d28
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 d26,d8,d23
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d28,d24,d25,#6
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.S16 q2,d27,d31
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d27,d24,d25,#4
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d29,d25,d6,#2
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 d27,d27,d28
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong    VEXT.8   d8,d24,d25,#2
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADDL.S16 q3,d24,d29
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.S16 q2,d26,d30
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLAL.S16 q3,d27,d31
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong    VADD.I16 d8,d8,d25
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong    VMLSL.S16 q3,d8,d30
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S32 d0,q0,#10
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S32 d2,q1,#10
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S32 d4,q2,#10
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQRSHRUN.S32 d6,q3,#10
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQMOVN.U16 d0,q0
1260c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQMOVN.U16 d2,q1
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQMOVN.U16 d4,q2
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong    VQMOVN.U16 d6,q3
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong    POP      {r4-r12,pc}
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong
1310c1bc742181ded4930842b46e9507372f0b1b963James Dong    .end
1320c1bc742181ded4930842b46e9507372f0b1b963James Dong
133