mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-15 17:02:53 +08:00
810 lines
37 KiB
PHP
810 lines
37 KiB
PHP
|
/*
|
||
|
* Copyright (C) 2010-2021 Arm Limited or its affiliates. All rights reserved.
|
||
|
*
|
||
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||
|
* not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
/* ----------------------------------------------------------------------
|
||
|
* Project: Arm-2D Library
|
||
|
* Title: __arm_2d_copy_helium.inc
|
||
|
* Description: c code template for copy like operations
|
||
|
*
|
||
|
* $Date: 21 Sep 2021
|
||
|
* $Revision: V.0.0.2
|
||
|
*
|
||
|
* -------------------------------------------------------------------- */
|
||
|
|
||
|
#ifndef __API_COLOUR
|
||
|
# error You have to define __API_COLOUR before using this c template
|
||
|
#endif
|
||
|
#ifndef __API_INT_TYPE
|
||
|
# error You have to define the __API_INT_TYPE before using this c template
|
||
|
#endif
|
||
|
#ifndef __API_INT_TYPE_BIT_NUM
|
||
|
# error You have to define the __API_INT_TYPE_BIT_NUM before using this c template
|
||
|
#endif
|
||
|
|
||
|
#undef ____ARM_2D_FUNC
|
||
|
#undef ___ARM_2D_FUNC
|
||
|
#undef __ARM_2D_FUNC
|
||
|
#define ____ARM_2D_FUNC(__NAME, __COLOUR) __arm_2d_impl_##__COLOUR##_##__NAME
|
||
|
#define ___ARM_2D_FUNC(__NAME, __COLOUR) ____ARM_2D_FUNC(__NAME, __COLOUR)
|
||
|
#define __ARM_2D_FUNC(__NAME) ___ARM_2D_FUNC(__NAME, __API_COLOUR)
|
||
|
|
||
|
|
||
|
#undef ____ARM_2D_TYPE
|
||
|
#undef ___ARM_2D_TYPE
|
||
|
#undef __ARM_2D_TYPE
|
||
|
#define ____ARM_2D_TYPE(__NAME, __COLOUR) arm_2d_##__COLOUR##_##__NAME
|
||
|
#define ___ARM_2D_TYPE(__NAME, __COLOUR) ____ARM_2D_TYPE(__NAME, __COLOUR)
|
||
|
#define __ARM_2D_TYPE(__NAME) ___ARM_2D_TYPE(__NAME, __API_COLOUR)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*
|
||
|
* Paving *
|
||
|
*----------------------------------------------------------------------------*/
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(2x2_paving)(const __API_INT_TYPE *__RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairRows,
|
||
|
uint16_t tilePairCols)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_DIRECT_START_OFFS(_, _),
|
||
|
PAVING_DIRECT_READ_DIR,
|
||
|
PAVING_DIRECT_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_DIRECT_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(2x2_paving_x_mirror)(const __API_INT_TYPE *__RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairRows,
|
||
|
uint16_t tilePairCols)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_X_MIRROR_START_OFFS(_, _),
|
||
|
PAVING_X_MIRROR_READ_DIR,
|
||
|
PAVING_X_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_X_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(2x2_paving_y_mirror)(const __API_INT_TYPE *__RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairRows,
|
||
|
uint16_t tilePairCols)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_Y_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_Y_MIRROR_READ_DIR,
|
||
|
PAVING_Y_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_Y_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(2x2_paving_xy_mirror)(const __API_INT_TYPE *__RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairRows,
|
||
|
uint16_t tilePairCols)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_XY_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_XY_MIRROR_READ_DIR,
|
||
|
PAVING_XY_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_XY_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
|
||
|
void __ARM_2D_FUNC(1x2_paving)( const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint32_t destWidth,
|
||
|
uint16_t tilePairRows)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_DIRECT_START_OFFS(_, _),
|
||
|
PAVING_DIRECT_READ_DIR,
|
||
|
PAVING_DIRECT_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_DIRECT_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(1x2_paving_x_mirror)(const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint32_t destWidth,
|
||
|
uint16_t tilePairRows)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_X_MIRROR_START_OFFS(_, _),
|
||
|
PAVING_X_MIRROR_READ_DIR,
|
||
|
PAVING_X_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_X_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(1x2_paving_y_mirror)(const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint32_t destWidth,
|
||
|
uint16_t tilePairRows)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_Y_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_Y_MIRROR_READ_DIR,
|
||
|
PAVING_Y_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_Y_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(1x2_paving_xy_mirror)(const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint32_t destWidth,
|
||
|
uint16_t tilePairRows)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_XY_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_XY_MIRROR_READ_DIR,
|
||
|
PAVING_XY_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_XY_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
|
||
|
void __ARM_2D_FUNC(2x1_paving)( const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairCols,
|
||
|
uint16_t destHeight)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_DIRECT_START_OFFS(_, _),
|
||
|
PAVING_DIRECT_READ_DIR,
|
||
|
PAVING_DIRECT_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_DIRECT_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(2x1_paving_x_mirror)(const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairCols,
|
||
|
uint16_t destHeight)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_X_MIRROR_START_OFFS(_, _),
|
||
|
PAVING_X_MIRROR_READ_DIR,
|
||
|
PAVING_X_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_X_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(2x1_paving_y_mirror)(const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairCols,
|
||
|
uint16_t destHeight)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_Y_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_Y_MIRROR_READ_DIR,
|
||
|
PAVING_Y_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_Y_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(2x1_paving_xy_mirror)(const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairCols,
|
||
|
uint16_t destHeight)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_XY_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_XY_MIRROR_READ_DIR,
|
||
|
PAVING_XY_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_XY_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
|
||
|
void __ARM_2D_FUNC(1x1_paving)(const __API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSrcCopySize,
|
||
|
const arm_2d_size_t * __RESTRICT ptDstCopySize)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_DIRECT_START_OFFS(_, _),
|
||
|
PAVING_DIRECT_READ_DIR,
|
||
|
PAVING_DIRECT_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_DIRECT_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(1x1_paving_x_mirror)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSrcCopySize,
|
||
|
const arm_2d_size_t * __RESTRICT ptDstCopySize)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_X_MIRROR_START_OFFS(_, _),
|
||
|
PAVING_X_MIRROR_READ_DIR, PAVING_X_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_X_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(1x1_paving_y_mirror)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSrcCopySize,
|
||
|
const arm_2d_size_t * __RESTRICT ptDstCopySize)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_Y_MIRROR_START_OFFS(iSourceStride, ptSrcCopySize->iHeight),
|
||
|
PAVING_Y_MIRROR_READ_DIR,
|
||
|
PAVING_Y_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_Y_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(1x1_paving_xy_mirror)(const __API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSrcCopySize,
|
||
|
const arm_2d_size_t * __RESTRICT ptDstCopySize)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_XY_MIRROR_START_OFFS(iSourceStride, ptSrcCopySize->iHeight),
|
||
|
PAVING_XY_MIRROR_READ_DIR,
|
||
|
PAVING_XY_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_XY_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM));
|
||
|
}
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*
|
||
|
* Paving with colour masking *
|
||
|
*----------------------------------------------------------------------------*/
|
||
|
__OVERRIDE_WEAK
|
||
|
|
||
|
void __ARM_2D_FUNC(cl_key_2x2_paving)(const __API_INT_TYPE *__RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairRows,
|
||
|
uint16_t tilePairCols,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_DIRECT_START_OFFS(_, _),
|
||
|
PAVING_DIRECT_READ_DIR,
|
||
|
PAVING_DIRECT_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_DIRECT_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_2x2_paving_x_mirror)(
|
||
|
const __API_INT_TYPE *__RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairRows,
|
||
|
uint16_t tilePairCols,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_X_MIRROR_START_OFFS(_, _),
|
||
|
PAVING_X_MIRROR_READ_DIR,
|
||
|
PAVING_X_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_X_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_2x2_paving_y_mirror)(
|
||
|
const __API_INT_TYPE *__RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairRows,
|
||
|
uint16_t tilePairCols,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_Y_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_Y_MIRROR_READ_DIR,
|
||
|
PAVING_Y_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_Y_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_2x2_paving_xy_mirror)(
|
||
|
const __API_INT_TYPE *__RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairRows,
|
||
|
uint16_t tilePairCols,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_XY_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_XY_MIRROR_READ_DIR,
|
||
|
PAVING_XY_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_XY_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
|
||
|
void __ARM_2D_FUNC(cl_key_1x2_paving)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint32_t destWidth,
|
||
|
uint16_t tilePairRows,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_DIRECT_START_OFFS(_, _),
|
||
|
PAVING_DIRECT_READ_DIR,
|
||
|
PAVING_DIRECT_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_DIRECT_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_1x2_paving_x_mirror)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint32_t destWidth,
|
||
|
uint16_t tilePairRows,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_X_MIRROR_START_OFFS(_, _),
|
||
|
PAVING_X_MIRROR_READ_DIR,
|
||
|
PAVING_X_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_X_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_1x2_paving_y_mirror)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint32_t destWidth,
|
||
|
uint16_t tilePairRows,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_Y_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_Y_MIRROR_READ_DIR,
|
||
|
PAVING_Y_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_Y_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_1x2_paving_xy_mirror)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint32_t destWidth,
|
||
|
uint16_t tilePairRows,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x2(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_XY_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_XY_MIRROR_READ_DIR,
|
||
|
PAVING_XY_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_XY_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
|
||
|
void __ARM_2D_FUNC(cl_key_2x1_paving)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairCols,
|
||
|
uint16_t destHeight,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_DIRECT_START_OFFS(_, _),
|
||
|
PAVING_DIRECT_READ_DIR,
|
||
|
PAVING_DIRECT_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_DIRECT_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_2x1_paving_x_mirror)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairCols,
|
||
|
uint16_t destHeight,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_X_MIRROR_START_OFFS(_, _),
|
||
|
PAVING_X_MIRROR_READ_DIR,
|
||
|
PAVING_X_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_X_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_2x1_paving_y_mirror)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairCols,
|
||
|
uint16_t destHeight,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_Y_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_Y_MIRROR_READ_DIR,
|
||
|
PAVING_Y_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_Y_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_2x1_paving_xy_mirror)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSourceBase,
|
||
|
int16_t iSourceStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSourceSize,
|
||
|
__API_INT_TYPE * __RESTRICT pTargetBase,
|
||
|
int16_t iTargetStride,
|
||
|
uint16_t tilePairCols,
|
||
|
uint16_t destHeight,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_2x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_XY_MIRROR_START_OFFS(iSourceStride, ptSourceSize->iHeight),
|
||
|
PAVING_XY_MIRROR_READ_DIR,
|
||
|
PAVING_XY_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_XY_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
|
||
|
void __ARM_2D_FUNC(cl_key_1x1_paving)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSrcCopySize,
|
||
|
const arm_2d_size_t * __RESTRICT ptDstCopySize,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_DIRECT_START_OFFS(_, _),
|
||
|
PAVING_DIRECT_READ_DIR,
|
||
|
PAVING_DIRECT_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_DIRECT_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_1x1_paving_x_mirror)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSrcCopySize,
|
||
|
const arm_2d_size_t * __RESTRICT ptDstCopySize,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_X_MIRROR_START_OFFS(_, _),
|
||
|
PAVING_X_MIRROR_READ_DIR,
|
||
|
PAVING_X_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_X_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_1x1_paving_y_mirror)(
|
||
|
const __API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSrcCopySize,
|
||
|
const arm_2d_size_t * __RESTRICT ptDstCopySize,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_Y_MIRROR_START_OFFS(iSourceStride, ptSrcCopySize->iHeight),
|
||
|
PAVING_Y_MIRROR_READ_DIR,
|
||
|
PAVING_Y_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_Y_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_1x1_paving_xy_mirror)(const __API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
const arm_2d_size_t * __RESTRICT ptSrcCopySize,
|
||
|
const arm_2d_size_t * __RESTRICT ptDstCopySize,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_PAVING_1x1(__API_INT_TYPE_BIT_NUM,
|
||
|
PAVING_XY_MIRROR_START_OFFS(iSourceStride, ptSrcCopySize->iHeight),
|
||
|
PAVING_XY_MIRROR_READ_DIR,
|
||
|
PAVING_XY_MIRROR_SETUP_COPY(__API_INT_TYPE_BIT_NUM),
|
||
|
PAVING_XY_MIRROR_LOAD_PATTERN(__API_INT_TYPE_BIT_NUM),
|
||
|
CMP_CL_MSK(__API_INT_TYPE_BIT_NUM, Colour));
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/*----------------------------------------------------------------------------*
|
||
|
* Copy with colour masking *
|
||
|
*----------------------------------------------------------------------------*/
|
||
|
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_copy)(
|
||
|
__API_INT_TYPE *__RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE *__RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
arm_2d_size_t *__RESTRICT ptCopySize,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_FUNC(cl_key_1x1_paving)( pSource,
|
||
|
iSourceStride,
|
||
|
pTarget,
|
||
|
iTargetStride,
|
||
|
ptCopySize,
|
||
|
ptCopySize,
|
||
|
Colour);
|
||
|
}
|
||
|
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_copy_y_mirror)(
|
||
|
__API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
arm_2d_size_t * __RESTRICT ptCopySize,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_FUNC(cl_key_1x1_paving_y_mirror)( pSource,
|
||
|
iSourceStride,
|
||
|
pTarget,
|
||
|
iTargetStride,
|
||
|
ptCopySize,
|
||
|
ptCopySize,
|
||
|
Colour);
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_copy_x_mirror)(
|
||
|
__API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
arm_2d_size_t * __RESTRICT ptCopySize,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_FUNC(cl_key_1x1_paving_x_mirror)( pSource,
|
||
|
iSourceStride,
|
||
|
pTarget,
|
||
|
iTargetStride,
|
||
|
ptCopySize,
|
||
|
ptCopySize,
|
||
|
Colour);
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(cl_key_copy_xy_mirror)(
|
||
|
__API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
arm_2d_size_t * __RESTRICT ptCopySize,
|
||
|
__API_INT_TYPE Colour)
|
||
|
{
|
||
|
__ARM_2D_FUNC(cl_key_1x1_paving_xy_mirror)( pSource,
|
||
|
iSourceStride,
|
||
|
pTarget,
|
||
|
iTargetStride,
|
||
|
ptCopySize,
|
||
|
ptCopySize,
|
||
|
Colour);
|
||
|
|
||
|
}
|
||
|
|
||
|
/*----------------------------------------------------------------------------*
|
||
|
* Copy *
|
||
|
*----------------------------------------------------------------------------*/
|
||
|
|
||
|
#if __API_INT_TYPE_BIT_NUM == 8
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(copy)( __API_INT_TYPE *__RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE *__RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
arm_2d_size_t *__RESTRICT ptCopySize)
|
||
|
{
|
||
|
__ARM_2D_FUNC(1x1_paving)( pSource,
|
||
|
iSourceStride,
|
||
|
pTarget,
|
||
|
iTargetStride,
|
||
|
ptCopySize,
|
||
|
ptCopySize);
|
||
|
}
|
||
|
|
||
|
#endif
|
||
|
|
||
|
/*----------------------------------------------------------------------------*
|
||
|
* Copy with mirroring *
|
||
|
*----------------------------------------------------------------------------*/
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(copy_y_mirror)( __API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
arm_2d_size_t * __RESTRICT ptCopySize)
|
||
|
{
|
||
|
__ARM_2D_FUNC(1x1_paving_y_mirror)( pSource,
|
||
|
iSourceStride,
|
||
|
pTarget,
|
||
|
iTargetStride,
|
||
|
ptCopySize,
|
||
|
ptCopySize);
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(copy_x_mirror)(__API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
arm_2d_size_t * __RESTRICT ptCopySize)
|
||
|
{
|
||
|
__ARM_2D_FUNC(1x1_paving_x_mirror)( pSource,
|
||
|
iSourceStride,
|
||
|
pTarget,
|
||
|
iTargetStride,
|
||
|
ptCopySize,
|
||
|
ptCopySize);
|
||
|
}
|
||
|
|
||
|
__OVERRIDE_WEAK
|
||
|
void __ARM_2D_FUNC(copy_xy_mirror)( __API_INT_TYPE * __RESTRICT pSource,
|
||
|
int16_t iSourceStride,
|
||
|
__API_INT_TYPE * __RESTRICT pTarget,
|
||
|
int16_t iTargetStride,
|
||
|
arm_2d_size_t * __RESTRICT ptCopySize)
|
||
|
{
|
||
|
__ARM_2D_FUNC(1x1_paving_xy_mirror)(pSource,
|
||
|
iSourceStride,
|
||
|
pTarget,
|
||
|
iTargetStride,
|
||
|
ptCopySize,
|
||
|
ptCopySize);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
#undef ____ARM_2D_FUNC
|
||
|
#undef ___ARM_2D_FUNC
|
||
|
#undef __ARM_2D_FUNC
|
||
|
#undef __API_COLOUR
|
||
|
#undef __API_INT_TYPE
|
||
|
#undef __API_INT_TYPE_BIT_NUM
|
||
|
#undef ____ARM_2D_TYPE
|
||
|
#undef ___ARM_2D_TYPE
|
||
|
#undef __ARM_2D_TYPE
|
||
|
|