ffmpeg/libswscale
Lauri Kasanen 8522d219ce libswscale/ppc: VSX-optimize 9-16 bit yuv2planeX
./ffmpeg_g -f rawvideo -pix_fmt rgb24 -s hd1080 -i /dev/zero -pix_fmt yuv420p16be \
-s 1920x1728 -f null -vframes 100 -v error -nostats -

9-14 bit funcs get about 6x speedup, 16-bit gets about 15x.
Fate passes, each format tested with an image to video conversion.

Only POWER8 includes 32-bit vector multiplies, so POWER7 is locked out
of the 16-bit function. This includes the vec_mulo/mule functions too,
not just vmuluwm.

With TIMER_REPORT skips disabled:
yuv420p9le
  12412 UNITS in planarX,  131072 runs,      0 skips
  73136 UNITS in planarX,  131072 runs,      0 skips
yuv420p9be
  12481 UNITS in planarX,  131072 runs,      0 skips
  73410 UNITS in planarX,  131072 runs,      0 skips
yuv420p10le
  12322 UNITS in planarX,  131072 runs,      0 skips
  72546 UNITS in planarX,  131072 runs,      0 skips
yuv420p10be
  12291 UNITS in planarX,  131072 runs,      0 skips
  72935 UNITS in planarX,  131072 runs,      0 skips
yuv420p12le
  12316 UNITS in planarX,  131072 runs,      0 skips
  72708 UNITS in planarX,  131072 runs,      0 skips
yuv420p12be
  12319 UNITS in planarX,  131072 runs,      0 skips
  72577 UNITS in planarX,  131072 runs,      0 skips
yuv420p14le
  12259 UNITS in planarX,  131072 runs,      0 skips
  72516 UNITS in planarX,  131072 runs,      0 skips
yuv420p14be
  12440 UNITS in planarX,  131072 runs,      0 skips
  72962 UNITS in planarX,  131072 runs,      0 skips
yuv420p16le
  10548 UNITS in planarX,  131072 runs,      0 skips
  73429 UNITS in planarX,  131072 runs,      0 skips
yuv420p16be
  10634 UNITS in planarX,  131072 runs,      0 skips
 150959 UNITS in planarX,  131072 runs,      0 skips

Signed-off-by: Lauri Kasanen <cand@gmx.com>
2019-02-05 09:34:53 +02:00
..
aarch64 sws/aarch64: add ff_yuv2planeX_8_neon 2016-04-11 16:27:19 +02:00
arm arm: swscale: Only compile the rgb2yuv asm if .dn aliases are supported 2018-03-31 21:54:56 +03:00
ppc libswscale/ppc: VSX-optimize 9-16 bit yuv2planeX 2019-02-05 09:34:53 +02:00
tests Merge commit '0fd0d4fd0a518e30ff23972828ad7cf7f35cfb9d' 2017-10-30 12:34:40 -03:00
x86 swscale/x86/rgb2rgb.asm : add Ivo Van Poorten name to the top of the file 2018-10-18 21:43:19 +02:00
Makefile Merge commit '92db5083077a8b0f8e1050507671b456fd155125' 2017-05-04 19:59:30 -03:00
alphablend.c avutil: Rename FF_CEIL_COMPAT to AV_CEIL_COMPAT 2016-01-27 16:36:46 +00:00
bayer_template.c
gamma.c
hscale.c avutil: Rename FF_CEIL_COMPAT to AV_CEIL_COMPAT 2016-01-27 16:36:46 +00:00
hscale_fast_bilinear.c
input.c swscale : add support for YUVA444P12 and YUVA422P12 2018-11-24 16:24:47 +01:00
libswscale.v build: Change structure of the linker version script templates 2016-05-29 16:43:11 +02:00
log2_tab.c
options.c swscale/options: Use AV_OPT_TYPE_PIXEL_FMT 2016-11-20 13:00:22 +01:00
output.c swscale : add YA16 LE/BE output 2018-10-18 21:43:24 +02:00
rgb2rgb.c swscale/rgb : move shuffle func shuffle_bytes_1230, shuffle_bytes_3012, shuffle_bytes_3210 in order to add SIMD 2018-03-24 20:22:02 +01:00
rgb2rgb.h swscale/rgb2rgb : cosmetic, move shuffle_bytes func declaration 2018-03-24 20:22:17 +01:00
rgb2rgb_template.c lsws/rgb2rgb_template: Do not compile unneeded shuffle functions on big-endian. 2018-06-10 03:22:59 +02:00
slice.c lsws/slice: Move a misplaced const. 2017-03-08 00:33:21 +01:00
swscale.c swscale/swscale : small cosmetic 2018-08-22 11:36:15 +02:00
swscale.h doxygen: Standardize root-level modules 2016-08-02 22:15:25 -07:00
swscale_internal.h swscale/ppc: Move VSX-using code to its own file 2018-12-04 02:59:07 +01:00
swscale_unscaled.c swscale/swscale_unscaled : rename packed_16bpc_bswap 2018-10-24 21:21:20 +02:00
swscaleres.rc
utils.c swscale : add support for YUVA444P12 and YUVA422P12 2018-11-24 16:24:47 +01:00
version.h Bump minor version for master after 4.1 branchpoint 2018-11-02 00:53:07 +01:00
vscale.c swscale: cleanup unused code 2016-03-31 16:36:16 -03:00
yuv2rgb.c swscale/yuv2rgb: Return a more specific error code from ff_yuv2rgb_c_init_tables() 2019-01-01 21:11:47 +01:00