1233d2500723e5594f3e7c70896ffeeef32b9c950ywan; 2233d2500723e5594f3e7c70896ffeeef32b9c950ywan; Copyright (c) 2013 The WebM project authors. All Rights Reserved. 3233d2500723e5594f3e7c70896ffeeef32b9c950ywan; 4233d2500723e5594f3e7c70896ffeeef32b9c950ywan; Use of this source code is governed by a BSD-style license 5233d2500723e5594f3e7c70896ffeeef32b9c950ywan; that can be found in the LICENSE file in the root of the source 6233d2500723e5594f3e7c70896ffeeef32b9c950ywan; tree. An additional intellectual property rights grant can be found 7233d2500723e5594f3e7c70896ffeeef32b9c950ywan; in the file PATENTS. All contributing project authors may 8233d2500723e5594f3e7c70896ffeeef32b9c950ywan; be found in the AUTHORS file in the root of the source tree. 9233d2500723e5594f3e7c70896ffeeef32b9c950ywan; 10233d2500723e5594f3e7c70896ffeeef32b9c950ywan 11233d2500723e5594f3e7c70896ffeeef32b9c950ywan EXPORT |vp9_convolve_copy_neon| 12233d2500723e5594f3e7c70896ffeeef32b9c950ywan ARM 13233d2500723e5594f3e7c70896ffeeef32b9c950ywan REQUIRE8 14233d2500723e5594f3e7c70896ffeeef32b9c950ywan PRESERVE8 15233d2500723e5594f3e7c70896ffeeef32b9c950ywan 16233d2500723e5594f3e7c70896ffeeef32b9c950ywan AREA ||.text||, CODE, READONLY, ALIGN=2 17233d2500723e5594f3e7c70896ffeeef32b9c950ywan 18233d2500723e5594f3e7c70896ffeeef32b9c950ywan|vp9_convolve_copy_neon| PROC 19233d2500723e5594f3e7c70896ffeeef32b9c950ywan push {r4-r5, lr} 20233d2500723e5594f3e7c70896ffeeef32b9c950ywan ldrd r4, r5, [sp, #28] 21233d2500723e5594f3e7c70896ffeeef32b9c950ywan 22233d2500723e5594f3e7c70896ffeeef32b9c950ywan cmp r4, #32 23233d2500723e5594f3e7c70896ffeeef32b9c950ywan bgt copy64 24233d2500723e5594f3e7c70896ffeeef32b9c950ywan beq copy32 25233d2500723e5594f3e7c70896ffeeef32b9c950ywan cmp r4, #8 26233d2500723e5594f3e7c70896ffeeef32b9c950ywan bgt copy16 27233d2500723e5594f3e7c70896ffeeef32b9c950ywan beq copy8 28233d2500723e5594f3e7c70896ffeeef32b9c950ywan b copy4 29233d2500723e5594f3e7c70896ffeeef32b9c950ywan 30233d2500723e5594f3e7c70896ffeeef32b9c950ywancopy64 31233d2500723e5594f3e7c70896ffeeef32b9c950ywan sub lr, r1, #32 32233d2500723e5594f3e7c70896ffeeef32b9c950ywan sub r3, r3, #32 33233d2500723e5594f3e7c70896ffeeef32b9c950ywancopy64_h 34233d2500723e5594f3e7c70896ffeeef32b9c950ywan pld [r0, r1, lsl #1] 35233d2500723e5594f3e7c70896ffeeef32b9c950ywan vld1.8 {q0-q1}, [r0]! 36233d2500723e5594f3e7c70896ffeeef32b9c950ywan vld1.8 {q2-q3}, [r0], lr 37233d2500723e5594f3e7c70896ffeeef32b9c950ywan vst1.8 {q0-q1}, [r2@128]! 38233d2500723e5594f3e7c70896ffeeef32b9c950ywan vst1.8 {q2-q3}, [r2@128], r3 39233d2500723e5594f3e7c70896ffeeef32b9c950ywan subs r5, r5, #1 40233d2500723e5594f3e7c70896ffeeef32b9c950ywan bgt copy64_h 41233d2500723e5594f3e7c70896ffeeef32b9c950ywan pop {r4-r5, pc} 42233d2500723e5594f3e7c70896ffeeef32b9c950ywan 43233d2500723e5594f3e7c70896ffeeef32b9c950ywancopy32 44233d2500723e5594f3e7c70896ffeeef32b9c950ywan pld [r0, r1, lsl #1] 45233d2500723e5594f3e7c70896ffeeef32b9c950ywan vld1.8 {q0-q1}, [r0], r1 46233d2500723e5594f3e7c70896ffeeef32b9c950ywan pld [r0, r1, lsl #1] 47233d2500723e5594f3e7c70896ffeeef32b9c950ywan vld1.8 {q2-q3}, [r0], r1 48233d2500723e5594f3e7c70896ffeeef32b9c950ywan vst1.8 {q0-q1}, [r2@128], r3 49233d2500723e5594f3e7c70896ffeeef32b9c950ywan vst1.8 {q2-q3}, [r2@128], r3 50233d2500723e5594f3e7c70896ffeeef32b9c950ywan subs r5, r5, #2 51233d2500723e5594f3e7c70896ffeeef32b9c950ywan bgt copy32 52233d2500723e5594f3e7c70896ffeeef32b9c950ywan pop {r4-r5, pc} 53233d2500723e5594f3e7c70896ffeeef32b9c950ywan 54233d2500723e5594f3e7c70896ffeeef32b9c950ywancopy16 55233d2500723e5594f3e7c70896ffeeef32b9c950ywan pld [r0, r1, lsl #1] 56233d2500723e5594f3e7c70896ffeeef32b9c950ywan vld1.8 {q0}, [r0], r1 57233d2500723e5594f3e7c70896ffeeef32b9c950ywan pld [r0, r1, lsl #1] 58233d2500723e5594f3e7c70896ffeeef32b9c950ywan vld1.8 {q1}, [r0], r1 59233d2500723e5594f3e7c70896ffeeef32b9c950ywan vst1.8 {q0}, [r2@128], r3 60233d2500723e5594f3e7c70896ffeeef32b9c950ywan vst1.8 {q1}, [r2@128], r3 61233d2500723e5594f3e7c70896ffeeef32b9c950ywan subs r5, r5, #2 62233d2500723e5594f3e7c70896ffeeef32b9c950ywan bgt copy16 63233d2500723e5594f3e7c70896ffeeef32b9c950ywan pop {r4-r5, pc} 64233d2500723e5594f3e7c70896ffeeef32b9c950ywan 65233d2500723e5594f3e7c70896ffeeef32b9c950ywancopy8 66233d2500723e5594f3e7c70896ffeeef32b9c950ywan pld [r0, r1, lsl #1] 67233d2500723e5594f3e7c70896ffeeef32b9c950ywan vld1.8 {d0}, [r0], r1 68233d2500723e5594f3e7c70896ffeeef32b9c950ywan pld [r0, r1, lsl #1] 69233d2500723e5594f3e7c70896ffeeef32b9c950ywan vld1.8 {d2}, [r0], r1 70233d2500723e5594f3e7c70896ffeeef32b9c950ywan vst1.8 {d0}, [r2@64], r3 71233d2500723e5594f3e7c70896ffeeef32b9c950ywan vst1.8 {d2}, [r2@64], r3 72233d2500723e5594f3e7c70896ffeeef32b9c950ywan subs r5, r5, #2 73233d2500723e5594f3e7c70896ffeeef32b9c950ywan bgt copy8 74233d2500723e5594f3e7c70896ffeeef32b9c950ywan pop {r4-r5, pc} 75233d2500723e5594f3e7c70896ffeeef32b9c950ywan 76233d2500723e5594f3e7c70896ffeeef32b9c950ywancopy4 77233d2500723e5594f3e7c70896ffeeef32b9c950ywan ldr r12, [r0], r1 78233d2500723e5594f3e7c70896ffeeef32b9c950ywan str r12, [r2], r3 79233d2500723e5594f3e7c70896ffeeef32b9c950ywan subs r5, r5, #1 80233d2500723e5594f3e7c70896ffeeef32b9c950ywan bgt copy4 81233d2500723e5594f3e7c70896ffeeef32b9c950ywan pop {r4-r5, pc} 82233d2500723e5594f3e7c70896ffeeef32b9c950ywan ENDP 83233d2500723e5594f3e7c70896ffeeef32b9c950ywan 84233d2500723e5594f3e7c70896ffeeef32b9c950ywan END 85