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