diff options
author | Andrew D'Addesio <modchipv12@gmail.com> | 2017-12-02 11:36:24 -0600 |
---|---|---|
committer | Rostislav Pehlivanov <atomnuker@gmail.com> | 2017-12-04 07:28:45 +0000 |
commit | 9b45bcf713e0bc30fff7d1e6c2facb539c27ec28 (patch) | |
tree | c49487b5946627050034b3774111bca3b637c77e /libavutil/arm | |
parent | b73304f79eba9164162c7faf2c2d06e60728893c (diff) | |
download | ffmpeg-streaming-9b45bcf713e0bc30fff7d1e6c2facb539c27ec28.zip ffmpeg-streaming-9b45bcf713e0bc30fff7d1e6c2facb539c27ec28.tar.gz |
libavutil: Add saturating subtraction functions
Add av_sat_sub32 and av_sat_dsub32 as the subtraction analogues to
av_sat_add32/av_sat_dadd32.
Also clarify the formulas for dadd32/dsub32.
Signed-off-by: Andrew D'Addesio <modchipv12@gmail.com>
Diffstat (limited to 'libavutil/arm')
-rw-r--r-- | libavutil/arm/intmath.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libavutil/arm/intmath.h b/libavutil/arm/intmath.h index 65e42c5..5311a7d 100644 --- a/libavutil/arm/intmath.h +++ b/libavutil/arm/intmath.h @@ -94,6 +94,22 @@ static av_always_inline int av_sat_dadd32_arm(int a, int b) return r; } +#define av_sat_sub32 av_sat_sub32_arm +static av_always_inline int av_sat_sub32_arm(int a, int b) +{ + int r; + __asm__ ("qsub %0, %1, %2" : "=r"(r) : "r"(a), "r"(b)); + return r; +} + +#define av_sat_dsub32 av_sat_dsub32_arm +static av_always_inline int av_sat_dsub32_arm(int a, int b) +{ + int r; + __asm__ ("qdsub %0, %1, %2" : "=r"(r) : "r"(a), "r"(b)); + return r; +} + #endif /* HAVE_ARMV6_INLINE */ #if HAVE_ASM_MOD_Q |