w32tex
About: TeX Live provides a comprehensive TeX system including all the major TeX-related programs, macro packages, and fonts that are free software. Windows sources.
  Fossies Dox: w32tex-src.tar.xz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

pixman-sse2.c File Reference
#include <xmmintrin.h>
#include <emmintrin.h>
#include "pixman-private.h"
#include "pixman-combine32.h"
#include "pixman-inlines.h"
Include dependency graph for pixman-sse2.c:

Go to the source code of this file.

Macros

#define PSHUFD_IS_FAST   0
 
#define BILINEAR_DECLARE_VARIABLES
 
#define BILINEAR_INTERPOLATE_ONE_PIXEL_HELPER(pix, phase)
 
#define BILINEAR_INTERPOLATE_ONE_PIXEL(pix)
 
#define BILINEAR_INTERPOLATE_FOUR_PIXELS(pix)
 
#define BILINEAR_SKIP_ONE_PIXEL()
 
#define BILINEAR_SKIP_FOUR_PIXELS()
 
#define IMAGE_FLAGS
 

Functions

static __m128i unpack_32_1x128 (uint32_t data)
 
static void unpack_128_2x128 (__m128i data, __m128i *data_lo, __m128i *data_hi)
 
static __m128i unpack_565_to_8888 (__m128i lo)
 
static void unpack_565_128_4x128 (__m128i data, __m128i *data0, __m128i *data1, __m128i *data2, __m128i *data3)
 
static uint16_t pack_565_32_16 (uint32_t pixel)
 
static __m128i pack_2x128_128 (__m128i lo, __m128i hi)
 
static __m128i pack_565_2packedx128_128 (__m128i lo, __m128i hi)
 
static __m128i pack_565_2x128_128 (__m128i lo, __m128i hi)
 
static __m128i pack_565_4x128_128 (__m128i *xmm0, __m128i *xmm1, __m128i *xmm2, __m128i *xmm3)
 
static int is_opaque (__m128i x)
 
static int is_zero (__m128i x)
 
static int is_transparent (__m128i x)
 
static __m128i expand_pixel_32_1x128 (uint32_t data)
 
static __m128i expand_alpha_1x128 (__m128i data)
 
static void expand_alpha_2x128 (__m128i data_lo, __m128i data_hi, __m128i *alpha_lo, __m128i *alpha_hi)
 
static void expand_alpha_rev_2x128 (__m128i data_lo, __m128i data_hi, __m128i *alpha_lo, __m128i *alpha_hi)
 
static void pix_multiply_2x128 (__m128i *data_lo, __m128i *data_hi, __m128i *alpha_lo, __m128i *alpha_hi, __m128i *ret_lo, __m128i *ret_hi)
 
static void pix_add_multiply_2x128 (__m128i *src_lo, __m128i *src_hi, __m128i *alpha_dst_lo, __m128i *alpha_dst_hi, __m128i *dst_lo, __m128i *dst_hi, __m128i *alpha_src_lo, __m128i *alpha_src_hi, __m128i *ret_lo, __m128i *ret_hi)
 
static void negate_2x128 (__m128i data_lo, __m128i data_hi, __m128i *neg_lo, __m128i *neg_hi)
 
static void invert_colors_2x128 (__m128i data_lo, __m128i data_hi, __m128i *inv_lo, __m128i *inv_hi)
 
static void over_2x128 (__m128i *src_lo, __m128i *src_hi, __m128i *alpha_lo, __m128i *alpha_hi, __m128i *dst_lo, __m128i *dst_hi)
 
static void over_rev_non_pre_2x128 (__m128i src_lo, __m128i src_hi, __m128i *dst_lo, __m128i *dst_hi)
 
static void in_over_2x128 (__m128i *src_lo, __m128i *src_hi, __m128i *alpha_lo, __m128i *alpha_hi, __m128i *mask_lo, __m128i *mask_hi, __m128i *dst_lo, __m128i *dst_hi)
 
static __m128i load_128_aligned (__m128i *src)
 
static __m128i load_128_unaligned (const __m128i *src)
 
static void save_128_write_combining (__m128i *dst, __m128i data)
 
static void save_128_aligned (__m128i *dst, __m128i data)
 
static void save_128_unaligned (__m128i *dst, __m128i data)
 
static __m128i load_32_1x128 (uint32_t data)
 
static __m128i expand_alpha_rev_1x128 (__m128i data)
 
static __m128i expand_pixel_8_1x128 (uint8_t data)
 
static __m128i pix_multiply_1x128 (__m128i data, __m128i alpha)
 
static __m128i pix_add_multiply_1x128 (__m128i *src, __m128i *alpha_dst, __m128i *dst, __m128i *alpha_src)
 
static __m128i negate_1x128 (__m128i data)
 
static __m128i invert_colors_1x128 (__m128i data)
 
static __m128i over_1x128 (__m128i src, __m128i alpha, __m128i dst)
 
static __m128i in_over_1x128 (__m128i *src, __m128i *alpha, __m128i *mask, __m128i *dst)
 
static __m128i over_rev_non_pre_1x128 (__m128i src, __m128i dst)
 
static uint32_t pack_1x128_32 (__m128i data)
 
static __m128i expand565_16_1x128 (uint16_t pixel)
 
static uint32_t core_combine_over_u_pixel_sse2 (uint32_t src, uint32_t dst)
 
static uint32_t combine1 (const uint32_t *ps, const uint32_t *pm)
 
static __m128i combine4 (const __m128i *ps, const __m128i *pm)
 
static void core_combine_over_u_sse2_mask (uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void core_combine_over_u_sse2_no_mask (uint32_t *pd, const uint32_t *ps, int w)
 
static void sse2_combine_over_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void sse2_combine_over_reverse_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static uint32_t core_combine_in_u_pixel_sse2 (uint32_t src, uint32_t dst)
 
static void sse2_combine_in_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void sse2_combine_in_reverse_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void sse2_combine_out_reverse_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void sse2_combine_out_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static uint32_t core_combine_atop_u_pixel_sse2 (uint32_t src, uint32_t dst)
 
static void sse2_combine_atop_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static uint32_t core_combine_reverse_atop_u_pixel_sse2 (uint32_t src, uint32_t dst)
 
static void sse2_combine_atop_reverse_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static uint32_t core_combine_xor_u_pixel_sse2 (uint32_t src, uint32_t dst)
 
static void sse2_combine_xor_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *dst, const uint32_t *src, const uint32_t *mask, int width)
 
static void sse2_combine_add_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *dst, const uint32_t *src, const uint32_t *mask, int width)
 
static uint32_t core_combine_saturate_u_pixel_sse2 (uint32_t src, uint32_t dst)
 
static void sse2_combine_saturate_u (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void sse2_combine_src_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static uint32_t core_combine_over_ca_pixel_sse2 (uint32_t src, uint32_t mask, uint32_t dst)
 
static void sse2_combine_over_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static uint32_t core_combine_over_reverse_ca_pixel_sse2 (uint32_t src, uint32_t mask, uint32_t dst)
 
static void sse2_combine_over_reverse_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void sse2_combine_in_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void sse2_combine_in_reverse_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void sse2_combine_out_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void sse2_combine_out_reverse_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static uint32_t core_combine_atop_ca_pixel_sse2 (uint32_t src, uint32_t mask, uint32_t dst)
 
static void sse2_combine_atop_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static uint32_t core_combine_reverse_atop_ca_pixel_sse2 (uint32_t src, uint32_t mask, uint32_t dst)
 
static void sse2_combine_atop_reverse_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static uint32_t core_combine_xor_ca_pixel_sse2 (uint32_t src, uint32_t mask, uint32_t dst)
 
static void sse2_combine_xor_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static void sse2_combine_add_ca (pixman_implementation_t *imp, pixman_op_t op, uint32_t *pd, const uint32_t *ps, const uint32_t *pm, int w)
 
static __m128i create_mask_16_128 (uint16_t mask)
 
static __m128i create_mask_2x32_128 (uint32_t mask0, uint32_t mask1)
 
static void sse2_composite_over_n_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_n_0565 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_add_n_8888_8888_ca (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_n_8888_8888_ca (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_8888_n_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_src_x888_0565 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_src_x888_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_x888_n_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_8888_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static uint16_t composite_over_8888_0565pixel (uint32_t src, uint16_t dst)
 
static void sse2_composite_over_8888_0565 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_n_8_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static pixman_bool_t sse2_fill (pixman_implementation_t *imp, uint32_t *bits, int stride, int bpp, int x, int y, int width, int height, uint32_t filler)
 
static void sse2_composite_src_n_8_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_n_8_0565 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_pixbuf_0565 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_pixbuf_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_n_8888_0565_ca (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_in_n_8_8 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_in_n_8 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_in_8_8 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_add_n_8_8 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_add_n_8 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_add_8_8 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_add_8888_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_add_n_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_add_n_8_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static pixman_bool_t sse2_blt (pixman_implementation_t *imp, uint32_t *src_bits, uint32_t *dst_bits, int src_stride, int dst_stride, int src_bpp, int dst_bpp, int src_x, int src_y, int dest_x, int dest_y, int width, int height)
 
static void sse2_composite_copy_area (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_x888_8_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_8888_8_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_reverse_n_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void sse2_composite_over_8888_8888_8888 (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void scaled_nearest_scanline_sse2_8888_8888_OVER (uint32_t *pd, const uint32_t *ps, int32_t w, pixman_fixed_t vx, pixman_fixed_t unit_x, pixman_fixed_t src_width_fixed, pixman_bool_t fully_transparent_src)
 
static void scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_cover_OVER_wrapper (const uint8_t *mask, uint32_t *dst, const uint32_t *src, int32_t w, pixman_fixed_t vx, pixman_fixed_t unit_x, pixman_fixed_t max_vx, pixman_bool_t fully_transparent_src)
 
static void fast_composite_scaled_nearest_sse2_8888_8888_cover_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_none_OVER_wrapper (const uint8_t *mask, uint32_t *dst, const uint32_t *src, int32_t w, pixman_fixed_t vx, pixman_fixed_t unit_x, pixman_fixed_t max_vx, pixman_bool_t fully_transparent_src)
 
static void fast_composite_scaled_nearest_sse2_8888_8888_none_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_pad_OVER_wrapper (const uint8_t *mask, uint32_t *dst, const uint32_t *src, int32_t w, pixman_fixed_t vx, pixman_fixed_t unit_x, pixman_fixed_t max_vx, pixman_bool_t fully_transparent_src)
 
static void fast_composite_scaled_nearest_sse2_8888_8888_pad_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_normal_OVER_wrapper (const uint8_t *mask, uint32_t *dst, const uint32_t *src, int32_t w, pixman_fixed_t vx, pixman_fixed_t unit_x, pixman_fixed_t max_vx, pixman_bool_t fully_transparent_src)
 
static void fast_composite_scaled_nearest_sse2_8888_8888_normal_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void scaled_nearest_scanline_sse2_8888_n_8888_OVER (const uint32_t *mask, uint32_t *dst, const uint32_t *src, int32_t w, pixman_fixed_t vx, pixman_fixed_t unit_x, pixman_fixed_t src_width_fixed, pixman_bool_t zero_src)
 
static void fast_composite_scaled_nearest_sse2_8888_n_8888_cover_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_nearest_sse2_8888_n_8888_pad_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_nearest_sse2_8888_n_8888_none_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_nearest_sse2_8888_n_8888_normal_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void scaled_bilinear_scanline_sse2_8888_8888_SRC (uint32_t *dst, const uint32_t *mask, const uint32_t *src_top, const uint32_t *src_bottom, int32_t w, int wt, int wb, pixman_fixed_t vx_, pixman_fixed_t unit_x_, pixman_fixed_t max_vx, pixman_bool_t zero_src)
 
static void fast_composite_scaled_bilinear_sse2_8888_8888_cover_SRC (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_8888_pad_SRC (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_8888_none_SRC (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_8888_normal_SRC (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void scaled_bilinear_scanline_sse2_x888_8888_SRC (uint32_t *dst, const uint32_t *mask, const uint32_t *src_top, const uint32_t *src_bottom, int32_t w, int wt, int wb, pixman_fixed_t vx_, pixman_fixed_t unit_x_, pixman_fixed_t max_vx, pixman_bool_t zero_src)
 
static void fast_composite_scaled_bilinear_sse2_x888_8888_cover_SRC (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_x888_8888_pad_SRC (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_x888_8888_normal_SRC (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void scaled_bilinear_scanline_sse2_8888_8888_OVER (uint32_t *dst, const uint32_t *mask, const uint32_t *src_top, const uint32_t *src_bottom, int32_t w, int wt, int wb, pixman_fixed_t vx_, pixman_fixed_t unit_x_, pixman_fixed_t max_vx, pixman_bool_t zero_src)
 
static void fast_composite_scaled_bilinear_sse2_8888_8888_cover_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_8888_pad_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_8888_none_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_8888_normal_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void scaled_bilinear_scanline_sse2_8888_8_8888_OVER (uint32_t *dst, const uint8_t *mask, const uint32_t *src_top, const uint32_t *src_bottom, int32_t w, int wt, int wb, pixman_fixed_t vx_, pixman_fixed_t unit_x_, pixman_fixed_t max_vx, pixman_bool_t zero_src)
 
static void fast_composite_scaled_bilinear_sse2_8888_8_8888_cover_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_8_8888_pad_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_8_8888_none_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_8_8888_normal_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void scaled_bilinear_scanline_sse2_8888_n_8888_OVER (uint32_t *dst, const uint32_t *mask, const uint32_t *src_top, const uint32_t *src_bottom, int32_t w, int wt, int wb, pixman_fixed_t vx_, pixman_fixed_t unit_x_, pixman_fixed_t max_vx, pixman_bool_t zero_src)
 
static void fast_composite_scaled_bilinear_sse2_8888_n_8888_cover_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_n_8888_pad_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_n_8888_none_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static void fast_composite_scaled_bilinear_sse2_8888_n_8888_normal_OVER (pixman_implementation_t *imp, pixman_composite_info_t *info)
 
static uint32_tsse2_fetch_x8r8g8b8 (pixman_iter_t *iter, const uint32_t *mask)
 
static uint32_tsse2_fetch_r5g6b5 (pixman_iter_t *iter, const uint32_t *mask)
 
static uint32_tsse2_fetch_a8 (pixman_iter_t *iter, const uint32_t *mask)
 
pixman_implementation_t_pixman_implementation_create_sse2 (pixman_implementation_t *fallback)
 

Variables

static __m128i mask_0080
 
static __m128i mask_00ff
 
static __m128i mask_0101
 
static __m128i mask_ffff
 
static __m128i mask_ff000000
 
static __m128i mask_alpha
 
static __m128i mask_565_r
 
static __m128i mask_565_g1
 
static __m128i mask_565_g2
 
static __m128i mask_565_b
 
static __m128i mask_red
 
static __m128i mask_green
 
static __m128i mask_blue
 
static __m128i mask_565_fix_rb
 
static __m128i mask_565_fix_g
 
static __m128i mask_565_rb
 
static __m128i mask_565_pack_multiplier
 
static const pixman_fast_path_t sse2_fast_paths []
 
static const pixman_iter_info_t sse2_iters []
 

Macro Definition Documentation

◆ BILINEAR_DECLARE_VARIABLES

#define BILINEAR_DECLARE_VARIABLES
Value:
const __m128i xmm_wt = _mm_set_epi16 (wt, wt, wt, wt, wt, wt, wt, wt); \
const __m128i xmm_wb = _mm_set_epi16 (wb, wb, wb, wb, wb, wb, wb, wb); \
const __m128i xmm_addc = _mm_set_epi16 (0, 1, 0, 1, 0, 1, 0, 1); \
const __m128i xmm_ux1 = _mm_set_epi16 (unit_x, -unit_x, unit_x, -unit_x, \
unit_x, -unit_x, unit_x, -unit_x); \
const __m128i xmm_ux4 = _mm_set_epi16 (unit_x * 4, -unit_x * 4, \
unit_x * 4, -unit_x * 4, \
unit_x * 4, -unit_x * 4, \
unit_x * 4, -unit_x * 4); \
const __m128i xmm_zero = _mm_setzero_si128 (); \
__m128i xmm_x = _mm_set_epi16 (vx, -(vx + 1), vx, -(vx + 1), \
vx, -(vx + 1), vx, -(vx + 1))

Definition at line 5615 of file pixman-sse2.c.

◆ BILINEAR_INTERPOLATE_FOUR_PIXELS

#define BILINEAR_INTERPOLATE_FOUR_PIXELS (   pix)
Value:
; \
do { \
__m128i xmm_pix1, xmm_pix2, xmm_pix3, xmm_pix4; \
BILINEAR_INTERPOLATE_ONE_PIXEL_HELPER (xmm_pix1, 0); \
BILINEAR_INTERPOLATE_ONE_PIXEL_HELPER (xmm_pix2, 1); \
BILINEAR_INTERPOLATE_ONE_PIXEL_HELPER (xmm_pix3, 2); \
BILINEAR_INTERPOLATE_ONE_PIXEL_HELPER (xmm_pix4, 3); \
xmm_pix1 = _mm_packs_epi32 (xmm_pix1, xmm_pix2); \
xmm_pix3 = _mm_packs_epi32 (xmm_pix3, xmm_pix4); \
pix = _mm_packus_epi16 (xmm_pix1, xmm_pix3); \
} while(0)

Definition at line 5665 of file pixman-sse2.c.

◆ BILINEAR_INTERPOLATE_ONE_PIXEL

#define BILINEAR_INTERPOLATE_ONE_PIXEL (   pix)
Value:
; \
do { \
__m128i xmm_pix; \
BILINEAR_INTERPOLATE_ONE_PIXEL_HELPER (xmm_pix, -1); \
xmm_pix = _mm_packs_epi32 (xmm_pix, xmm_pix); \
xmm_pix = _mm_packus_epi16 (xmm_pix, xmm_pix); \
pix = _mm_cvtsi128_si32 (xmm_pix); \
} while(0)

Definition at line 5656 of file pixman-sse2.c.

◆ BILINEAR_INTERPOLATE_ONE_PIXEL_HELPER

#define BILINEAR_INTERPOLATE_ONE_PIXEL_HELPER (   pix,
  phase 
)
Value:
do { \
__m128i xmm_wh, xmm_a, xmm_b; \
/* fetch 2x2 pixel block into sse2 registers */ \
__m128i tltr = _mm_loadl_epi64 ((__m128i *)&src_top[vx >> 16]); \
__m128i blbr = _mm_loadl_epi64 ((__m128i *)&src_bottom[vx >> 16]); \
(void)xmm_ux4; /* suppress warning: unused variable 'xmm_ux4' */ \
vx += unit_x; \
/* vertical interpolation */ \
xmm_a = _mm_mullo_epi16 (_mm_unpacklo_epi8 (tltr, xmm_zero), xmm_wt); \
xmm_b = _mm_mullo_epi16 (_mm_unpacklo_epi8 (blbr, xmm_zero), xmm_wb); \
xmm_a = _mm_add_epi16 (xmm_a, xmm_b); \
/* calculate horizontal weights */ \
xmm_wh = _mm_add_epi16 (xmm_addc, _mm_srli_epi16 (xmm_x, \
xmm_x = _mm_add_epi16 (xmm_x, xmm_ux1); \
/* horizontal interpolation */ \
xmm_b = _mm_unpacklo_epi64 (/* any value is fine here */ xmm_b, xmm_a); \
xmm_a = _mm_madd_epi16 (_mm_unpackhi_epi16 (xmm_b, xmm_a), xmm_wh); \
/* shift the result */ \
pix = _mm_srli_epi32 (xmm_a, BILINEAR_INTERPOLATION_BITS * 2); \
} while (0)
static void
Definition: fpif.c:118
#define BILINEAR_INTERPOLATION_BITS
Definition: pixman-private.h:9

Definition at line 5629 of file pixman-sse2.c.

◆ BILINEAR_SKIP_FOUR_PIXELS

#define BILINEAR_SKIP_FOUR_PIXELS ( )
Value:
do { \
vx += unit_x * 4; \
xmm_x = _mm_add_epi16 (xmm_x, xmm_ux4); \
} while(0)

Definition at line 5683 of file pixman-sse2.c.

◆ BILINEAR_SKIP_ONE_PIXEL

#define BILINEAR_SKIP_ONE_PIXEL ( )
Value:
do { \
vx += unit_x; \
xmm_x = _mm_add_epi16 (xmm_x, xmm_ux1); \
} while(0)

Definition at line 5677 of file pixman-sse2.c.

◆ IMAGE_FLAGS

#define IMAGE_FLAGS
Value:
FAST_PATH_BITS_IMAGE | FAST_PATH_SAMPLES_COVER_CLIP_NEAREST)
#define FAST_PATH_SAMPLES_COVER_CLIP_NEAREST
#define FAST_PATH_STANDARD_FLAGS
#define FAST_PATH_ID_TRANSFORM

Definition at line 6450 of file pixman-sse2.c.

◆ PSHUFD_IS_FAST

#define PSHUFD_IS_FAST   0

Definition at line 34 of file pixman-sse2.c.

Function Documentation

◆ _pixman_implementation_create_sse2()

pixman_implementation_t* _pixman_implementation_create_sse2 ( pixman_implementation_t fallback)

◆ combine1()

◆ combine4()

◆ composite_over_8888_0565pixel()

static uint16_t composite_over_8888_0565pixel ( uint32_t  src,
uint16_t  dst 
)
inlinestatic

◆ core_combine_atop_ca_pixel_sse2()

static uint32_t core_combine_atop_ca_pixel_sse2 ( uint32_t  src,
uint32_t  mask,
uint32_t  dst 
)
inlinestatic

◆ core_combine_atop_u_pixel_sse2()

static uint32_t core_combine_atop_u_pixel_sse2 ( uint32_t  src,
uint32_t  dst 
)
inlinestatic

◆ core_combine_in_u_pixel_sse2()

static uint32_t core_combine_in_u_pixel_sse2 ( uint32_t  src,
uint32_t  dst 
)
inlinestatic

◆ core_combine_over_ca_pixel_sse2()

static uint32_t core_combine_over_ca_pixel_sse2 ( uint32_t  src,
uint32_t  mask,
uint32_t  dst 
)
inlinestatic

◆ core_combine_over_reverse_ca_pixel_sse2()

static uint32_t core_combine_over_reverse_ca_pixel_sse2 ( uint32_t  src,
uint32_t  mask,
uint32_t  dst 
)
inlinestatic

◆ core_combine_over_u_pixel_sse2()

◆ core_combine_over_u_sse2_mask()

◆ core_combine_over_u_sse2_no_mask()

◆ core_combine_reverse_atop_ca_pixel_sse2()

static uint32_t core_combine_reverse_atop_ca_pixel_sse2 ( uint32_t  src,
uint32_t  mask,
uint32_t  dst 
)
inlinestatic

◆ core_combine_reverse_atop_u_pixel_sse2()

static uint32_t core_combine_reverse_atop_u_pixel_sse2 ( uint32_t  src,
uint32_t  dst 
)
inlinestatic

◆ core_combine_saturate_u_pixel_sse2()

static uint32_t core_combine_saturate_u_pixel_sse2 ( uint32_t  src,
uint32_t  dst 
)
inlinestatic

◆ core_combine_xor_ca_pixel_sse2()

static uint32_t core_combine_xor_ca_pixel_sse2 ( uint32_t  src,
uint32_t  mask,
uint32_t  dst 
)
inlinestatic

◆ core_combine_xor_u_pixel_sse2()

static uint32_t core_combine_xor_u_pixel_sse2 ( uint32_t  src,
uint32_t  dst 
)
inlinestatic

◆ create_mask_16_128()

◆ create_mask_2x32_128()

◆ expand565_16_1x128()

◆ expand_alpha_1x128()

◆ expand_alpha_2x128()

◆ expand_alpha_rev_1x128()

◆ expand_alpha_rev_2x128()

static void expand_alpha_rev_2x128 ( __m128i  data_lo,
__m128i  data_hi,
__m128i *  alpha_lo,
__m128i *  alpha_hi 
)
inlinestatic

◆ expand_pixel_32_1x128()

◆ expand_pixel_8_1x128()

static __m128i expand_pixel_8_1x128 ( uint8_t  data)
inlinestatic

◆ fast_composite_scaled_bilinear_sse2_8888_8888_cover_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_8888_cover_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5899 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8888_cover_SRC()

static void fast_composite_scaled_bilinear_sse2_8888_8888_cover_SRC ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5742 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8888_none_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_8888_none_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5907 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8888_none_SRC()

static void fast_composite_scaled_bilinear_sse2_8888_8888_none_SRC ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5750 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8888_normal_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_8888_normal_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5911 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8888_normal_SRC()

static void fast_composite_scaled_bilinear_sse2_8888_8888_normal_SRC ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5754 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8888_pad_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_8888_pad_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5903 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8888_pad_SRC()

static void fast_composite_scaled_bilinear_sse2_8888_8888_pad_SRC ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5746 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8_8888_cover_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_8_8888_cover_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 6057 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8_8888_none_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_8_8888_none_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 6065 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8_8888_normal_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_8_8888_normal_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 6069 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_8_8888_pad_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_8_8888_pad_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 6061 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_n_8888_cover_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_n_8888_cover_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 6170 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_n_8888_none_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_n_8888_none_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 6178 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_n_8888_normal_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_n_8888_normal_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 6182 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_8888_n_8888_pad_OVER()

static void fast_composite_scaled_bilinear_sse2_8888_n_8888_pad_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 6174 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_x888_8888_cover_SRC()

static void fast_composite_scaled_bilinear_sse2_x888_8888_cover_SRC ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5806 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_x888_8888_normal_SRC()

static void fast_composite_scaled_bilinear_sse2_x888_8888_normal_SRC ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5814 of file pixman-sse2.c.

◆ fast_composite_scaled_bilinear_sse2_x888_8888_pad_SRC()

static void fast_composite_scaled_bilinear_sse2_x888_8888_pad_SRC ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5810 of file pixman-sse2.c.

◆ fast_composite_scaled_nearest_sse2_8888_8888_cover_OVER()

static void fast_composite_scaled_nearest_sse2_8888_8888_cover_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5425 of file pixman-sse2.c.

◆ fast_composite_scaled_nearest_sse2_8888_8888_none_OVER()

static void fast_composite_scaled_nearest_sse2_8888_8888_none_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5428 of file pixman-sse2.c.

◆ fast_composite_scaled_nearest_sse2_8888_8888_normal_OVER()

static void fast_composite_scaled_nearest_sse2_8888_8888_normal_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5434 of file pixman-sse2.c.

◆ fast_composite_scaled_nearest_sse2_8888_8888_pad_OVER()

static void fast_composite_scaled_nearest_sse2_8888_8888_pad_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5431 of file pixman-sse2.c.

◆ fast_composite_scaled_nearest_sse2_8888_n_8888_cover_OVER()

static void fast_composite_scaled_nearest_sse2_8888_n_8888_cover_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5552 of file pixman-sse2.c.

◆ fast_composite_scaled_nearest_sse2_8888_n_8888_none_OVER()

static void fast_composite_scaled_nearest_sse2_8888_n_8888_none_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5558 of file pixman-sse2.c.

◆ fast_composite_scaled_nearest_sse2_8888_n_8888_normal_OVER()

static void fast_composite_scaled_nearest_sse2_8888_n_8888_normal_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5561 of file pixman-sse2.c.

◆ fast_composite_scaled_nearest_sse2_8888_n_8888_pad_OVER()

static void fast_composite_scaled_nearest_sse2_8888_n_8888_pad_OVER ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 5555 of file pixman-sse2.c.

◆ in_over_1x128()

◆ in_over_2x128()

◆ invert_colors_1x128()

static __m128i invert_colors_1x128 ( __m128i  data)
inlinestatic

Definition at line 449 of file pixman-sse2.c.

References _MM_SHUFFLE, and data.

Referenced by over_rev_non_pre_1x128().

◆ invert_colors_2x128()

static void invert_colors_2x128 ( __m128i  data_lo,
__m128i  data_hi,
__m128i *  inv_lo,
__m128i *  inv_hi 
)
inlinestatic

◆ is_opaque()

◆ is_transparent()

static int is_transparent ( __m128i  x)
inlinestatic

Definition at line 191 of file pixman-sse2.c.

References cordic::x.

Referenced by combine4(), and sse2_composite_over_8888_8888_8888().

◆ is_zero()

◆ load_128_aligned()

static __m128i load_128_aligned ( __m128i *  src)
inlinestatic

Definition at line 364 of file pixman-sse2.c.

References link_confs::src.

Referenced by core_combine_over_u_sse2_mask(), core_combine_over_u_sse2_no_mask(), scaled_bilinear_scanline_sse2_8888_8888_OVER(), scaled_bilinear_scanline_sse2_8888_8_8888_OVER(), scaled_bilinear_scanline_sse2_8888_n_8888_OVER(), scaled_nearest_scanline_sse2_8888_8888_OVER(), scaled_nearest_scanline_sse2_8888_n_8888_OVER(), sse2_combine_add_ca(), sse2_combine_add_u(), sse2_combine_atop_ca(), sse2_combine_atop_reverse_ca(), sse2_combine_atop_reverse_u(), sse2_combine_atop_u(), sse2_combine_in_ca(), sse2_combine_in_reverse_ca(), sse2_combine_in_reverse_u(), sse2_combine_in_u(), sse2_combine_out_ca(), sse2_combine_out_reverse_ca(), sse2_combine_out_reverse_u(), sse2_combine_out_u(), sse2_combine_over_ca(), sse2_combine_over_reverse_ca(), sse2_combine_over_reverse_u(), sse2_combine_saturate_u(), sse2_combine_xor_ca(), sse2_combine_xor_u(), sse2_composite_add_n_8(), sse2_composite_add_n_8888(), sse2_composite_add_n_8888_8888_ca(), sse2_composite_add_n_8_8(), sse2_composite_add_n_8_8888(), sse2_composite_in_8_8(), sse2_composite_in_n_8(), sse2_composite_in_n_8_8(), sse2_composite_over_8888_0565(), sse2_composite_over_8888_8888_8888(), sse2_composite_over_8888_8_8888(), sse2_composite_over_8888_n_8888(), sse2_composite_over_n_0565(), sse2_composite_over_n_8888(), sse2_composite_over_n_8888_0565_ca(), sse2_composite_over_n_8888_8888_ca(), sse2_composite_over_n_8_0565(), sse2_composite_over_n_8_8888(), sse2_composite_over_pixbuf_0565(), sse2_composite_over_pixbuf_8888(), sse2_composite_over_reverse_n_8888(), sse2_composite_over_x888_8_8888(), and sse2_composite_over_x888_n_8888().

◆ load_128_unaligned()

◆ load_32_1x128()

static __m128i load_32_1x128 ( uint32_t  data)
inlinestatic

◆ negate_1x128()

◆ negate_2x128()

static void negate_2x128 ( __m128i  data_lo,
__m128i  data_hi,
__m128i *  neg_lo,
__m128i *  neg_hi 
)
inlinestatic

◆ over_1x128()

◆ over_2x128()

◆ over_rev_non_pre_1x128()

static __m128i over_rev_non_pre_1x128 ( __m128i  src,
__m128i  dst 
)
inlinestatic

◆ over_rev_non_pre_2x128()

static void over_rev_non_pre_2x128 ( __m128i  src_lo,
__m128i  src_hi,
__m128i *  dst_lo,
__m128i *  dst_hi 
)
inlinestatic

◆ pack_1x128_32()

static uint32_t pack_1x128_32 ( __m128i  data)
inlinestatic

Definition at line 480 of file pixman-sse2.c.

References data.

Referenced by combine1(), composite_over_8888_0565pixel(), core_combine_atop_ca_pixel_sse2(), core_combine_atop_u_pixel_sse2(), core_combine_in_u_pixel_sse2(), core_combine_over_ca_pixel_sse2(), core_combine_over_reverse_ca_pixel_sse2(), core_combine_over_u_pixel_sse2(), core_combine_reverse_atop_ca_pixel_sse2(), core_combine_reverse_atop_u_pixel_sse2(), core_combine_saturate_u_pixel_sse2(), core_combine_xor_ca_pixel_sse2(), core_combine_xor_u_pixel_sse2(), scaled_bilinear_scanline_sse2_8888_8_8888_OVER(), scaled_bilinear_scanline_sse2_8888_n_8888_OVER(), scaled_nearest_scanline_sse2_8888_n_8888_OVER(), sse2_combine_add_ca(), sse2_combine_in_ca(), sse2_combine_in_reverse_ca(), sse2_combine_out_ca(), sse2_combine_out_reverse_ca(), sse2_combine_out_reverse_u(), sse2_combine_out_u(), sse2_combine_src_ca(), sse2_composite_add_n_8888_8888_ca(), sse2_composite_add_n_8_8(), sse2_composite_add_n_8_8888(), sse2_composite_in_8_8(), sse2_composite_in_n_8(), sse2_composite_in_n_8_8(), sse2_composite_over_8888_8888_8888(), sse2_composite_over_8888_8_8888(), sse2_composite_over_8888_n_8888(), sse2_composite_over_n_0565(), sse2_composite_over_n_8888(), sse2_composite_over_n_8888_0565_ca(), sse2_composite_over_n_8888_8888_ca(), sse2_composite_over_n_8_0565(), sse2_composite_over_n_8_8888(), sse2_composite_over_pixbuf_0565(), sse2_composite_over_pixbuf_8888(), sse2_composite_over_reverse_n_8888(), sse2_composite_over_x888_8_8888(), sse2_composite_over_x888_n_8888(), and sse2_composite_src_n_8_8888().

◆ pack_2x128_128()

static __m128i pack_2x128_128 ( __m128i  lo,
__m128i  hi 
)
inlinestatic

◆ pack_565_2packedx128_128()

static __m128i pack_565_2packedx128_128 ( __m128i  lo,
__m128i  hi 
)
inlinestatic

Definition at line 130 of file pixman-sse2.c.

References mask_565_pack_multiplier, mask_565_rb, mask_green, t0, and t1.

Referenced by sse2_composite_src_x888_0565().

◆ pack_565_2x128_128()

static __m128i pack_565_2x128_128 ( __m128i  lo,
__m128i  hi 
)
inlinestatic

Definition at line 153 of file pixman-sse2.c.

References b, data, g2, mask_565_b, mask_565_g1, mask_565_g2, mask_565_r, pack_2x128_128(), and r.

Referenced by pack_565_4x128_128().

◆ pack_565_32_16()

◆ pack_565_4x128_128()

static __m128i pack_565_4x128_128 ( __m128i *  xmm0,
__m128i *  xmm1,
__m128i *  xmm2,
__m128i *  xmm3 
)
inlinestatic

◆ pix_add_multiply_1x128()

static __m128i pix_add_multiply_1x128 ( __m128i *  src,
__m128i *  alpha_dst,
__m128i *  dst,
__m128i *  alpha_src 
)
inlinestatic

◆ pix_add_multiply_2x128()

static void pix_add_multiply_2x128 ( __m128i *  src_lo,
__m128i *  src_hi,
__m128i *  alpha_dst_lo,
__m128i *  alpha_dst_hi,
__m128i *  dst_lo,
__m128i *  dst_hi,
__m128i *  alpha_src_lo,
__m128i *  alpha_src_hi,
__m128i *  ret_lo,
__m128i *  ret_hi 
)
inlinestatic

◆ pix_multiply_1x128()

◆ pix_multiply_2x128()

◆ save_128_aligned()

static void save_128_aligned ( __m128i *  dst,
__m128i  data 
)
inlinestatic

Definition at line 388 of file pixman-sse2.c.

References data, and link_confs::dst.

Referenced by core_combine_over_u_sse2_mask(), core_combine_over_u_sse2_no_mask(), scaled_bilinear_scanline_sse2_8888_8888_OVER(), scaled_bilinear_scanline_sse2_8888_8_8888_OVER(), scaled_bilinear_scanline_sse2_8888_n_8888_OVER(), scaled_nearest_scanline_sse2_8888_8888_OVER(), scaled_nearest_scanline_sse2_8888_n_8888_OVER(), sse2_blt(), sse2_combine_add_ca(), sse2_combine_add_u(), sse2_combine_atop_ca(), sse2_combine_atop_reverse_ca(), sse2_combine_atop_reverse_u(), sse2_combine_atop_u(), sse2_combine_in_ca(), sse2_combine_in_reverse_ca(), sse2_combine_in_reverse_u(), sse2_combine_in_u(), sse2_combine_out_ca(), sse2_combine_out_reverse_ca(), sse2_combine_out_reverse_u(), sse2_combine_out_u(), sse2_combine_over_ca(), sse2_combine_over_reverse_ca(), sse2_combine_over_reverse_u(), sse2_combine_saturate_u(), sse2_combine_src_ca(), sse2_combine_xor_ca(), sse2_combine_xor_u(), sse2_composite_add_n_8(), sse2_composite_add_n_8888(), sse2_composite_add_n_8888_8888_ca(), sse2_composite_add_n_8_8(), sse2_composite_add_n_8_8888(), sse2_composite_in_8_8(), sse2_composite_in_n_8(), sse2_composite_in_n_8_8(), sse2_composite_over_8888_0565(), sse2_composite_over_8888_8888_8888(), sse2_composite_over_8888_8_8888(), sse2_composite_over_8888_n_8888(), sse2_composite_over_n_0565(), sse2_composite_over_n_8888(), sse2_composite_over_n_8888_0565_ca(), sse2_composite_over_n_8888_8888_ca(), sse2_composite_over_n_8_0565(), sse2_composite_over_n_8_8888(), sse2_composite_over_pixbuf_0565(), sse2_composite_over_pixbuf_8888(), sse2_composite_over_reverse_n_8888(), sse2_composite_over_x888_8_8888(), sse2_composite_over_x888_n_8888(), sse2_composite_src_n_8_8888(), sse2_composite_src_x888_0565(), sse2_composite_src_x888_8888(), sse2_fetch_r5g6b5(), sse2_fetch_x8r8g8b8(), and sse2_fill().

◆ save_128_unaligned()

static void save_128_unaligned ( __m128i *  dst,
__m128i  data 
)
inlinestatic

Definition at line 396 of file pixman-sse2.c.

References data, and link_confs::dst.

◆ save_128_write_combining()

static void save_128_write_combining ( __m128i *  dst,
__m128i  data 
)
inlinestatic

Definition at line 380 of file pixman-sse2.c.

References data, and link_confs::dst.

◆ scaled_bilinear_scanline_sse2_8888_8888_OVER()

◆ scaled_bilinear_scanline_sse2_8888_8888_SRC()

static void scaled_bilinear_scanline_sse2_8888_8888_SRC ( uint32_t dst,
const uint32_t mask,
const uint32_t src_top,
const uint32_t src_bottom,
int32_t  w,
int  wt,
int  wb,
pixman_fixed_t  vx_,
pixman_fixed_t  unit_x_,
pixman_fixed_t  max_vx,
pixman_bool_t  zero_src 
)
inlinestatic

◆ scaled_bilinear_scanline_sse2_8888_8_8888_OVER()

◆ scaled_bilinear_scanline_sse2_8888_n_8888_OVER()

◆ scaled_bilinear_scanline_sse2_x888_8888_SRC()

static void scaled_bilinear_scanline_sse2_x888_8888_SRC ( uint32_t dst,
const uint32_t mask,
const uint32_t src_top,
const uint32_t src_bottom,
int32_t  w,
int  wt,
int  wb,
pixman_fixed_t  vx_,
pixman_fixed_t  unit_x_,
pixman_fixed_t  max_vx,
pixman_bool_t  zero_src 
)
inlinestatic

◆ scaled_nearest_scanline_sse2_8888_8888_OVER()

static void scaled_nearest_scanline_sse2_8888_8888_OVER ( uint32_t pd,
const uint32_t ps,
int32_t  w,
pixman_fixed_t  vx,
pixman_fixed_t  unit_x,
pixman_fixed_t  src_width_fixed,
pixman_bool_t  fully_transparent_src 
)
inlinestatic

◆ scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_cover_OVER_wrapper()

static void scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_cover_OVER_wrapper ( const uint8_t mask,
uint32_t dst,
const uint32_t src,
int32_t  w,
pixman_fixed_t  vx,
pixman_fixed_t  unit_x,
pixman_fixed_t  max_vx,
pixman_bool_t  fully_transparent_src 
)
inlinestatic

Definition at line 5425 of file pixman-sse2.c.

◆ scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_none_OVER_wrapper()

static void scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_none_OVER_wrapper ( const uint8_t mask,
uint32_t dst,
const uint32_t src,
int32_t  w,
pixman_fixed_t  vx,
pixman_fixed_t  unit_x,
pixman_fixed_t  max_vx,
pixman_bool_t  fully_transparent_src 
)
inlinestatic

Definition at line 5428 of file pixman-sse2.c.

◆ scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_normal_OVER_wrapper()

static void scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_normal_OVER_wrapper ( const uint8_t mask,
uint32_t dst,
const uint32_t src,
int32_t  w,
pixman_fixed_t  vx,
pixman_fixed_t  unit_x,
pixman_fixed_t  max_vx,
pixman_bool_t  fully_transparent_src 
)
inlinestatic

Definition at line 5434 of file pixman-sse2.c.

◆ scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_pad_OVER_wrapper()

static void scaled_nearest_scanline_sse2_8888_8888_OVER_sse2_8888_8888_pad_OVER_wrapper ( const uint8_t mask,
uint32_t dst,
const uint32_t src,
int32_t  w,
pixman_fixed_t  vx,
pixman_fixed_t  unit_x,
pixman_fixed_t  max_vx,
pixman_bool_t  fully_transparent_src 
)
inlinestatic

Definition at line 5431 of file pixman-sse2.c.

◆ scaled_nearest_scanline_sse2_8888_n_8888_OVER()

◆ sse2_blt()

static pixman_bool_t sse2_blt ( pixman_implementation_t imp,
uint32_t src_bits,
uint32_t dst_bits,
int  src_stride,
int  dst_stride,
int  src_bpp,
int  dst_bpp,
int  src_x,
int  src_y,
int  dest_x,
int  dest_y,
int  width,
int  height 
)
static

◆ sse2_combine_add_ca()

◆ sse2_combine_add_u()

static void sse2_combine_add_u ( pixman_implementation_t imp,
pixman_op_t  op,
uint32_t dst,
const uint32_t src,
const uint32_t mask,
int  width 
)
inlinestatic

◆ sse2_combine_atop_ca()

◆ sse2_combine_atop_reverse_ca()

◆ sse2_combine_atop_reverse_u()

◆ sse2_combine_atop_u()

◆ sse2_combine_in_ca()

◆ sse2_combine_in_reverse_ca()

◆ sse2_combine_in_reverse_u()

◆ sse2_combine_in_u()

◆ sse2_combine_out_ca()

◆ sse2_combine_out_reverse_ca()

◆ sse2_combine_out_reverse_u()

◆ sse2_combine_out_u()

◆ sse2_combine_over_ca()

◆ sse2_combine_over_reverse_ca()

◆ sse2_combine_over_reverse_u()

◆ sse2_combine_over_u()

static void sse2_combine_over_u ( pixman_implementation_t imp,
pixman_op_t  op,
uint32_t pd,
const uint32_t ps,
const uint32_t pm,
int  w 
)
inlinestatic

◆ sse2_combine_saturate_u()

static void sse2_combine_saturate_u ( pixman_implementation_t imp,
pixman_op_t  op,
uint32_t pd,
const uint32_t ps,
const uint32_t pm,
int  w 
)
static

◆ sse2_combine_src_ca()

◆ sse2_combine_xor_ca()

◆ sse2_combine_xor_u()

◆ sse2_composite_add_8888_8888()

◆ sse2_composite_add_8_8()

◆ sse2_composite_add_n_8()

◆ sse2_composite_add_n_8888()

◆ sse2_composite_add_n_8888_8888_ca()

◆ sse2_composite_add_n_8_8()

◆ sse2_composite_add_n_8_8888()

◆ sse2_composite_copy_area()

static void sse2_composite_copy_area ( pixman_implementation_t imp,
pixman_composite_info_t info 
)
static

Definition at line 4814 of file pixman-sse2.c.

References height, info, PIXMAN_COMPOSITE_ARGS, PIXMAN_FORMAT_BPP, sse2_blt(), and width.

◆ sse2_composite_in_8_8()

◆ sse2_composite_in_n_8()

◆ sse2_composite_in_n_8_8()

◆ sse2_composite_over_8888_0565()

◆ sse2_composite_over_8888_8888()

◆ sse2_composite_over_8888_8888_8888()

◆ sse2_composite_over_8888_8_8888()

◆ sse2_composite_over_8888_n_8888()

◆ sse2_composite_over_n_0565()

◆ sse2_composite_over_n_8888()

◆ sse2_composite_over_n_8888_0565_ca()

◆ sse2_composite_over_n_8888_8888_ca()

◆ sse2_composite_over_n_8_0565()

◆ sse2_composite_over_n_8_8888()

◆ sse2_composite_over_pixbuf_0565()

◆ sse2_composite_over_pixbuf_8888()

◆ sse2_composite_over_reverse_n_8888()

◆ sse2_composite_over_x888_8_8888()

◆ sse2_composite_over_x888_n_8888()

◆ sse2_composite_src_n_8_8888()

◆ sse2_composite_src_x888_0565()

◆ sse2_composite_src_x888_8888()

◆ sse2_fetch_a8()

◆ sse2_fetch_r5g6b5()

◆ sse2_fetch_x8r8g8b8()

◆ sse2_fill()

static pixman_bool_t sse2_fill ( pixman_implementation_t imp,
uint32_t bits,
int  stride,
int  bpp,
int  x,
int  y,
int  width,
int  height,
uint32_t  filler 
)
static

◆ unpack_128_2x128()

static void unpack_128_2x128 ( __m128i  data,
__m128i *  data_lo,
__m128i *  data_hi 
)
inlinestatic

Definition at line 69 of file pixman-sse2.c.

References data.

Referenced by combine4(), core_combine_over_u_sse2_mask(), core_combine_over_u_sse2_no_mask(), scaled_bilinear_scanline_sse2_8888_8888_OVER(), scaled_bilinear_scanline_sse2_8888_8_8888_OVER(), scaled_bilinear_scanline_sse2_8888_n_8888_OVER(), scaled_nearest_scanline_sse2_8888_8888_OVER(), scaled_nearest_scanline_sse2_8888_n_8888_OVER(), sse2_combine_add_ca(), sse2_combine_atop_ca(), sse2_combine_atop_reverse_ca(), sse2_combine_atop_reverse_u(), sse2_combine_atop_u(), sse2_combine_in_ca(), sse2_combine_in_reverse_ca(), sse2_combine_in_reverse_u(), sse2_combine_in_u(), sse2_combine_out_ca(), sse2_combine_out_reverse_ca(), sse2_combine_out_reverse_u(), sse2_combine_out_u(), sse2_combine_over_ca(), sse2_combine_over_reverse_ca(), sse2_combine_over_reverse_u(), sse2_combine_src_ca(), sse2_combine_xor_ca(), sse2_combine_xor_u(), sse2_composite_add_n_8888_8888_ca(), sse2_composite_add_n_8_8(), sse2_composite_add_n_8_8888(), sse2_composite_in_8_8(), sse2_composite_in_n_8(), sse2_composite_in_n_8_8(), sse2_composite_over_8888_0565(), sse2_composite_over_8888_8888_8888(), sse2_composite_over_8888_8_8888(), sse2_composite_over_8888_n_8888(), sse2_composite_over_n_8888(), sse2_composite_over_n_8888_0565_ca(), sse2_composite_over_n_8888_8888_ca(), sse2_composite_over_n_8_0565(), sse2_composite_over_n_8_8888(), sse2_composite_over_pixbuf_0565(), sse2_composite_over_pixbuf_8888(), sse2_composite_over_reverse_n_8888(), sse2_composite_over_x888_8_8888(), sse2_composite_over_x888_n_8888(), sse2_composite_src_n_8_8888(), and unpack_565_128_4x128().

◆ unpack_32_1x128()

static __m128i unpack_32_1x128 ( uint32_t  data)
inlinestatic

Definition at line 63 of file pixman-sse2.c.

References data.

Referenced by combine1(), composite_over_8888_0565pixel(), core_combine_atop_ca_pixel_sse2(), core_combine_atop_u_pixel_sse2(), core_combine_in_u_pixel_sse2(), core_combine_over_ca_pixel_sse2(), core_combine_over_reverse_ca_pixel_sse2(), core_combine_over_u_pixel_sse2(), core_combine_reverse_atop_ca_pixel_sse2(), core_combine_reverse_atop_u_pixel_sse2(), core_combine_saturate_u_pixel_sse2(), core_combine_xor_ca_pixel_sse2(), core_combine_xor_u_pixel_sse2(), expand_pixel_32_1x128(), expand_pixel_8_1x128(), scaled_bilinear_scanline_sse2_8888_8_8888_OVER(), scaled_bilinear_scanline_sse2_8888_n_8888_OVER(), scaled_nearest_scanline_sse2_8888_n_8888_OVER(), sse2_combine_add_ca(), sse2_combine_in_ca(), sse2_combine_in_reverse_ca(), sse2_combine_out_ca(), sse2_combine_out_reverse_ca(), sse2_combine_out_reverse_u(), sse2_combine_out_u(), sse2_combine_src_ca(), sse2_composite_add_n_8888_8888_ca(), sse2_composite_add_n_8_8(), sse2_composite_add_n_8_8888(), sse2_composite_in_8_8(), sse2_composite_in_n_8(), sse2_composite_in_n_8_8(), sse2_composite_over_8888_8888_8888(), sse2_composite_over_8888_8_8888(), sse2_composite_over_8888_n_8888(), sse2_composite_over_n_8888(), sse2_composite_over_n_8888_0565_ca(), sse2_composite_over_n_8888_8888_ca(), sse2_composite_over_n_8_0565(), sse2_composite_over_n_8_8888(), sse2_composite_over_pixbuf_0565(), sse2_composite_over_pixbuf_8888(), sse2_composite_over_reverse_n_8888(), sse2_composite_over_x888_8_8888(), sse2_composite_over_x888_n_8888(), and sse2_composite_src_n_8_8888().

◆ unpack_565_128_4x128()

static void unpack_565_128_4x128 ( __m128i  data,
__m128i *  data0,
__m128i *  data1,
__m128i *  data2,
__m128i *  data3 
)
inlinestatic

◆ unpack_565_to_8888()

static __m128i unpack_565_to_8888 ( __m128i  lo)
inlinestatic

Variable Documentation

◆ mask_0080

__m128i mask_0080
static

◆ mask_00ff

◆ mask_0101

__m128i mask_0101
static

◆ mask_565_b

__m128i mask_565_b
static

Definition at line 51 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2(), and pack_565_2x128_128().

◆ mask_565_fix_g

__m128i mask_565_fix_g
static

Definition at line 57 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2(), and unpack_565_to_8888().

◆ mask_565_fix_rb

__m128i mask_565_fix_rb
static

Definition at line 56 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2(), and unpack_565_to_8888().

◆ mask_565_g1

__m128i mask_565_g1
static

Definition at line 50 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2(), and pack_565_2x128_128().

◆ mask_565_g2

__m128i mask_565_g2
static

Definition at line 50 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2(), and pack_565_2x128_128().

◆ mask_565_pack_multiplier

__m128i mask_565_pack_multiplier
static

Definition at line 60 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2(), and pack_565_2packedx128_128().

◆ mask_565_r

__m128i mask_565_r
static

Definition at line 49 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2(), and pack_565_2x128_128().

◆ mask_565_rb

__m128i mask_565_rb
static

Definition at line 59 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2(), and pack_565_2packedx128_128().

◆ mask_alpha

__m128i mask_alpha
static

◆ mask_blue

__m128i mask_blue
static

Definition at line 54 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2(), and unpack_565_to_8888().

◆ mask_ff000000

◆ mask_ffff

__m128i mask_ffff
static

Definition at line 45 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2().

◆ mask_green

__m128i mask_green
static

◆ mask_red

__m128i mask_red
static

Definition at line 52 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2(), and unpack_565_to_8888().

◆ sse2_fast_paths

const pixman_fast_path_t sse2_fast_paths[]
static

Definition at line 6184 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2().

◆ sse2_iters

const pixman_iter_info_t sse2_iters[]
static
Initial value:
=
{
{ PIXMAN_x8r8g8b8, ( ( (1 << 2) | (1 << 5) | (1 << 1) | (1 << 6) ) | (1 << 0) | (1 << 25) | (1 << 23) ) , ITER_NARROW,
},
{ PIXMAN_r5g6b5, ( ( (1 << 2) | (1 << 5) | (1 << 1) | (1 << 6) ) | (1 << 0) | (1 << 25) | (1 << 23) ) , ITER_NARROW,
},
{ PIXMAN_a8, ( ( (1 << 2) | (1 << 5) | (1 << 1) | (1 << 6) ) | (1 << 0) | (1 << 25) | (1 << 23) ) , ITER_NARROW,
},
{ ((( 0 ) << 24) | (( 0 ) << 16) | (( 0 ) << 12) | (( 0 ) << 8) | (( 0 ) << 4) | (( 0 ))) },
}
#define NULL
Definition: ftobjs.h:61
void _pixman_iter_init_bits_stride(pixman_iter_t *iter, const pixman_iter_info_t *info)
Definition: pixman-utils.c:227
@ ITER_NARROW
static uint32_t * sse2_fetch_a8(pixman_iter_t *iter, const uint32_t *mask)
Definition: pixman-sse2.c:6405
static uint32_t * sse2_fetch_x8r8g8b8(pixman_iter_t *iter, const uint32_t *mask)
Definition: pixman-sse2.c:6323
static uint32_t * sse2_fetch_r5g6b5(pixman_iter_t *iter, const uint32_t *mask)
Definition: pixman-sse2.c:6359
@ PIXMAN_x8r8g8b8
Definition: pixman.h:879
@ PIXMAN_a8
Definition: pixman.h:913
@ PIXMAN_r5g6b5
Definition: pixman.h:900

Definition at line 6454 of file pixman-sse2.c.

Referenced by _pixman_implementation_create_sse2().