1411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org/* 2411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org * Copyright (c) 2014 The WebM project authors. All Rights Reserved. 3411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org * 4411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org * Use of this source code is governed by a BSD-style license 5411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org * that can be found in the LICENSE file in the root of the source 6411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org * tree. An additional intellectual property rights grant can be found 7411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org * in the file PATENTS. All contributing project authors may 8411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org * be found in the AUTHORS file in the root of the source tree. 9411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org */ 10411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org 11411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org#include <arm_neon.h> 12411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org 13411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.orgvoid vp8_copy_mem8x4_neon( 14411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org unsigned char *src, 15411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org int src_stride, 16411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org unsigned char *dst, 17411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org int dst_stride) { 18411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org uint8x8_t vtmp; 19411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org int r; 20411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org 21411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org for (r = 0; r < 4; r++) { 22411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org vtmp = vld1_u8(src); 23411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org vst1_u8(dst, vtmp); 24411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org src += src_stride; 25411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org dst += dst_stride; 26411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org } 27411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org} 28411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org 29411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.orgvoid vp8_copy_mem8x8_neon( 30411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org unsigned char *src, 31411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org int src_stride, 32411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org unsigned char *dst, 33411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org int dst_stride) { 34411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org uint8x8_t vtmp; 35411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org int r; 36411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org 37411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org for (r = 0; r < 8; r++) { 38411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org vtmp = vld1_u8(src); 39411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org vst1_u8(dst, vtmp); 40411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org src += src_stride; 41411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org dst += dst_stride; 42411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org } 43411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org} 44411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org 45411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.orgvoid vp8_copy_mem16x16_neon( 46411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org unsigned char *src, 47411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org int src_stride, 48411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org unsigned char *dst, 49411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org int dst_stride) { 50411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org int r; 51411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org uint8x16_t qtmp; 52411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org 53411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org for (r = 0; r < 16; r++) { 54411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org qtmp = vld1q_u8(src); 55411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org vst1q_u8(dst, qtmp); 56411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org src += src_stride; 57411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org dst += dst_stride; 58411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org } 59411971f94253c85e1866c281860d6344f6aa0c78fgalligan@chromium.org} 60