Commit Graph

59 Commits

Author SHA1 Message Date
Christophe Gisquet
86ae0da60c x86: hpeldsp: propagate changes across codecs
Some codecs still use mmx versions, so have them use the versions
with newer instruction sets.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-26 15:37:04 +02:00
Christophe Gisquet
81aa0f4604 x86: hpeldsp: implement SSSE3 version of _xy2
Loading pb_1 rather than pw_8192 was benchmarked to be more efficient.
Loading of the 2 yields no advantage. Loading of one saves ~11 cycles.

decicycles count:
put8:  3223(mmx)    -> 2387
avg8:  2863(mmxext) -> 2125
put16: 4356(sse2)   -> 3553
avg16: 4481(sse2)   -> 3513

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-24 15:15:56 +02:00
Christophe Gisquet
9722a6a3f3 x86: hpeldsp: implement SSE2 put_pixels16_xy2
This is obviously equivalent to the avg version, without the avg.

3223(mmx) -> 2006(sse2)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-24 03:45:17 +02:00
Christophe Gisquet
f0aca50e0b x86: hpeldsp: implement SSE2 versions
Those are mostly used in codecs older than H.264, eg MPEG-2.

put16 versions:
      mmx  mmx2  sse2
x2:  1888  1185   552
y2:  1778  1092   510

avg16 xy2: 3509(mmx2) -> 2169(sse2)

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-24 03:29:48 +02:00
Christophe Gisquet
c081ca851c x86: hpeldsp: avg_pixels_xy2 for mmx2&3dnow
This is a port of the inline assembly of the mmx version to use the
pavg(us|)b instruction.

        8    16
mmx   1498  4355
mmx2  1242  3509

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-22 20:17:49 +02:00
Christophe Gisquet
17ac998055 x86: hpeldsp: mark _xy2 versions as approximate
Currently, only the mmx version is bitexact, the others (mmxext and
3dnow) are not, in spite of their naming.

Therefore, make their name more obvious. Also restore a comment that
was removed in 71155d7b.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-22 20:17:45 +02:00
Christophe Gisquet
f8de35ebc4 x86: hpeldsp: kill hpeldsp_mmx.c
before:
1987 decicycles in 8_x2, 262121 runs, 23 skips

after:
1902 decicycles in 8_x2, 262112 runs, 32 skips

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-22 20:17:40 +02:00
Michael Niedermayer
3d4e365073 avcodec/x86/hpeldsp_init: remove redundant if()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-21 13:38:27 +02:00
Hendrik Leppkes
cd9e08e110 hpeldsp: fix build without inline asm
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-21 13:37:38 +02:00
Christophe Gisquet
d1a32c3f49 x86: kill fpel_mmx.c
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-21 03:25:08 +02:00
Michael Niedermayer
4998a72b49 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  x86: hpeldsp: Keep all rnd_template instantiations in hpeldsp_init

Conflicts:
	libavcodec/x86/rnd_mmx.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-26 16:55:46 +01:00
Diego Biurrun
efc7290eb6 x86: hpeldsp: Keep all rnd_template instantiations in hpeldsp_init
There is no point in having a separate file just for the instantiation
that provides the public functions.
2014-03-26 04:31:27 -07:00
Michael Niedermayer
74fed968d1 Merge commit '82dd1026cfc1d72b04019185bea4c1c9621ace3f'
* commit '82dd1026cfc1d72b04019185bea4c1c9621ace3f':
  x86: dsputil: Move hpeldsp-related declarations to a separate header

Conflicts:
	libavcodec/x86/dsputil_x86.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-22 23:21:54 +01:00
Michael Niedermayer
9333bba6ed Merge commit '6655c933a887a2d20707fff657b614aa1d86a25b'
* commit '6655c933a887a2d20707fff657b614aa1d86a25b':
  x86: dsputil: Move fpel declarations to a separate header

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-22 23:08:22 +01:00
Michael Niedermayer
77bc342975 Merge commit '322a1dda973e802db7b57f2007fad3efcd5bab81'
* commit '322a1dda973e802db7b57f2007fad3efcd5bab81':
  dsputil: Refactor duplicated CALL_2X_PIXELS / PIXELS16 macros

Conflicts:
	libavcodec/arm/hpeldsp_init_arm.c
	libavcodec/x86/dsputil_x86.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-22 22:53:33 +01:00
Diego Biurrun
82dd1026cf x86: dsputil: Move hpeldsp-related declarations to a separate header 2014-03-22 06:17:29 -07:00
Diego Biurrun
6655c933a8 x86: dsputil: Move fpel declarations to a separate header 2014-03-22 06:17:29 -07:00
Diego Biurrun
322a1dda97 dsputil: Refactor duplicated CALL_2X_PIXELS / PIXELS16 macros 2014-03-22 06:17:29 -07:00
Michael Niedermayer
1c788eaca9 Merge commit '831a1180785a786272cdcefb71566a770bfb879e'
* commit '831a1180785a786272cdcefb71566a770bfb879e':
  Update dsputil- and SIMD-related comments to match reality more closely

Conflicts:
	libavcodec/x86/hpeldsp.asm
	libavutil/arm/float_dsp_init_arm.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-13 23:59:56 +01:00
Michael Niedermayer
d61e1156be Merge commit '17608f6ee3d2088cdb8d1e704276d8b34f01160d'
* commit '17608f6ee3d2088cdb8d1e704276d8b34f01160d':
  x86: Add some more missing headers

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-03-13 23:41:17 +01:00
Diego Biurrun
831a118078 Update dsputil- and SIMD-related comments to match reality more closely 2014-03-13 05:50:29 -07:00
Diego Biurrun
17608f6ee3 x86: Add some more missing headers 2014-03-13 05:50:28 -07:00
Michael Niedermayer
92b2404571 Merge commit '4c642d8d98703faf52983243098f35865e15b312'
* commit '4c642d8d98703faf52983243098f35865e15b312':
  x86: hpeldsp: Add missing av_cold attribute to init function

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-01-09 20:32:53 +01:00
Diego Biurrun
4c642d8d98 x86: hpeldsp: Add missing av_cold attribute to init function 2014-01-09 15:09:07 +01:00
Michael Niedermayer
5b4d57455d Merge remote-tracking branch 'qatar/master'
* qatar/master:
  x86: Initialize mmxext after amd3dnow optimizations

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-12-05 11:55:41 +01:00
Diego Biurrun
3d7c84747d x86: Initialize mmxext after amd3dnow optimizations
The mmxext optimizations should be at least equally fast if available and
amd3dnow optimizations are being deprecated. Thus the former should
override the latter, not the other way around.
2013-12-04 18:52:48 +01:00
Michael Niedermayer
8be0e2bd43 Merge commit '6369ba3c9cc74becfaad2a8882dff3dd3e7ae3c0'
* commit '6369ba3c9cc74becfaad2a8882dff3dd3e7ae3c0':
  x86: avcodec: Use convenience macros to check for CPU flags

Conflicts:
	libavcodec/x86/dsputil_init.c
	libavcodec/x86/hpeldsp_init.c
	libavcodec/x86/motion_est.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-30 12:08:28 +02:00
Diego Biurrun
6369ba3c9c x86: avcodec: Use convenience macros to check for CPU flags 2013-08-29 13:07:37 +02:00
Michael Niedermayer
9d01bf7d66 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  Consistently use "cpu_flags" as variable/parameter name for CPU flags

Conflicts:
	libavcodec/x86/dsputil_init.c
	libavcodec/x86/h264dsp_init.c
	libavcodec/x86/hpeldsp_init.c
	libavcodec/x86/motion_est.c
	libavcodec/x86/mpegvideo.c
	libavcodec/x86/proresdsp_init.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-18 09:53:47 +02:00
Diego Biurrun
3ac7fa81b2 Consistently use "cpu_flags" as variable/parameter name for CPU flags 2013-07-18 00:31:35 +02:00
Michael Niedermayer
a887372109 Merge commit '1399931d07f0f37ef4526eb8d39d33c64e09618a'
* commit '1399931d07f0f37ef4526eb8d39d33c64e09618a':
  x86: dsputil: Rename dsputil_mmx.h --> dsputil_x86.h

Conflicts:
	libavcodec/x86/dsputil_mmx.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-14 12:12:20 +02:00
Michael Niedermayer
eda9d97b7a Merge commit '46bb456853b197f4562de7acf5d42abf11ded9be'
* commit '46bb456853b197f4562de7acf5d42abf11ded9be':
  x86: dsputil: Refactor pixels16 wrapper functions with a macro

Conflicts:
	libavcodec/x86/hpeldsp_avg_template.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-14 10:18:46 +02:00
Diego Biurrun
1399931d07 x86: dsputil: Rename dsputil_mmx.h --> dsputil_x86.h
The header is not (anymore) MMX-specific.
2013-05-12 22:28:07 +02:00
Diego Biurrun
46bb456853 x86: dsputil: Refactor pixels16 wrapper functions with a macro 2013-05-12 22:28:07 +02:00
Michael Niedermayer
2f9ef60c97 Merge commit '92f8e06ecb431a427ea13d794e5a6bc927a034d2'
* commit '92f8e06ecb431a427ea13d794e5a6bc927a034d2':
  x86: dsputil hpeldsp: Move shared template functions into separate object

Conflicts:
	libavcodec/x86/Makefile

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-08 14:01:58 +02:00
Michael Niedermayer
bf18810a21 Merge commit '7edaf4edb5c3c04f34ad1242680cbc32d11f4087'
* commit '7edaf4edb5c3c04f34ad1242680cbc32d11f4087':
  x86: rnd_template: Eliminate pointless OP_AVG macro indirection

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-08 13:55:31 +02:00
Diego Biurrun
92f8e06ecb x86: dsputil hpeldsp: Move shared template functions into separate object 2013-05-07 18:03:34 +02:00
Diego Biurrun
7edaf4edb5 x86: rnd_template: Eliminate pointless OP_AVG macro indirection 2013-05-07 18:03:34 +02:00
Michael Niedermayer
108e2ae829 Merge commit '110796739ab32854dc0b6b0a1c95e6ae98889062'
* commit '110796739ab32854dc0b6b0a1c95e6ae98889062':
  x86: hpeldsp: Move avg_pixels8_x2_mmx() out of hpeldsp_rnd_template.c

Conflicts:
	libavcodec/x86/Makefile

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-06 21:00:40 +02:00
Michael Niedermayer
32cc7dacde Merge commit '9e5e76ef9ea803432ef2782a3f528c3f5bab621e'
* commit '9e5e76ef9ea803432ef2782a3f528c3f5bab621e':
  x86: More specific ifdefs for dsputil/hpeldsp init functions

Conflicts:
	libavcodec/x86/dsputil_mmx.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-06 20:46:27 +02:00
Diego Biurrun
110796739a x86: hpeldsp: Move avg_pixels8_x2_mmx() out of hpeldsp_rnd_template.c
The function is only instantiated once, so there is no point
in keeping it in a template file.
2013-05-06 11:02:08 +02:00
Diego Biurrun
9e5e76ef9e x86: More specific ifdefs for dsputil/hpeldsp init functions 2013-05-06 11:02:07 +02:00
Michael Niedermayer
35ef98013d Merge commit '932806232108872655556100011fe369125805d3'
* commit '932806232108872655556100011fe369125805d3':
  x86: dsputil: Move avg_pixels16_mmx() out of rnd_template.c
  x86: dsputil: Move avg_pixels8_mmx() out of rnd_template.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-03 10:44:09 +02:00
Michael Niedermayer
ed1697ffcb Merge commit '9b3a04d30691e85b77e63f75f5f26a93c3a000cd'
* commit '9b3a04d30691e85b77e63f75f5f26a93c3a000cd':
  x86: Move duplicated put_pixels{8|16}_mmx functions into their own file

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-03 10:36:52 +02:00
Diego Biurrun
9328062321 x86: dsputil: Move avg_pixels16_mmx() out of rnd_template.c
The function does not do any rounding, so there is no point in
keeping it in a round template file.
2013-05-02 11:45:37 +02:00
Diego Biurrun
9c112a6158 x86: dsputil: Move avg_pixels8_mmx() out of rnd_template.c
The function is only instantiated once, so there is no point
in keeping it in a template file.
2013-05-02 11:45:37 +02:00
Diego Biurrun
9b3a04d306 x86: Move duplicated put_pixels{8|16}_mmx functions into their own file 2013-05-02 11:16:45 +02:00
Michael Niedermayer
dbcf7e9ef7 Merge commit '7f75f2f2bd692857c1c1ca7f414eb30ece3de93d'
* commit '7f75f2f2bd692857c1c1ca7f414eb30ece3de93d':
  ppc: Drop unnecessary ff_ name prefixes from static functions
  x86: Drop unnecessary ff_ name prefixes from static functions
  arm: Drop unnecessary ff_ name prefixes from static functions

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-01 18:21:35 +02:00
Diego Biurrun
f2e9d44a57 x86: Drop unnecessary ff_ name prefixes from static functions 2013-04-30 16:02:03 +02:00
Michael Niedermayer
16b2472d20 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  x86: hpeldsp: Remove unused macro definitions

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-04-29 22:01:53 +02:00