[FFmpeg-devel] [PATCH v2] SH4 mpegaudio decoder optimizations
Reimar Döffinger
Reimar.Doeffinger
Tue Dec 14 20:43:17 CET 2010
On Tue, Dec 14, 2010 at 05:24:22PM +0100, Guennadi Liakhovetski wrote:
> +#ifndef SUM8_MACS
> +#define SUM8_MACS(sum, w, p) SUM8(MACS, sum, w, p)
> +#endif
> +
> +#ifndef SUM8_MLSS
> +#define SUM8_MLSS(sum, w, p) SUM8(MLSS, sum, w, p)
> +#endif
> +
> +#ifndef SUM8P2_MACS_MLSS
> +#define SUM8P2_MACS_MLSS(sum, sum2, w, w2, p) SUM8P2(sum, MACS, sum2, MLSS, w, w2, p)
> +#endif
> +
> +#ifndef SUM8P2_MLSS_MLSS
> +#define SUM8P2_MLSS_MLSS(sum, sum2, w, w2, p) SUM8P2(sum, MLSS, sum2, MLSS, w, w2, p)
> +#endif
Can't you instead do something like (note I usually get the syntax
wrong, plus I don't know if there are issues if the generated
name is a macro as well):
#define SUM8(op, sum, w, p) SUM8_#op(sum, w, p)
> + union {int64_t x; int32_t u32[2];} u = \
> + {.x = (sum),}; \
Does using a union create faster code that doing it "properly"
with shifts/ors/...?
To might knowledge that this works is just something that
gcc "currently" promises, but is not part of the C standard.
> + : [hi] "+r" (u.u32[1]), \
> + [lo] "+r" (u.u32[0]), \
> + [wp] "+r" (wp), \
> + [pp] "+r" (pp) \
Do all compilers/compiler versions that are in use support
named asm arguments?
I also think as a paranoia measure these should be +&r
(but I admit I never understood that so 100%).
> +#if (!defined(CONFIG_FLOAT) || !CONFIG_FLOAT) && (!defined(FRAC_BITS) || FRAC_BITS > 15)
I don't think it's valid for those not to be defined?
More information about the ffmpeg-devel
mailing list