11176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/*
21176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Copyright © 2010 Nokia Corporation
31176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *
41176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Permission is hereby granted, free of charge, to any person obtaining a
51176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * copy of this software and associated documentation files (the "Software"),
61176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * to deal in the Software without restriction, including without limitation
71176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * the rights to use, copy, modify, merge, publish, distribute, sublicense,
81176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * and/or sell copies of the Software, and to permit persons to whom the
91176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Software is furnished to do so, subject to the following conditions:
101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *
111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * The above copyright notice and this permission notice (including the next
121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * paragraph) shall be included in all copies or substantial portions of the
131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Software.
141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *
151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * DEALINGS IN THE SOFTWARE.
221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *
231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Author:  Siarhei Siamashka (siarhei.siamashka@nokia.com)
241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck */
251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef PIXMAN_ARM_COMMON_H
271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_COMMON_H
281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include "pixman-inlines.h"
301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Define some macros which can expand into proxy functions between
321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * ARM assembly optimized functions and the rest of pixman fast path API.
331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *
341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * All the low level ARM assembly functions have to use ARM EABI
351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * calling convention and take up to 8 arguments:
361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *    width, height, dst, dst_stride, src, src_stride, mask, mask_stride
371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *
381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * The arguments are ordered with the most important coming first (the
391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * first 4 arguments are passed to function in registers, the rest are
401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * on stack). The last arguments are optional, for example if the
411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * function is not using mask, then 'mask' and 'mask_stride' can be
421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * omitted when doing a function call.
431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck *
441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Arguments 'src' and 'mask' contain either a pointer to the top left
451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * pixel of the composited rectangle or a pixel color value depending
461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * on the function type. In the case of just a color value (solid source
471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * or mask), the corresponding stride argument is unused.
481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck */
491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define SKIP_ZERO_SRC  1
511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define SKIP_ZERO_MASK 2
521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_BIND_FAST_PATH_SRC_DST(cputype, name,                \
541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                          src_type, src_cnt,            \
551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                          dst_type, dst_cnt)            \
561176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid                                                                    \
571176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_composite_##name##_asm_##cputype (int32_t   w,                   \
581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t   h,                   \
591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         dst_type *dst,                 \
601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t   dst_stride,          \
611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         src_type *src,                 \
621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t   src_stride);         \
631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
641176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic void                                                             \
651176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcputype##_composite_##name (pixman_implementation_t *imp,               \
661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                            pixman_composite_info_t *info)              \
671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{                                                                       \
681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_COMPOSITE_ARGS (info);                                       \
691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dst_type *dst_line;							\
701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    src_type *src_line;                                                 \
711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    int32_t dst_stride, src_stride;                                     \
721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, src_type,           \
741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                           src_stride, src_line, src_cnt);              \
751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_IMAGE_GET_LINE (dest_image, dest_x, dest_y, dst_type,        \
761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                           dst_stride, dst_line, dst_cnt);              \
771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_composite_##name##_asm_##cputype (width, height,             \
791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             dst_line, dst_stride,      \
801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             src_line, src_stride);     \
811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_BIND_FAST_PATH_N_DST(flags, cputype, name,           \
841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                        dst_type, dst_cnt)              \
851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid                                                                    \
861176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_composite_##name##_asm_##cputype (int32_t    w,                  \
871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    h,                  \
881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         dst_type  *dst,                \
891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    dst_stride,         \
901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         uint32_t   src);               \
911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
921176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic void                                                             \
931176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcputype##_composite_##name (pixman_implementation_t *imp,               \
941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			    pixman_composite_info_t *info)              \
951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{                                                                       \
961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_COMPOSITE_ARGS (info);					\
971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dst_type  *dst_line;                                                \
981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    int32_t    dst_stride;                                              \
991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    uint32_t   src;                                                     \
1001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    src = _pixman_image_get_solid (					\
1021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	imp, src_image, dest_image->bits.format);			\
1031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if ((flags & SKIP_ZERO_SRC) && src == 0)                            \
1051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	return;                                                         \
1061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_IMAGE_GET_LINE (dest_image, dest_x, dest_y, dst_type,        \
1081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                           dst_stride, dst_line, dst_cnt);              \
1091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_composite_##name##_asm_##cputype (width, height,             \
1111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             dst_line, dst_stride,      \
1121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             src);                      \
1131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
1141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST(flags, cputype, name,      \
1161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             mask_type, mask_cnt,       \
1171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             dst_type, dst_cnt)         \
1181176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid                                                                    \
1191176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_composite_##name##_asm_##cputype (int32_t    w,                  \
1201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    h,                  \
1211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         dst_type  *dst,                \
1221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    dst_stride,         \
1231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         uint32_t   src,                \
1241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    unused,             \
1251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         mask_type *mask,               \
1261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    mask_stride);       \
1271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic void                                                             \
1291176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcputype##_composite_##name (pixman_implementation_t *imp,               \
1301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                            pixman_composite_info_t *info)              \
1311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{                                                                       \
1321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_COMPOSITE_ARGS (info);                                       \
1331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dst_type  *dst_line;						\
1341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    mask_type *mask_line;                                               \
1351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    int32_t    dst_stride, mask_stride;                                 \
1361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    uint32_t   src;                                                     \
1371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    src = _pixman_image_get_solid (					\
1391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	imp, src_image, dest_image->bits.format);			\
1401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if ((flags & SKIP_ZERO_SRC) && src == 0)                            \
1421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	return;                                                         \
1431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_IMAGE_GET_LINE (dest_image, dest_x, dest_y, dst_type,        \
1451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                           dst_stride, dst_line, dst_cnt);              \
1461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, mask_type,       \
1471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                           mask_stride, mask_line, mask_cnt);           \
1481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_composite_##name##_asm_##cputype (width, height,             \
1501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             dst_line, dst_stride,      \
1511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             src, 0,                    \
1521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             mask_line, mask_stride);   \
1531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
1541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST(flags, cputype, name,       \
1561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                            src_type, src_cnt,          \
1571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                            dst_type, dst_cnt)          \
1581176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid                                                                    \
1591176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_composite_##name##_asm_##cputype (int32_t    w,                  \
1601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    h,                  \
1611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         dst_type  *dst,                \
1621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    dst_stride,         \
1631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         src_type  *src,                \
1641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    src_stride,         \
1651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         uint32_t   mask);              \
1661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1671176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic void                                                             \
1681176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcputype##_composite_##name (pixman_implementation_t *imp,               \
1691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                            pixman_composite_info_t *info)              \
1701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{                                                                       \
1711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_COMPOSITE_ARGS (info);                                       \
1721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dst_type  *dst_line;						\
1731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    src_type  *src_line;                                                \
1741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    int32_t    dst_stride, src_stride;                                  \
1751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    uint32_t   mask;                                                    \
1761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    mask = _pixman_image_get_solid (					\
1781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	imp, mask_image, dest_image->bits.format);			\
1791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if ((flags & SKIP_ZERO_MASK) && mask == 0)                          \
1811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	return;                                                         \
1821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_IMAGE_GET_LINE (dest_image, dest_x, dest_y, dst_type,        \
1841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                           dst_stride, dst_line, dst_cnt);              \
1851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, src_type,           \
1861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                           src_stride, src_line, src_cnt);              \
1871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
1881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_composite_##name##_asm_##cputype (width, height,             \
1891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             dst_line, dst_stride,      \
1901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             src_line, src_stride,      \
1911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             mask);                     \
1921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
1931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_BIND_FAST_PATH_SRC_MASK_DST(cputype, name,           \
1951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                               src_type, src_cnt,       \
1961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                               mask_type, mask_cnt,     \
1971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                               dst_type, dst_cnt)       \
1981176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid                                                                    \
1991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_composite_##name##_asm_##cputype (int32_t    w,                  \
2001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    h,                  \
2011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         dst_type  *dst,                \
2021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    dst_stride,         \
2031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         src_type  *src,                \
2041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    src_stride,         \
2051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         mask_type *mask,               \
2061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                         int32_t    mask_stride);       \
2071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
2081176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic void                                                             \
2091176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcputype##_composite_##name (pixman_implementation_t *imp,               \
2101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                            pixman_composite_info_t *info)              \
2111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{                                                                       \
2121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_COMPOSITE_ARGS (info);                                       \
2131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dst_type  *dst_line;						\
2141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    src_type  *src_line;                                                \
2151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    mask_type *mask_line;                                               \
2161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    int32_t    dst_stride, src_stride, mask_stride;                     \
2171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
2181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_IMAGE_GET_LINE (dest_image, dest_x, dest_y, dst_type,        \
2191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                           dst_stride, dst_line, dst_cnt);              \
2201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, src_type,           \
2211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                           src_stride, src_line, src_cnt);              \
2221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, mask_type,       \
2231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                           mask_stride, mask_line, mask_cnt);           \
2241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                        \
2251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_composite_##name##_asm_##cputype (width, height,             \
2261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             dst_line, dst_stride,      \
2271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             src_line, src_stride,      \
2281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                             mask_line, mask_stride);   \
2291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
2301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
2311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_BIND_SCALED_NEAREST_SRC_DST(cputype, name, op,             \
2321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                               src_type, dst_type)            \
2331176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid                                                                          \
2341176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_scaled_nearest_scanline_##name##_##op##_asm_##cputype (                \
2351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   int32_t          w,        \
2361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   dst_type *       dst,      \
2371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   const src_type * src,      \
2381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   vx,       \
2391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   unit_x,   \
2401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   max_vx);  \
2411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                              \
2421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic force_inline void                                                      \
2431176bdada62cabc6ec4b0308a930e83b679d5d36John Reckscaled_nearest_scanline_##cputype##_##name##_##op (dst_type *       pd,       \
2441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   const src_type * ps,       \
2451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   int32_t          w,        \
2461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   vx,       \
2471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   unit_x,   \
2481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   max_vx,   \
2491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_bool_t    zero_src) \
2501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{                                                                             \
2511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_scaled_nearest_scanline_##name##_##op##_asm_##cputype (w, pd, ps,  \
2521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                  vx, unit_x, \
2531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                  max_vx);    \
2541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}                                                                             \
2551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                              \
2561176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_NEAREST_MAINLOOP (cputype##_##name##_cover_##op,                         \
2571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_nearest_scanline_##cputype##_##name##_##op,     \
2581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, dst_type, COVER)                             \
2591176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_NEAREST_MAINLOOP (cputype##_##name##_none_##op,                          \
2601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_nearest_scanline_##cputype##_##name##_##op,     \
2611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, dst_type, NONE)                              \
2621176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_NEAREST_MAINLOOP (cputype##_##name##_pad_##op,                           \
2631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_nearest_scanline_##cputype##_##name##_##op,     \
2641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, dst_type, PAD)                               \
2651176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_NEAREST_MAINLOOP (cputype##_##name##_normal_##op,                        \
2661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_nearest_scanline_##cputype##_##name##_##op,     \
2671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, dst_type, NORMAL)
2681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
2691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Provide entries for the fast path table */
2701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH(op,s,d,func)                      \
2711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    SIMPLE_NEAREST_FAST_PATH_COVER (op,s,d,func),                             \
2721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    SIMPLE_NEAREST_FAST_PATH_NONE (op,s,d,func),                              \
2731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    SIMPLE_NEAREST_FAST_PATH_PAD (op,s,d,func),                               \
2741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    SIMPLE_NEAREST_FAST_PATH_NORMAL (op,s,d,func)
2751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
2761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_BIND_SCALED_NEAREST_SRC_A8_DST(flags, cputype, name, op,   \
2771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                  src_type, dst_type)         \
2781176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid                                                                          \
2791176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_scaled_nearest_scanline_##name##_##op##_asm_##cputype (                \
2801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   int32_t          w,        \
2811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   dst_type *       dst,      \
2821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   const src_type * src,      \
2831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   vx,       \
2841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   unit_x,   \
2851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   max_vx,   \
2861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   const uint8_t *  mask);    \
2871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                              \
2881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic force_inline void                                                      \
2891176bdada62cabc6ec4b0308a930e83b679d5d36John Reckscaled_nearest_scanline_##cputype##_##name##_##op (const uint8_t *  mask,     \
2901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   dst_type *       pd,       \
2911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   const src_type * ps,       \
2921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   int32_t          w,        \
2931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   vx,       \
2941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   unit_x,   \
2951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_fixed_t   max_vx,   \
2961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                   pixman_bool_t    zero_src) \
2971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{                                                                             \
2981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if ((flags & SKIP_ZERO_SRC) && zero_src)                                  \
2991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	return;                                                               \
3001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_scaled_nearest_scanline_##name##_##op##_asm_##cputype (w, pd, ps,  \
3011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                  vx, unit_x, \
3021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                  max_vx,     \
3031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                  mask);      \
3041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}                                                                             \
3051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                              \
3061176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_NEAREST_MAINLOOP_COMMON (cputype##_##name##_cover_##op,                  \
3071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                              scaled_nearest_scanline_##cputype##_##name##_##op,\
3081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                              src_type, uint8_t, dst_type, COVER, TRUE, FALSE)\
3091176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_NEAREST_MAINLOOP_COMMON (cputype##_##name##_none_##op,                   \
3101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                              scaled_nearest_scanline_##cputype##_##name##_##op,\
3111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                              src_type, uint8_t, dst_type, NONE, TRUE, FALSE) \
3121176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_NEAREST_MAINLOOP_COMMON (cputype##_##name##_pad_##op,                    \
3131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                              scaled_nearest_scanline_##cputype##_##name##_##op,\
3141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                              src_type, uint8_t, dst_type, PAD, TRUE, FALSE)  \
3151176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_NEAREST_MAINLOOP_COMMON (cputype##_##name##_normal_##op,                 \
3161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                              scaled_nearest_scanline_##cputype##_##name##_##op,\
3171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                              src_type, uint8_t, dst_type, NORMAL, TRUE, FALSE)
3181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Provide entries for the fast path table */
3201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_SIMPLE_NEAREST_A8_MASK_FAST_PATH(op,s,d,func)              \
3211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    SIMPLE_NEAREST_A8_MASK_FAST_PATH_COVER (op,s,d,func),                     \
3221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    SIMPLE_NEAREST_A8_MASK_FAST_PATH_NONE (op,s,d,func),                      \
3231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    SIMPLE_NEAREST_A8_MASK_FAST_PATH_PAD (op,s,d,func),                       \
3241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    SIMPLE_NEAREST_A8_MASK_FAST_PATH_NORMAL (op,s,d,func)
3251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/*****************************************************************************/
3271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_BIND_SCALED_BILINEAR_SRC_DST(flags, cputype, name, op,     \
3291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                src_type, dst_type)           \
3301176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid                                                                          \
3311176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_scaled_bilinear_scanline_##name##_##op##_asm_##cputype (               \
3321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                dst_type *       dst,         \
3331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const src_type * top,         \
3341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const src_type * bottom,      \
3351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int              wt,          \
3361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int              wb,          \
3371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_fixed_t   x,           \
3381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_fixed_t   ux,          \
3391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int              width);      \
3401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                              \
3411176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic force_inline void                                                      \
3421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckscaled_bilinear_scanline_##cputype##_##name##_##op (                          \
3431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                dst_type *       dst,         \
3441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const uint32_t * mask,        \
3451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const src_type * src_top,     \
3461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const src_type * src_bottom,  \
3471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int32_t          w,           \
3481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int              wt,          \
3491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int              wb,          \
3501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_fixed_t   vx,          \
3511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_fixed_t   unit_x,      \
3521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_fixed_t   max_vx,      \
3531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_bool_t    zero_src)    \
3541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{                                                                             \
3551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if ((flags & SKIP_ZERO_SRC) && zero_src)                                  \
3561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	return;                                                               \
3571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_scaled_bilinear_scanline_##name##_##op##_asm_##cputype (           \
3581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                            dst, src_top, src_bottom, wt, wb, vx, unit_x, w); \
3591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}                                                                             \
3601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                              \
3611176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_BILINEAR_MAINLOOP_COMMON (cputype##_##name##_cover_##op,                 \
3621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_bilinear_scanline_##cputype##_##name##_##op,    \
3631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, uint32_t, dst_type, COVER, FLAG_NONE)        \
3641176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_BILINEAR_MAINLOOP_COMMON (cputype##_##name##_none_##op,                  \
3651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_bilinear_scanline_##cputype##_##name##_##op,    \
3661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, uint32_t, dst_type, NONE, FLAG_NONE)         \
3671176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_BILINEAR_MAINLOOP_COMMON (cputype##_##name##_pad_##op,                   \
3681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_bilinear_scanline_##cputype##_##name##_##op,    \
3691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, uint32_t, dst_type, PAD, FLAG_NONE)          \
3701176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_BILINEAR_MAINLOOP_COMMON (cputype##_##name##_normal_##op,                \
3711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_bilinear_scanline_##cputype##_##name##_##op,    \
3721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, uint32_t, dst_type, NORMAL,                  \
3731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       FLAG_NONE)
3741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define PIXMAN_ARM_BIND_SCALED_BILINEAR_SRC_A8_DST(flags, cputype, name, op,  \
3771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                src_type, dst_type)           \
3781176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid                                                                          \
3791176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_scaled_bilinear_scanline_##name##_##op##_asm_##cputype (               \
3801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                dst_type *       dst,         \
3811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const uint8_t *  mask,        \
3821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const src_type * top,         \
3831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const src_type * bottom,      \
3841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int              wt,          \
3851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int              wb,          \
3861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_fixed_t   x,           \
3871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_fixed_t   ux,          \
3881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int              width);      \
3891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                              \
3901176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic force_inline void                                                      \
3911176bdada62cabc6ec4b0308a930e83b679d5d36John Reckscaled_bilinear_scanline_##cputype##_##name##_##op (                          \
3921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                dst_type *       dst,         \
3931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const uint8_t *  mask,        \
3941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const src_type * src_top,     \
3951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                const src_type * src_bottom,  \
3961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int32_t          w,           \
3971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int              wt,          \
3981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                int              wb,          \
3991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_fixed_t   vx,          \
4001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_fixed_t   unit_x,      \
4011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_fixed_t   max_vx,      \
4021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                pixman_bool_t    zero_src)    \
4031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{                                                                             \
4041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if ((flags & SKIP_ZERO_SRC) && zero_src)                                  \
4051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	return;                                                                   \
4061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pixman_scaled_bilinear_scanline_##name##_##op##_asm_##cputype (           \
4071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                      dst, mask, src_top, src_bottom, wt, wb, vx, unit_x, w); \
4081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}                                                                             \
4091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                                                                              \
4101176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_BILINEAR_MAINLOOP_COMMON (cputype##_##name##_cover_##op,                 \
4111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_bilinear_scanline_##cputype##_##name##_##op,    \
4121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, uint8_t, dst_type, COVER,                    \
4131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       FLAG_HAVE_NON_SOLID_MASK)                              \
4141176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_BILINEAR_MAINLOOP_COMMON (cputype##_##name##_none_##op,                  \
4151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_bilinear_scanline_##cputype##_##name##_##op,    \
4161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, uint8_t, dst_type, NONE,                     \
4171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       FLAG_HAVE_NON_SOLID_MASK)                              \
4181176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_BILINEAR_MAINLOOP_COMMON (cputype##_##name##_pad_##op,                   \
4191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_bilinear_scanline_##cputype##_##name##_##op,    \
4201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, uint8_t, dst_type, PAD,                      \
4211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       FLAG_HAVE_NON_SOLID_MASK)                              \
4221176bdada62cabc6ec4b0308a930e83b679d5d36John ReckFAST_BILINEAR_MAINLOOP_COMMON (cputype##_##name##_normal_##op,                \
4231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       scaled_bilinear_scanline_##cputype##_##name##_##op,    \
4241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       src_type, uint8_t, dst_type, NORMAL,                   \
4251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                       FLAG_HAVE_NON_SOLID_MASK)
4261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
429