| |
| .function cogorc_memcpy_2d |
| .flags 2d |
| .dest 1 d1 |
| .source 1 s1 |
| |
| copyb d1, s1 |
| |
| |
| .function cogorc_downsample_horiz_cosite_1tap |
| .dest 1 d1 |
| .source 2 s1 |
| |
| select0wb d1, s1 |
| |
| |
| .function cogorc_downsample_horiz_cosite_3tap |
| .dest 1 d1 |
| .source 2 s1 |
| .source 2 s2 |
| .temp 1 t1 |
| .temp 1 t2 |
| .temp 1 t3 |
| .temp 2 t4 |
| .temp 2 t5 |
| .temp 2 t6 |
| |
| copyw t4, s1 |
| select0wb t1, t4 |
| select1wb t2, t4 |
| select0wb t3, s2 |
| convubw t4, t1 |
| convubw t5, t2 |
| convubw t6, t3 |
| mullw t5, t5, 2 |
| addw t4, t4, t6 |
| addw t4, t4, t5 |
| addw t4, t4, 2 |
| shrsw t4, t4, 2 |
| convsuswb d1, t4 |
| |
| |
| .function cogorc_downsample_420_jpeg |
| .dest 1 d1 |
| .source 2 s1 |
| .source 2 s2 |
| .temp 2 t1 |
| .temp 1 t2 |
| .temp 1 t3 |
| .temp 1 t4 |
| .temp 1 t5 |
| |
| copyw t1, s1 |
| select0wb t2, t1 |
| select1wb t3, t1 |
| avgub t2, t2, t3 |
| copyw t1, s2 |
| select0wb t4, t1 |
| select1wb t5, t1 |
| avgub t4, t4, t5 |
| avgub d1, t2, t4 |
| |
| |
| .function cogorc_downsample_vert_halfsite_2tap |
| .dest 1 d1 |
| .source 1 s1 |
| .source 1 s2 |
| |
| avgub d1, s1, s2 |
| |
| |
| .function cogorc_downsample_vert_cosite_3tap |
| .dest 1 d1 |
| .source 1 s1 |
| .source 1 s2 |
| .source 1 s3 |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 2 t3 |
| |
| convubw t1, s1 |
| convubw t2, s2 |
| convubw t3, s3 |
| mullw t2, t2, 2 |
| addw t1, t1, t3 |
| addw t1, t1, t2 |
| addw t1, t1, 2 |
| shrsw t1, t1, 2 |
| convsuswb d1, t1 |
| |
| |
| |
| .function cogorc_downsample_vert_halfsite_4tap |
| .dest 1 d1 |
| .source 1 s1 |
| .source 1 s2 |
| .source 1 s3 |
| .source 1 s4 |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 2 t3 |
| .temp 2 t4 |
| |
| convubw t1, s1 |
| convubw t2, s2 |
| convubw t3, s3 |
| convubw t4, s4 |
| addw t2, t2, t3 |
| mullw t2, t2, 26 |
| addw t1, t1, t4 |
| mullw t1, t1, 6 |
| addw t2, t2, t1 |
| addw t2, t2, 32 |
| shrsw t2, t2, 6 |
| convsuswb d1, t2 |
| |
| |
| .function cogorc_upsample_horiz_cosite_1tap |
| .dest 2 d1 guint8 |
| .source 1 s1 |
| .temp 1 t1 |
| |
| copyb t1, s1 |
| mergebw d1, t1, t1 |
| |
| |
| .function cogorc_upsample_horiz_cosite |
| .dest 2 d1 guint8 |
| .source 1 s1 |
| .source 1 s2 |
| .temp 1 t1 |
| .temp 1 t2 |
| |
| copyb t1, s1 |
| avgub t2, t1, s2 |
| mergebw d1, t1, t2 |
| |
| |
| .function cogorc_upsample_vert_avgub |
| .dest 1 d1 |
| .source 1 s1 |
| .source 1 s2 |
| |
| avgub d1, s1, s2 |
| |
| |
| |
| |
| .function orc_unpack_yuyv_y |
| .dest 1 d1 |
| .source 2 s1 |
| |
| select0wb d1, s1 |
| |
| |
| .function orc_unpack_yuyv_u |
| .dest 1 d1 |
| .source 4 s1 |
| .temp 2 t1 |
| |
| select0lw t1, s1 |
| select1wb d1, t1 |
| |
| |
| .function orc_unpack_yuyv_v |
| .dest 1 d1 |
| .source 4 s1 |
| .temp 2 t1 |
| |
| select1lw t1, s1 |
| select1wb d1, t1 |
| |
| |
| .function orc_pack_yuyv |
| .dest 4 d1 |
| .source 2 s1 guint8 |
| .source 1 s2 |
| .source 1 s3 |
| .temp 1 t1 |
| .temp 1 t2 |
| .temp 2 t3 |
| .temp 2 t4 |
| .temp 2 t5 |
| |
| copyw t5, s1 |
| select0wb t1, t5 |
| select1wb t2, t5 |
| mergebw t3, t1, s2 |
| mergebw t4, t2, s3 |
| mergewl d1, t3, t4 |
| |
| |
| .function orc_unpack_uyvy_y |
| .dest 1 d1 |
| .source 2 s1 |
| |
| select1wb d1, s1 |
| |
| |
| .function orc_unpack_uyvy_u |
| .dest 1 d1 |
| .source 4 s1 |
| .temp 2 t1 |
| |
| select0lw t1, s1 |
| select0wb d1, t1 |
| |
| |
| .function orc_unpack_uyvy_v |
| .dest 1 d1 |
| .source 4 s1 |
| .temp 2 t1 |
| |
| select1lw t1, s1 |
| select0wb d1, t1 |
| |
| |
| .function orc_pack_uyvy |
| .dest 4 d1 |
| .source 2 s1 guint8 |
| .source 1 s2 |
| .source 1 s3 |
| .temp 1 t1 |
| .temp 1 t2 |
| .temp 2 t3 |
| .temp 2 t4 |
| .temp 2 t5 |
| |
| copyw t5, s1 |
| select0wb t1, t5 |
| select1wb t2, t5 |
| mergebw t3, s2, t1 |
| mergebw t4, s3, t2 |
| mergewl d1, t3, t4 |
| |
| |
| .function orc_addc_convert_u8_s16 |
| .dest 1 d1 |
| .source 2 s1 gint16 |
| .temp 2 t1 |
| |
| addw t1, s1, 128 |
| convsuswb d1, t1 |
| |
| |
| .function orc_subc_convert_s16_u8 |
| .dest 2 d1 gint16 |
| .source 1 s1 |
| .temp 2 t1 |
| |
| convubw t1, s1 |
| subw d1, t1, 128 |
| |
| |
| .function orc_splat_u8_ns |
| .dest 1 d1 |
| .param 1 p1 |
| |
| copyb d1, p1 |
| |
| |
| .function orc_splat_s16_ns |
| .dest 2 d1 gint16 |
| .param 2 p1 |
| |
| copyw d1, p1 |
| |
| |
| .function orc_matrix2_u8 |
| .dest 1 d1 guint8 |
| .source 1 s1 guint8 |
| .source 1 s2 guint8 |
| .param 2 p1 |
| .param 2 p2 |
| .param 2 p3 |
| .temp 2 t1 |
| .temp 2 t2 |
| |
| convubw t1, s1 |
| mullw t1, t1, p1 |
| convubw t2, s2 |
| mullw t2, t2, p2 |
| addw t1, t1, t2 |
| addw t1, t1, p3 |
| shrsw t1, t1, 6 |
| convsuswb d1, t1 |
| |
| |
| .function orc_matrix2_11_u8 |
| .dest 1 d1 guint8 |
| .source 1 s1 guint8 |
| .source 1 s2 guint8 |
| .param 2 p1 |
| .param 2 p2 |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 2 t3 |
| .temp 2 t4 |
| |
| convubw t1, s1 |
| subw t1, t1, 16 |
| mullw t3, t1, p1 |
| convubw t2, s2 |
| subw t2, t2, 128 |
| mullw t4, t2, p2 |
| addw t3, t3, t4 |
| addw t3, t3, 128 |
| shrsw t3, t3, 8 |
| addw t3, t3, t1 |
| addw t3, t3, t2 |
| convsuswb d1, t3 |
| |
| |
| .function orc_matrix2_12_u8 |
| .dest 1 d1 guint8 |
| .source 1 s1 guint8 |
| .source 1 s2 guint8 |
| .param 2 p1 |
| .param 2 p2 |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 2 t3 |
| .temp 2 t4 |
| |
| convubw t1, s1 |
| subw t1, t1, 16 |
| mullw t3, t1, p1 |
| convubw t2, s2 |
| subw t2, t2, 128 |
| mullw t4, t2, p2 |
| addw t3, t3, t4 |
| addw t3, t3, 128 |
| shrsw t3, t3, 8 |
| addw t3, t3, t1 |
| addw t3, t3, t2 |
| addw t3, t3, t2 |
| convsuswb d1, t3 |
| |
| |
| .function orc_matrix3_u8 |
| .dest 1 d1 guint8 |
| .source 1 s1 guint8 |
| .source 1 s2 guint8 |
| .source 1 s3 guint8 |
| .param 2 p1 |
| .param 2 p2 |
| .param 2 p3 |
| .param 2 p4 |
| .temp 2 t1 |
| .temp 2 t2 |
| |
| convubw t1, s1 |
| mullw t1, t1, p1 |
| convubw t2, s2 |
| mullw t2, t2, p2 |
| addw t1, t1, t2 |
| convubw t2, s3 |
| mullw t2, t2, p3 |
| addw t1, t1, t2 |
| addw t1, t1, p4 |
| shrsw t1, t1, 6 |
| convsuswb d1, t1 |
| |
| |
| .function orc_matrix3_100_u8 |
| .dest 1 d1 guint8 |
| .source 1 s1 guint8 |
| .source 1 s2 guint8 |
| .source 1 s3 guint8 |
| .param 2 p1 |
| .param 2 p2 |
| .param 2 p3 |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 2 t3 |
| #.temp 2 t4 |
| |
| convubw t1, s1 |
| subw t1, t1, 16 |
| mullw t3, t1, p1 |
| convubw t2, s2 |
| subw t2, t2, 128 |
| mullw t2, t2, p2 |
| addw t3, t3, t2 |
| convubw t2, s3 |
| subw t2, t2, 128 |
| mullw t2, t2, p3 |
| addw t3, t3, t2 |
| addw t3, t3, 128 |
| shrsw t3, t3, 8 |
| addw t3, t3, t1 |
| convsuswb d1, t3 |
| |
| |
| .function orc_matrix3_100_offset_u8 |
| .dest 1 d1 guint8 |
| .source 1 s1 guint8 |
| .source 1 s2 guint8 |
| .source 1 s3 guint8 |
| .param 2 p1 |
| .param 2 p2 |
| .param 2 p3 |
| .param 2 p4 |
| .param 2 p5 |
| #.param 2 p6 |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 2 t3 |
| #.temp 2 t3 |
| #.temp 2 t4 |
| |
| convubw t3, s1 |
| mullw t1, t3, p1 |
| convubw t2, s2 |
| mullw t2, t2, p2 |
| addw t1, t1, t2 |
| convubw t2, s3 |
| mullw t2, t2, p3 |
| addw t1, t1, t2 |
| addw t1, t1, p4 |
| shrsw t1, t1, p5 |
| #addw t1, t1, p6 |
| addw t1, t1, t3 |
| convsuswb d1, t1 |
| |
| |
| |
| .function orc_matrix3_000_u8 |
| .dest 1 d1 guint8 |
| .source 1 s1 guint8 |
| .source 1 s2 guint8 |
| .source 1 s3 guint8 |
| .param 2 p1 |
| .param 2 p2 |
| .param 2 p3 |
| .param 2 p4 |
| .param 2 p5 |
| #.param 2 p6 |
| .temp 2 t1 |
| .temp 2 t2 |
| #.temp 2 t3 |
| #.temp 2 t4 |
| |
| convubw t1, s1 |
| mullw t1, t1, p1 |
| convubw t2, s2 |
| mullw t2, t2, p2 |
| addw t1, t1, t2 |
| convubw t2, s3 |
| mullw t2, t2, p3 |
| addw t1, t1, t2 |
| addw t1, t1, p4 |
| shrsw t1, t1, p5 |
| #addw t1, t1, p6 |
| convwb d1, t1 |
| |
| |
| |
| .function orc_pack_123x |
| .dest 4 d1 guint32 |
| .source 1 s1 |
| .source 1 s2 |
| .source 1 s3 |
| .param 1 p1 |
| .temp 2 t1 |
| .temp 2 t2 |
| |
| mergebw t1, s1, s2 |
| mergebw t2, s3, p1 |
| mergewl d1, t1, t2 |
| |
| |
| .function orc_pack_x123 |
| .dest 4 d1 guint32 |
| .source 1 s1 |
| .source 1 s2 |
| .source 1 s3 |
| .param 1 p1 |
| .temp 2 t1 |
| .temp 2 t2 |
| |
| mergebw t1, p1, s1 |
| mergebw t2, s2, s3 |
| mergewl d1, t1, t2 |
| |
| |
| .function cogorc_combine2_u8 |
| .dest 1 d1 |
| .source 1 s1 |
| .source 1 s2 |
| .param 2 p1 |
| .param 2 p2 |
| .temp 2 t1 |
| .temp 2 t2 |
| |
| convubw t1, s1 |
| mullw t1, t1, p1 |
| convubw t2, s2 |
| mullw t2, t2, p2 |
| addw t1, t1, t2 |
| shruw t1, t1, 8 |
| convsuswb d1, t1 |
| |
| |
| .function cogorc_combine4_u8 |
| .dest 1 d1 |
| .source 1 s1 |
| .source 1 s2 |
| .source 1 s3 |
| .source 1 s4 |
| .param 2 p1 |
| .param 2 p2 |
| .param 2 p3 |
| .param 2 p4 |
| .temp 2 t1 |
| .temp 2 t2 |
| |
| convubw t1, s1 |
| mullw t1, t1, p1 |
| convubw t2, s2 |
| mullw t2, t2, p2 |
| addw t1, t1, t2 |
| convubw t2, s3 |
| mullw t2, t2, p3 |
| addw t1, t1, t2 |
| convubw t2, s4 |
| mullw t2, t2, p4 |
| addw t1, t1, t2 |
| addw t1, t1, 32 |
| shrsw t1, t1, 6 |
| convsuswb d1, t1 |
| |
| |
| .function cogorc_unpack_axyz_0 |
| .dest 1 d1 |
| .source 4 s1 |
| .temp 2 t1 |
| |
| select0lw t1, s1 |
| select0wb d1, t1 |
| |
| |
| .function cogorc_unpack_axyz_1 |
| .dest 1 d1 |
| .source 4 s1 |
| .temp 2 t1 |
| |
| select0lw t1, s1 |
| select1wb d1, t1 |
| |
| |
| .function cogorc_unpack_axyz_2 |
| .dest 1 d1 |
| .source 4 s1 |
| .temp 2 t1 |
| |
| select1lw t1, s1 |
| select0wb d1, t1 |
| |
| |
| .function cogorc_unpack_axyz_3 |
| .dest 1 d1 |
| .source 4 s1 |
| .temp 2 t1 |
| |
| select1lw t1, s1 |
| select1wb d1, t1 |
| |
| |
| .function cogorc_resample_horiz_1tap |
| .dest 1 d1 |
| .source 1 s1 |
| .param 4 p1 |
| .param 4 p2 |
| |
| ldresnearb d1, s1, p1, p2 |
| |
| |
| .function cogorc_resample_horiz_2tap |
| .dest 1 d1 |
| .source 1 s1 |
| .param 4 p1 |
| .param 4 p2 |
| |
| ldreslinb d1, s1, p1, p2 |
| |
| |
| .function cogorc_convert_I420_UYVY |
| .dest 4 d1 |
| .dest 4 d2 |
| .source 2 y1 |
| .source 2 y2 |
| .source 1 u |
| .source 1 v |
| .temp 2 uv |
| |
| mergebw uv, u, v |
| x2 mergebw d1, uv, y1 |
| x2 mergebw d2, uv, y2 |
| |
| |
| .function cogorc_convert_I420_YUY2 |
| .dest 4 d1 |
| .dest 4 d2 |
| .source 2 y1 |
| .source 2 y2 |
| .source 1 u |
| .source 1 v |
| .temp 2 uv |
| |
| mergebw uv, u, v |
| x2 mergebw d1, y1, uv |
| x2 mergebw d2, y2, uv |
| |
| |
| |
| .function cogorc_convert_I420_AYUV |
| .dest 4 d1 |
| .dest 4 d2 |
| .source 1 y1 |
| .source 1 y2 |
| .source 1 u |
| .source 1 v |
| .const 1 c255 255 |
| .temp 2 uv |
| .temp 2 ay |
| .temp 1 tu |
| .temp 1 tv |
| |
| loadupdb tu, u |
| loadupdb tv, v |
| mergebw uv, tu, tv |
| mergebw ay, c255, y1 |
| mergewl d1, ay, uv |
| mergebw ay, c255, y2 |
| mergewl d2, ay, uv |
| |
| |
| .function cogorc_convert_YUY2_I420 |
| .dest 2 y1 |
| .dest 2 y2 |
| .dest 1 u |
| .dest 1 v |
| .source 4 yuv1 |
| .source 4 yuv2 |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 2 ty |
| |
| x2 splitwb t1, ty, yuv1 |
| storew y1, ty |
| x2 splitwb t2, ty, yuv2 |
| storew y2, ty |
| x2 avgub t1, t1, t2 |
| splitwb v, u, t1 |
| |
| |
| .function cogorc_convert_UYVY_YUY2 |
| .flags 2d |
| .dest 4 yuy2 |
| .source 4 uyvy |
| |
| x2 swapw yuy2, uyvy |
| |
| |
| .function cogorc_planar_chroma_420_422 |
| .flags 2d |
| .dest 1 d1 |
| .dest 1 d2 |
| .source 1 s |
| |
| copyb d1, s |
| copyb d2, s |
| |
| |
| .function cogorc_planar_chroma_420_444 |
| .flags 2d |
| .dest 2 d1 |
| .dest 2 d2 |
| .source 1 s |
| .temp 2 t |
| |
| splatbw t, s |
| storew d1, t |
| storew d2, t |
| |
| |
| .function cogorc_planar_chroma_422_444 |
| .flags 2d |
| .dest 2 d1 |
| .source 1 s |
| .temp 2 t |
| |
| splatbw t, s |
| storew d1, t |
| |
| |
| .function cogorc_planar_chroma_444_422 |
| .flags 2d |
| .dest 1 d |
| .source 2 s |
| .temp 1 t1 |
| .temp 1 t2 |
| |
| splitwb t1, t2, s |
| avgub d, t1, t2 |
| |
| |
| .function cogorc_planar_chroma_444_420 |
| .flags 2d |
| .dest 1 d |
| .source 2 s1 |
| .source 2 s2 |
| .temp 2 t |
| .temp 1 t1 |
| .temp 1 t2 |
| |
| x2 avgub t, s1, s2 |
| splitwb t1, t2, t |
| avgub d, t1, t2 |
| |
| |
| .function cogorc_planar_chroma_422_420 |
| .flags 2d |
| .dest 1 d |
| .source 1 s1 |
| .source 1 s2 |
| |
| avgub d, s1, s2 |
| |
| |
| .function cogorc_convert_YUY2_AYUV |
| .flags 2d |
| .dest 8 ayuv |
| .source 4 yuy2 |
| .const 2 c255 0xff |
| .temp 2 yy |
| .temp 2 uv |
| .temp 4 ayay |
| .temp 4 uvuv |
| |
| x2 splitwb uv, yy, yuy2 |
| x2 mergebw ayay, c255, yy |
| mergewl uvuv, uv, uv |
| x2 mergewl ayuv, ayay, uvuv |
| |
| |
| .function cogorc_convert_UYVY_AYUV |
| .flags 2d |
| .dest 8 ayuv |
| .source 4 uyvy |
| .const 2 c255 0xff |
| .temp 2 yy |
| .temp 2 uv |
| .temp 4 ayay |
| .temp 4 uvuv |
| |
| x2 splitwb yy, uv, uyvy |
| x2 mergebw ayay, c255, yy |
| mergewl uvuv, uv, uv |
| x2 mergewl ayuv, ayay, uvuv |
| |
| |
| .function cogorc_convert_YUY2_Y42B |
| .flags 2d |
| .dest 2 y |
| .dest 1 u |
| .dest 1 v |
| .source 4 yuy2 |
| .temp 2 uv |
| |
| x2 splitwb uv, y, yuy2 |
| splitwb v, u, uv |
| |
| |
| .function cogorc_convert_UYVY_Y42B |
| .flags 2d |
| .dest 2 y |
| .dest 1 u |
| .dest 1 v |
| .source 4 uyvy |
| .temp 2 uv |
| |
| x2 splitwb y, uv, uyvy |
| splitwb v, u, uv |
| |
| |
| .function cogorc_convert_YUY2_Y444 |
| .flags 2d |
| .dest 2 y |
| .dest 2 uu |
| .dest 2 vv |
| .source 4 yuy2 |
| .temp 2 uv |
| .temp 1 u |
| .temp 1 v |
| |
| x2 splitwb uv, y, yuy2 |
| splitwb v, u, uv |
| splatbw uu, u |
| splatbw vv, v |
| |
| |
| .function cogorc_convert_UYVY_Y444 |
| .flags 2d |
| .dest 2 y |
| .dest 2 uu |
| .dest 2 vv |
| .source 4 uyvy |
| .temp 2 uv |
| .temp 1 u |
| .temp 1 v |
| |
| x2 splitwb y, uv, uyvy |
| splitwb v, u, uv |
| splatbw uu, u |
| splatbw vv, v |
| |
| |
| .function cogorc_convert_UYVY_I420 |
| .dest 2 y1 |
| .dest 2 y2 |
| .dest 1 u |
| .dest 1 v |
| .source 4 yuv1 |
| .source 4 yuv2 |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 2 ty |
| |
| x2 splitwb ty, t1, yuv1 |
| storew y1, ty |
| x2 splitwb ty, t2, yuv2 |
| storew y2, ty |
| x2 avgub t1, t1, t2 |
| splitwb v, u, t1 |
| |
| |
| |
| .function cogorc_convert_AYUV_I420 |
| .flags 2d |
| .dest 2 y1 |
| .dest 2 y2 |
| .dest 1 u |
| .dest 1 v |
| .source 8 ayuv1 |
| .source 8 ayuv2 |
| .temp 4 ay |
| .temp 4 uv1 |
| .temp 4 uv2 |
| .temp 4 uv |
| .temp 2 uu |
| .temp 2 vv |
| .temp 1 t1 |
| .temp 1 t2 |
| |
| x2 splitlw uv1, ay, ayuv1 |
| x2 select1wb y1, ay |
| x2 splitlw uv2, ay, ayuv2 |
| x2 select1wb y2, ay |
| x4 avgub uv, uv1, uv2 |
| x2 splitwb vv, uu, uv |
| splitwb t1, t2, uu |
| avgub u, t1, t2 |
| splitwb t1, t2, vv |
| avgub v, t1, t2 |
| |
| |
| |
| .function cogorc_convert_AYUV_YUY2 |
| .flags 2d |
| .dest 4 yuy2 |
| .source 8 ayuv |
| .temp 2 yy |
| .temp 2 uv1 |
| .temp 2 uv2 |
| .temp 4 ayay |
| .temp 4 uvuv |
| |
| x2 splitlw uvuv, ayay, ayuv |
| splitlw uv1, uv2, uvuv |
| x2 avgub uv1, uv1, uv2 |
| x2 select1wb yy, ayay |
| x2 mergebw yuy2, yy, uv1 |
| |
| |
| .function cogorc_convert_AYUV_UYVY |
| .flags 2d |
| .dest 4 yuy2 |
| .source 8 ayuv |
| .temp 2 yy |
| .temp 2 uv1 |
| .temp 2 uv2 |
| .temp 4 ayay |
| .temp 4 uvuv |
| |
| x2 splitlw uvuv, ayay, ayuv |
| splitlw uv1, uv2, uvuv |
| x2 avgub uv1, uv1, uv2 |
| x2 select1wb yy, ayay |
| x2 mergebw yuy2, uv1, yy |
| |
| |
| |
| .function cogorc_convert_AYUV_Y42B |
| .flags 2d |
| .dest 2 y |
| .dest 1 u |
| .dest 1 v |
| .source 8 ayuv |
| .temp 4 ayay |
| .temp 4 uvuv |
| .temp 2 uv1 |
| .temp 2 uv2 |
| |
| x2 splitlw uvuv, ayay, ayuv |
| splitlw uv1, uv2, uvuv |
| x2 avgub uv1, uv1, uv2 |
| splitwb v, u, uv1 |
| x2 select1wb y, ayay |
| |
| |
| .function cogorc_convert_AYUV_Y444 |
| .flags 2d |
| .dest 1 y |
| .dest 1 u |
| .dest 1 v |
| .source 4 ayuv |
| .temp 2 ay |
| .temp 2 uv |
| |
| splitlw uv, ay, ayuv |
| splitwb v, u, uv |
| select1wb y, ay |
| |
| |
| .function cogorc_convert_Y42B_YUY2 |
| .flags 2d |
| .dest 4 yuy2 |
| .source 2 y |
| .source 1 u |
| .source 1 v |
| .temp 2 uv |
| |
| mergebw uv, u, v |
| x2 mergebw yuy2, y, uv |
| |
| |
| .function cogorc_convert_Y42B_UYVY |
| .flags 2d |
| .dest 4 uyvy |
| .source 2 y |
| .source 1 u |
| .source 1 v |
| .temp 2 uv |
| |
| mergebw uv, u, v |
| x2 mergebw uyvy, uv, y |
| |
| |
| .function cogorc_convert_Y42B_AYUV |
| .flags 2d |
| .dest 8 ayuv |
| .source 2 yy |
| .source 1 u |
| .source 1 v |
| .const 1 c255 255 |
| .temp 2 uv |
| .temp 2 ay |
| .temp 4 uvuv |
| .temp 4 ayay |
| |
| mergebw uv, u, v |
| x2 mergebw ayay, c255, yy |
| mergewl uvuv, uv, uv |
| x2 mergewl ayuv, ayay, uvuv |
| |
| |
| .function cogorc_convert_Y444_YUY2 |
| .flags 2d |
| .dest 4 yuy2 |
| .source 2 y |
| .source 2 u |
| .source 2 v |
| .temp 2 uv |
| .temp 4 uvuv |
| .temp 2 uv1 |
| .temp 2 uv2 |
| |
| x2 mergebw uvuv, u, v |
| splitlw uv1, uv2, uvuv |
| x2 avgub uv, uv1, uv2 |
| x2 mergebw yuy2, y, uv |
| |
| |
| .function cogorc_convert_Y444_UYVY |
| .flags 2d |
| .dest 4 uyvy |
| .source 2 y |
| .source 2 u |
| .source 2 v |
| .temp 2 uv |
| .temp 4 uvuv |
| .temp 2 uv1 |
| .temp 2 uv2 |
| |
| x2 mergebw uvuv, u, v |
| splitlw uv1, uv2, uvuv |
| x2 avgub uv, uv1, uv2 |
| x2 mergebw uyvy, uv, y |
| |
| |
| .function cogorc_convert_Y444_AYUV |
| .flags 2d |
| .dest 4 ayuv |
| .source 1 yy |
| .source 1 u |
| .source 1 v |
| .const 1 c255 255 |
| .temp 2 uv |
| .temp 2 ay |
| |
| mergebw uv, u, v |
| mergebw ay, c255, yy |
| mergewl ayuv, ay, uv |
| |
| |
| |
| .function cogorc_convert_AYUV_ARGB |
| .flags 2d |
| .dest 4 argb |
| .source 4 ayuv |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 1 a |
| .temp 1 y |
| .temp 1 u |
| .temp 1 v |
| .temp 2 wy |
| .temp 2 wu |
| .temp 2 wv |
| .temp 2 wr |
| .temp 2 wg |
| .temp 2 wb |
| .temp 1 r |
| .temp 1 g |
| .temp 1 b |
| .temp 4 x |
| .const 1 c8 8 |
| |
| x4 subb x, ayuv, 128 |
| splitlw t1, t2, x |
| splitwb y, a, t2 |
| splitwb v, u, t1 |
| convsbw wy, y |
| convsbw wu, u |
| convsbw wv, v |
| |
| mullw t1, wy, 42 |
| shrsw t1, t1, c8 |
| addssw wy, wy, t1 |
| |
| addssw wr, wy, wv |
| mullw t1, wv, 103 |
| shrsw t1, t1, c8 |
| subssw wr, wr, t1 |
| addssw wr, wr, wv |
| |
| addssw wb, wy, wu |
| addssw wb, wb, wu |
| mullw t1, wu, 4 |
| shrsw t1, t1, c8 |
| addssw wb, wb, t1 |
| |
| mullw t1, wu, 100 |
| shrsw t1, t1, c8 |
| subssw wg, wy, t1 |
| mullw t1, wv, 104 |
| shrsw t1, t1, c8 |
| subssw wg, wg, t1 |
| subssw wg, wg, t1 |
| |
| convssswb r, wr |
| convssswb g, wg |
| convssswb b, wb |
| |
| mergebw t1, a, r |
| mergebw t2, g, b |
| mergewl x, t1, t2 |
| x4 addb argb, x, 128 |
| |
| |
| |
| .function cogorc_convert_AYUV_BGRA |
| .flags 2d |
| .dest 4 argb |
| .source 4 ayuv |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 1 a |
| .temp 1 y |
| .temp 1 u |
| .temp 1 v |
| .temp 2 wy |
| .temp 2 wu |
| .temp 2 wv |
| .temp 2 wr |
| .temp 2 wg |
| .temp 2 wb |
| .temp 1 r |
| .temp 1 g |
| .temp 1 b |
| .temp 4 x |
| .const 1 c8 8 |
| |
| x4 subb x, ayuv, 128 |
| splitlw t1, t2, x |
| splitwb y, a, t2 |
| splitwb v, u, t1 |
| convsbw wy, y |
| convsbw wu, u |
| convsbw wv, v |
| |
| mullw t1, wy, 42 |
| shrsw t1, t1, c8 |
| addssw wy, wy, t1 |
| |
| addssw wr, wy, wv |
| mullw t1, wv, 103 |
| shrsw t1, t1, c8 |
| subssw wr, wr, t1 |
| addssw wr, wr, wv |
| |
| addssw wb, wy, wu |
| addssw wb, wb, wu |
| mullw t1, wu, 4 |
| shrsw t1, t1, c8 |
| addssw wb, wb, t1 |
| |
| mullw t1, wu, 100 |
| shrsw t1, t1, c8 |
| subssw wg, wy, t1 |
| mullw t1, wv, 104 |
| shrsw t1, t1, c8 |
| subssw wg, wg, t1 |
| subssw wg, wg, t1 |
| |
| convssswb r, wr |
| convssswb g, wg |
| convssswb b, wb |
| |
| mergebw t1, b, g |
| mergebw t2, r, a |
| mergewl x, t1, t2 |
| x4 addb argb, x, 128 |
| |
| |
| |
| |
| .function cogorc_convert_AYUV_ABGR |
| .flags 2d |
| .dest 4 argb |
| .source 4 ayuv |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 1 a |
| .temp 1 y |
| .temp 1 u |
| .temp 1 v |
| .temp 2 wy |
| .temp 2 wu |
| .temp 2 wv |
| .temp 2 wr |
| .temp 2 wg |
| .temp 2 wb |
| .temp 1 r |
| .temp 1 g |
| .temp 1 b |
| .temp 4 x |
| .const 1 c8 8 |
| |
| x4 subb x, ayuv, 128 |
| splitlw t1, t2, x |
| splitwb y, a, t2 |
| splitwb v, u, t1 |
| convsbw wy, y |
| convsbw wu, u |
| convsbw wv, v |
| |
| mullw t1, wy, 42 |
| shrsw t1, t1, c8 |
| addssw wy, wy, t1 |
| |
| addssw wr, wy, wv |
| mullw t1, wv, 103 |
| shrsw t1, t1, c8 |
| subssw wr, wr, t1 |
| addssw wr, wr, wv |
| |
| addssw wb, wy, wu |
| addssw wb, wb, wu |
| mullw t1, wu, 4 |
| shrsw t1, t1, c8 |
| addssw wb, wb, t1 |
| |
| mullw t1, wu, 100 |
| shrsw t1, t1, c8 |
| subssw wg, wy, t1 |
| mullw t1, wv, 104 |
| shrsw t1, t1, c8 |
| subssw wg, wg, t1 |
| subssw wg, wg, t1 |
| |
| convssswb r, wr |
| convssswb g, wg |
| convssswb b, wb |
| |
| mergebw t1, a, b |
| mergebw t2, g, r |
| mergewl x, t1, t2 |
| x4 addb argb, x, 128 |
| |
| |
| |
| .function cogorc_convert_AYUV_RGBA |
| .flags 2d |
| .dest 4 argb |
| .source 4 ayuv |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 1 a |
| .temp 1 y |
| .temp 1 u |
| .temp 1 v |
| .temp 2 wy |
| .temp 2 wu |
| .temp 2 wv |
| .temp 2 wr |
| .temp 2 wg |
| .temp 2 wb |
| .temp 1 r |
| .temp 1 g |
| .temp 1 b |
| .temp 4 x |
| .const 1 c8 8 |
| |
| x4 subb x, ayuv, 128 |
| splitlw t1, t2, x |
| splitwb y, a, t2 |
| splitwb v, u, t1 |
| convsbw wy, y |
| convsbw wu, u |
| convsbw wv, v |
| |
| mullw t1, wy, 42 |
| shrsw t1, t1, c8 |
| addssw wy, wy, t1 |
| |
| addssw wr, wy, wv |
| mullw t1, wv, 103 |
| shrsw t1, t1, c8 |
| subssw wr, wr, t1 |
| addssw wr, wr, wv |
| |
| addssw wb, wy, wu |
| addssw wb, wb, wu |
| mullw t1, wu, 4 |
| shrsw t1, t1, c8 |
| addssw wb, wb, t1 |
| |
| mullw t1, wu, 100 |
| shrsw t1, t1, c8 |
| subssw wg, wy, t1 |
| mullw t1, wv, 104 |
| shrsw t1, t1, c8 |
| subssw wg, wg, t1 |
| subssw wg, wg, t1 |
| |
| convssswb r, wr |
| convssswb g, wg |
| convssswb b, wb |
| |
| mergebw t1, r, g |
| mergebw t2, b, a |
| mergewl x, t1, t2 |
| x4 addb argb, x, 128 |
| |
| |
| |
| .function cogorc_convert_I420_BGRA |
| .dest 4 argb |
| .source 1 y |
| .source 1 u |
| .source 1 v |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 1 t3 |
| .temp 2 wy |
| .temp 2 wu |
| .temp 2 wv |
| .temp 2 wr |
| .temp 2 wg |
| .temp 2 wb |
| .temp 1 r |
| .temp 1 g |
| .temp 1 b |
| .temp 4 x |
| .const 1 c8 8 |
| .const 1 c128 128 |
| |
| subb t3, y, c128 |
| convsbw wy, t3 |
| loadupib t3, u |
| subb t3, t3, c128 |
| convsbw wu, t3 |
| loadupib t3, v |
| subb t3, t3, c128 |
| convsbw wv, t3 |
| |
| mullw t1, wy, 42 |
| shrsw t1, t1, c8 |
| addssw wy, wy, t1 |
| |
| addssw wr, wy, wv |
| mullw t1, wv, 103 |
| shrsw t1, t1, c8 |
| subssw wr, wr, t1 |
| addssw wr, wr, wv |
| |
| addssw wb, wy, wu |
| addssw wb, wb, wu |
| mullw t1, wu, 4 |
| shrsw t1, t1, c8 |
| addssw wb, wb, t1 |
| |
| mullw t1, wu, 100 |
| shrsw t1, t1, c8 |
| subssw wg, wy, t1 |
| mullw t1, wv, 104 |
| shrsw t1, t1, c8 |
| subssw wg, wg, t1 |
| subssw wg, wg, t1 |
| |
| convssswb r, wr |
| convssswb g, wg |
| convssswb b, wb |
| |
| mergebw t1, b, g |
| mergebw t2, r, 255 |
| mergewl x, t1, t2 |
| x4 addb argb, x, c128 |
| |
| |
| |
| .function cogorc_convert_I420_BGRA_avg |
| .dest 4 argb |
| .source 1 y |
| .source 1 u1 |
| .source 1 u2 |
| .source 1 v1 |
| .source 1 v2 |
| .temp 2 t1 |
| .temp 2 t2 |
| .temp 1 t3 |
| .temp 1 t4 |
| .temp 2 wy |
| .temp 2 wu |
| .temp 2 wv |
| .temp 2 wr |
| .temp 2 wg |
| .temp 2 wb |
| .temp 1 r |
| .temp 1 g |
| .temp 1 b |
| .temp 4 x |
| .const 1 c8 8 |
| .const 1 c128 128 |
| |
| subb t3, y, c128 |
| convsbw wy, t3 |
| loadupib t3, u1 |
| loadupib t4, u2 |
| avgub t3, t3, t4 |
| subb t3, t3, c128 |
| convsbw wu, t3 |
| loadupib t3, v1 |
| loadupib t4, v2 |
| avgub t3, t3, t4 |
| subb t3, t3, c128 |
| convsbw wv, t3 |
| |
| mullw t1, wy, 42 |
| shrsw t1, t1, c8 |
| addssw wy, wy, t1 |
| |
| addssw wr, wy, wv |
| mullw t1, wv, 103 |
| shrsw t1, t1, c8 |
| subssw wr, wr, t1 |
| addssw wr, wr, wv |
| |
| addssw wb, wy, wu |
| addssw wb, wb, wu |
| mullw t1, wu, 4 |
| shrsw t1, t1, c8 |
| addssw wb, wb, t1 |
| |
| mullw t1, wu, 100 |
| shrsw t1, t1, c8 |
| subssw wg, wy, t1 |
| mullw t1, wv, 104 |
| shrsw t1, t1, c8 |
| subssw wg, wg, t1 |
| subssw wg, wg, t1 |
| |
| convssswb r, wr |
| convssswb g, wg |
| convssswb b, wb |
| |
| mergebw t1, b, g |
| mergebw t2, r, 255 |
| mergewl x, t1, t2 |
| x4 addb argb, x, c128 |
| |
| |
| |