rockbox/lib/rbcodec/codecs/libopus/celt/arm/pfa_arm.h
Michael Giacomelli c47b2e1be2 opus: name the ARM inline-asm gates after the cores they cover
Upstream's OPUS_ARM_INLINE_ASM means any ARM with inline assembly, with
OPUS_ARM_INLINE_EDSP layered on top for ARMv5E.  config.h instead defines
exactly one of them per core, so the names read as broader than they are,
and code added ARM_ARCH tests beside them to pin the scope down.  Renamed
to OPUS_ARM_ASM_ARMV4_ONLY and OPUS_ARM_ASM_ARMV5E_AND_LATER throughout
celt and silk, upstream files included; README.rockbox records it for the
next libopus sync.

No code change: opus.elf disassembly and section sizes are identical
before and after on ARMv4 (e200v1), ARMv5E (Clip+) and ARMv6 (iPod Nano
4G).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Change-Id: I89932d348dedd76748a1bc7b3f2e7de1c5be49c8
2026-09-28 12:10:57 -04:00

30 lines
855 B
C

/* ARM hooks for the Good-Thomas 15-point kernel.
Copyright (c) 2026 Michael Giacomelli
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the conditions stated in
celt/kiss_fft.c are met.
*/
#ifndef PFA_ARM_H
#define PFA_ARM_H
#if defined(FIXED_POINT) && defined(OPUS_PFA)
#if defined(OPUS_ARM_ASM_ARMV5E_AND_LATER)
#define OVERRIDE_PFA_FFT15
void pfa_fft15_armv5e(const kiss_fft_cpx *in, kiss_fft_cpx *out, int ostride);
#define PFA_FFT15(in, out, ostride) pfa_fft15_armv5e(in, out, ostride)
#elif defined(OPUS_ARM_ASM_ARMV4_ONLY)
#define OVERRIDE_PFA_FFT15
void pfa_fft15_armv4(const kiss_fft_cpx *in, kiss_fft_cpx *out, int ostride);
#define PFA_FFT15(in, out, ostride) pfa_fft15_armv4(in, out, ostride)
#endif
#endif /* FIXED_POINT && OPUS_PFA */
#endif /* PFA_ARM_H */