Commit 0fd1cbe3 authored by David Geldreich's avatar David Geldreich Committed by Rémi Denis-Courmont

handle the underscore prefix for some ARM ABI in arm_neon

here is an altenative to using an assembly macros to handle the calling
differences across ARM ABI.

use a gcc extension (also supported by clang/llvm) which symbol is
associated with function
Signed-off-by: default avatarRémi Denis-Courmont <remi@remlab.net>
parent 44a76495
...@@ -135,8 +135,10 @@ static block_t *Do_F32_S32 (filter_t *filter, block_t *inbuf) ...@@ -135,8 +135,10 @@ static block_t *Do_F32_S32 (filter_t *filter, block_t *inbuf)
} }
#endif #endif
void s32_s16_neon_unaligned (int16_t *out, const int32_t *in, unsigned nb); extern void s32_s16_neon_unaligned (int16_t *out, const int32_t *in,
void s32_s16_neon (int16_t *out, const int32_t *in, unsigned nb); unsigned nb) asm("s32_s16_neon_unaligned");
extern void s32_s16_neon (int16_t *out, const int32_t *in,
unsigned nb) asm("s32_s16_neon");
/** /**
* Signed 32-bits fixed point to signed 16-bits integer * Signed 32-bits fixed point to signed 16-bits integer
......
...@@ -40,39 +40,44 @@ struct yuv_pack ...@@ -40,39 +40,44 @@ struct yuv_pack
/* I420 to YUYV conversion. */ /* I420 to YUYV conversion. */
void i420_yuyv_neon (struct yuv_pack *const out, void i420_yuyv_neon (struct yuv_pack *const out,
const struct yuv_planes *const in, const struct yuv_planes *const in,
int width, int height); int width, int height) asm("i420_yuyv_neon");
/* I420 to UYVY conversion. */ /* I420 to UYVY conversion. */
void i420_uyvy_neon (struct yuv_pack *const out, void i420_uyvy_neon (struct yuv_pack *const out,
const struct yuv_planes *const in, const struct yuv_planes *const in,
int width, int height); int width, int height) asm("i420_uyvy_neon");
/* I422 to YUYV conversion. */ /* I422 to YUYV conversion. */
void i422_yuyv_neon (struct yuv_pack *const out, void i422_yuyv_neon (struct yuv_pack *const out,
const struct yuv_planes *const in, const struct yuv_planes *const in,
int width, int height); int width, int height) asm("i422_yuyv_neon");
/* I422 to UYVY conversion. */ /* I422 to UYVY conversion. */
void i422_uyvy_neon (struct yuv_pack *const out, void i422_uyvy_neon (struct yuv_pack *const out,
const struct yuv_planes *const in, const struct yuv_planes *const in,
int width, int height); int width, int height) asm("i422_uyvy_neon");
/* YUYV to I422 conversion. */ /* YUYV to I422 conversion. */
void yuyv_i422_neon (struct yuv_planes *const out, void yuyv_i422_neon (struct yuv_planes *const out,
const struct yuv_pack *const in, int width, int height); const struct yuv_pack *const in,
int width, int height) asm("yuyv_i422_neon");
/* UYVY to I422 conversion. */ /* UYVY to I422 conversion. */
void uyvy_i422_neon (struct yuv_planes *const out, void uyvy_i422_neon (struct yuv_planes *const out,
const struct yuv_pack *const in, int width, int height); const struct yuv_pack *const in,
int width, int height) asm("uyvy_i422_neon");
/* I420 to RGBA conversion. */ /* I420 to RGBA conversion. */
void i420_rgb_neon (struct yuv_pack *const out, void i420_rgb_neon (struct yuv_pack *const out,
const struct yuv_planes *const in, int width, int height); const struct yuv_planes *const in,
int width, int height) asm("i420_rgb_neon");
/* NV21 to RGBA conversion. */ /* NV21 to RGBA conversion. */
void nv21_rgb_neon (struct yuv_pack *const out, void nv21_rgb_neon (struct yuv_pack *const out,
const struct yuv_planes *const in, int width, int height); const struct yuv_planes *const in,
int width, int height) asm("nv21_rgb_neon");
/* NV12 to RGBA conversion. */ /* NV12 to RGBA conversion. */
void nv12_rgb_neon (struct yuv_pack *const out, void nv12_rgb_neon (struct yuv_pack *const out,
const struct yuv_planes *const in, int width, int height); const struct yuv_planes *const in,
int width, int height) asm("nv12_rgb_neon");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment