[FFmpeg-devel] [PATCH 00/12] mips cleanups and port to mips64

James Cowgill james410 at cowgill.org.uk
Thu Feb 26 14:42:41 CET 2015


Hi,

This patchset aims to cleanup the MIPS optimizations a bit and add support for
64-bit processors.

I haven't attempted specifically to optimize any of this for 64-bit systems,
except for the removal of some assembly blocks which GCC can optimize just as
well itself. Also I havn't gone through and cleaned up everything, just the
bits that make it easier to port to 64-bits or some things that were really
bugging me :)

I've run fate on both 32 and 64-bit mips machines and it passes all the tests
on both. I don't have a machine with DSP instructions but I managed (with some
effort) to run fate using qemu and it passed all the tests there as well.

One thing I was sligly uneasy about in the change I made to the configure
script was forcing specific ISA levels unless you pass --disable-xxx to
configure. This has a habit of causing the final binaries not to run at all
(eg I have to disable DSP otherwise I get a lot of SIGILL). Since this was what
the code was doing before, I just left it instead of messing up all the MIPS
configure options (more than I have done).

Thanks,
James

James Cowgill (12):
  mips/mathops: remove 64-bit code
  mips/float_dsp: replace assembly with C implementations
  mips/aacpsdsp: fix definition of ps_decorrelate_mips
  mips/fft: remove some useless assembly
  mips/sbrdsp: remove sbr_neg_odd_64_mips
  mips/aacdec: refactor out duplicated assembly code
  mips/aacdec: remove uses of mips32r2 specific ext instructions
  configure, mips: remove MIPS32R2, merging it with MIPSFPU
  mips: port optimizations to mips n64
  mips: use float* to hold pointer instead of int
  mips/acelp_filters: fix incorrect register constraint
  mips/aaccoder: use variables instead of using register names directly

 Makefile                                  |   2 +-
 arch.mak                                  |   1 -
 configure                                 |  19 +-
 libavcodec/mips/aaccoder_mips.c           | 929 +++++++++++++++---------------
 libavcodec/mips/aacdec_mips.c             | 623 ++++----------------
 libavcodec/mips/aacdec_mips.h             |  58 +-
 libavcodec/mips/aacpsdsp_mips.c           |  61 +-
 libavcodec/mips/aacpsy_mips.h             |   6 +-
 libavcodec/mips/aacsbr_mips.c             |  53 +-
 libavcodec/mips/aacsbr_mips.h             |  17 +-
 libavcodec/mips/ac3dsp_mips.c             |  63 +-
 libavcodec/mips/acelp_filters_mips.c      |  15 +-
 libavcodec/mips/acelp_vectors_mips.c      |   7 +-
 libavcodec/mips/asmdefs.h                 |  48 ++
 libavcodec/mips/celp_filters_mips.c       |  13 +-
 libavcodec/mips/celp_math_mips.c          |   5 +-
 libavcodec/mips/compute_antialias_float.h |   4 +-
 libavcodec/mips/fft_mips.c                |  39 +-
 libavcodec/mips/fmtconvert_mips.c         |  33 +-
 libavcodec/mips/lsp_mips.h                |   6 +-
 libavcodec/mips/mathops.h                 |  26 -
 libavcodec/mips/mpegaudiodsp_mips_fixed.c |  11 +-
 libavcodec/mips/mpegaudiodsp_mips_float.c |  25 +-
 libavcodec/mips/sbrdsp_mips.c             |  89 +--
 libavutil/mips/float_dsp_mips.c           | 354 +++---------
 25 files changed, 963 insertions(+), 1544 deletions(-)
 create mode 100644 libavcodec/mips/asmdefs.h

-- 
2.1.4



More information about the ffmpeg-devel mailing list