1 /*
2  *  Copyright (c) 2014 The WebM project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include <arm_neon.h>
12 
vp8_copy_mem8x4_neon(unsigned char * src,int src_stride,unsigned char * dst,int dst_stride)13 void vp8_copy_mem8x4_neon(
14         unsigned char *src,
15         int src_stride,
16         unsigned char *dst,
17         int dst_stride) {
18     uint8x8_t vtmp;
19     int r;
20 
21     for (r = 0; r < 4; r++) {
22         vtmp = vld1_u8(src);
23         vst1_u8(dst, vtmp);
24         src += src_stride;
25         dst += dst_stride;
26     }
27 }
28 
vp8_copy_mem8x8_neon(unsigned char * src,int src_stride,unsigned char * dst,int dst_stride)29 void vp8_copy_mem8x8_neon(
30         unsigned char *src,
31         int src_stride,
32         unsigned char *dst,
33         int dst_stride) {
34     uint8x8_t vtmp;
35     int r;
36 
37     for (r = 0; r < 8; r++) {
38         vtmp = vld1_u8(src);
39         vst1_u8(dst, vtmp);
40         src += src_stride;
41         dst += dst_stride;
42     }
43 }
44 
vp8_copy_mem16x16_neon(unsigned char * src,int src_stride,unsigned char * dst,int dst_stride)45 void vp8_copy_mem16x16_neon(
46         unsigned char *src,
47         int src_stride,
48         unsigned char *dst,
49         int dst_stride) {
50     int r;
51     uint8x16_t qtmp;
52 
53     for (r = 0; r < 16; r++) {
54         qtmp = vld1q_u8(src);
55         vst1q_u8(dst, qtmp);
56         src += src_stride;
57         dst += dst_stride;
58     }
59 }
60