diff options
author | Kaustubh Raste <kaustubh.raste@imgtec.com> | 2017-07-24 18:11:53 +0530 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2017-07-25 22:04:34 +0200 |
commit | a776cb2074484f4c07ddcdc03398879d9587edcd (patch) | |
tree | 2f292693d65982d41d1fb58ab7bac50e1c7aaad6 /libavutil | |
parent | 0563a5d175428943c741be2d18ac6010b868fc91 (diff) | |
download | ffmpeg-a776cb2074484f4c07ddcdc03398879d9587edcd.tar.gz |
libavcodec/mips: Optimize avc idct 4x4 for msa
Removed memset call and improved performance.
Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavutil')
-rw-r--r-- | libavutil/mips/generic_macros_msa.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libavutil/mips/generic_macros_msa.h b/libavutil/mips/generic_macros_msa.h index 61a8ee0e54..407d46e616 100644 --- a/libavutil/mips/generic_macros_msa.h +++ b/libavutil/mips/generic_macros_msa.h @@ -1531,6 +1531,24 @@ #define ILVR_D4_SB(...) ILVR_D4(v16i8, __VA_ARGS__) #define ILVR_D4_UB(...) ILVR_D4(v16u8, __VA_ARGS__) +/* Description : Interleave left half of double word elements from vectors + Arguments : Inputs - in0, in1, in2, in3 + Outputs - out0, out1 + Return Type - as per RTYPE + Details : Left half of double word elements of in0 and left half of + double word elements of in1 are interleaved and copied to out0. + Left half of double word elements of in2 and left half of + double word elements of in3 are interleaved and copied to out1. +*/ +#define ILVL_D2(RTYPE, in0, in1, in2, in3, out0, out1) \ +{ \ + out0 = (RTYPE) __msa_ilvl_d((v2i64) in0, (v2i64) in1); \ + out1 = (RTYPE) __msa_ilvl_d((v2i64) in2, (v2i64) in3); \ +} +#define ILVL_D2_UB(...) ILVL_D2(v16u8, __VA_ARGS__) +#define ILVL_D2_SB(...) ILVL_D2(v16i8, __VA_ARGS__) +#define ILVL_D2_SH(...) ILVL_D2(v8i16, __VA_ARGS__) + /* Description : Interleave both left and right half of input vectors Arguments : Inputs - in0, in1 Outputs - out0, out1 |