/*
 * Copyright © 2009 Mozilla Corporation
 *
 * Permission to use, copy, modify, distribute, and sell this software and its
 * documentation for any purpose is hereby granted without fee, provided that
 * the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation, and that the name of Mozilla Corporation not be used in
 * advertising or publicity pertaining to distribution of the software without
 * specific, written prior permission.  Mozilla Corporation makes no
 * representations about the suitability of this software for any purpose.  It
 * is provided "as is" without express or implied warranty.
 *
 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
 * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
 * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 * SOFTWARE.
 *
 * Author:  Ian Rickards (ian.rickards@arm.com) 
 *
 */

#include "pixman-private.h"

#ifdef USE_ARM_NEON

pixman_bool_t pixman_have_arm_neon(void);

#else
#define pixman_have_arm_neon() FALSE
#endif

#ifdef USE_ARM_NEON

void
fbCompositeSrcAdd_8000x8000neon (pixman_op_t op,
                        pixman_image_t * pSrc,
                        pixman_image_t * pMask,
                        pixman_image_t * pDst,
                        int16_t      xSrc,
                        int16_t      ySrc,
                        int16_t      xMask,
                        int16_t      yMask,
                        int16_t      xDst,
                        int16_t      yDst,
                        uint16_t     width,
                        uint16_t     height);

void
fbCompositeSrc_8888x8888neon (pixman_op_t op,
			pixman_image_t * pSrc,
			pixman_image_t * pMask,
			pixman_image_t * pDst,
			int16_t      xSrc,
			int16_t      ySrc,
			int16_t      xMask,
			int16_t      yMask,
			int16_t      xDst,
			int16_t      yDst,
			uint16_t     width,
			uint16_t     height);

void
fbCompositeSrc_8888x8x8888neon (pixman_op_t op,
			pixman_image_t * pSrc,
			pixman_image_t * pMask,
			pixman_image_t * pDst,
			int16_t      xSrc,
			int16_t      ySrc,
			int16_t      xMask,
			int16_t      yMask,
			int16_t      xDst,
			int16_t      yDst,
			uint16_t     width,
			uint16_t     height);

void
fbCompositeSolidMask_nx8x0565neon (pixman_op_t op,
                        pixman_image_t * pSrc,
                        pixman_image_t * pMask,
                        pixman_image_t * pDst,
                        int16_t      xSrc,
                        int16_t      ySrc,
                        int16_t      xMask,
                        int16_t      yMask,
                        int16_t      xDst,
                        int16_t      yDst,
                        uint16_t     width,
                        uint16_t     height);

void
fbCompositeSolidMask_nx8x8888neon (pixman_op_t op,
			pixman_image_t * pSrc,
			pixman_image_t * pMask,
			pixman_image_t * pDst,
			int16_t      xSrc,
			int16_t      ySrc,
			int16_t      xMask,
			int16_t      yMask,
			int16_t      xDst,
			int16_t      yDst,
		 	uint16_t     width,
			uint16_t     height);

void
fbCompositeSrc_x888x0565neon (pixman_op_t op,
                        pixman_image_t * pSrc,
                        pixman_image_t * pMask,
                        pixman_image_t * pDst,
                        int16_t      xSrc,
                        int16_t      ySrc,
                        int16_t      xMask,
                        int16_t      yMask,
                        int16_t      xDst,
                        int16_t      yDst,
                        uint16_t     width,
                        uint16_t     height);

void
fbCompositeSrcAdd_8888x8x8neon (pixman_op_t op,
                        pixman_image_t * pSrc,
                        pixman_image_t * pMask,
                        pixman_image_t * pDst,
                        int16_t      xSrc,
                        int16_t      ySrc,
                        int16_t      xMask,
                        int16_t      yMask,
                        int16_t      xDst,
                        int16_t      yDst,
                        uint16_t     width,
                        uint16_t     height);

#endif /* USE_ARM_NEON */
