void test_vst3u8 (void) { uint8_t *arg0_uint8_t; uint8x8x3_t arg1_uint8x8x3_t; vst3_u8 (arg0_uint8_t, arg1_uint8x8x3_t); }
/* Expands a palettized row into RGB format. */ int png_do_expand_palette_neon_rgb(png_structrp png_ptr, png_row_infop row_info, png_const_bytep row, png_bytepp ssp, png_bytepp ddp) { png_uint_32 row_width = row_info->width; png_const_bytep palette = (png_const_bytep)png_ptr->palette; const png_uint_32 pixels_per_chunk = 8; int i; if (row_width <= pixels_per_chunk) return 0; /* Seeking this back by 8 pixels x 3 bytes. */ *ddp = *ddp - ((pixels_per_chunk * sizeof(png_color)) - 1); for (i = 0; i < row_width; i += pixels_per_chunk) { uint8x8x3_t cur; png_bytep sp = *ssp - i, dp = *ddp - ((i << 1) + i); cur = vld3_dup_u8(palette + sizeof(png_color) * (*(sp - 7))); cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 6)), cur, 1); cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 5)), cur, 2); cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 4)), cur, 3); cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 3)), cur, 4); cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 2)), cur, 5); cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 1)), cur, 6); cur = vld3_lane_u8(palette + sizeof(png_color) * (*(sp - 0)), cur, 7); vst3_u8((void *)dp, cur); } if (i != row_width) { /* Remove the amount that wasn't processed. */ i -= pixels_per_chunk; } /* Decrement output pointers. */ *ssp = *ssp - i; *ddp = *ddp - ((i << 1) + i); return i; }
static void store_pixel_block(unsigned char* dst, PixelBlock& pblock, uint8x8_t const& r, uint8x8_t const& g, uint8x8_t const& b) { pblock.val[0] = b; pblock.val[1] = g; pblock.val[2] = r; vst3_u8(dst, pblock); }
inline void vst3(u8 * ptr, const uint8x8x3_t & v) { return vst3_u8(ptr, v); }