summaryrefslogtreecommitdiff
path: root/opencore/codecs_v2/audio/gsm_amr/amr_nb/common/include/mpy_32_16.h
diff options
context:
space:
mode:
Diffstat (limited to 'opencore/codecs_v2/audio/gsm_amr/amr_nb/common/include/mpy_32_16.h')
-rw-r--r--opencore/codecs_v2/audio/gsm_amr/amr_nb/common/include/mpy_32_16.h40
1 files changed, 9 insertions, 31 deletions
diff --git a/opencore/codecs_v2/audio/gsm_amr/amr_nb/common/include/mpy_32_16.h b/opencore/codecs_v2/audio/gsm_amr/amr_nb/common/include/mpy_32_16.h
index 33ade51..3a68e69 100644
--- a/opencore/codecs_v2/audio/gsm_amr/amr_nb/common/include/mpy_32_16.h
+++ b/opencore/codecs_v2/audio/gsm_amr/amr_nb/common/include/mpy_32_16.h
@@ -1,5 +1,5 @@
/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
+ * Copyright (C) 1998-2010 PacketVideo
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -88,36 +88,14 @@ extern "C"
; GLOBAL FUNCTION DEFINITIONS
; Function Prototype declaration
----------------------------------------------------------------------------*/
-#if defined(PV_ARM_V5) /* Instructions for ARM Assembly on ADS*/
+#if ((PV_CPU_ARCH_VERSION >=5) && (PV_COMPILER == EPV_ARM_GNUC))/* Instructions for ARM-linux cross-compiler*/
- __inline Word32 Mpy_32_16(Word16 L_var1_hi,
+ static inline Word32 Mpy_32_16(Word16 L_var1_hi,
Word16 L_var1_lo,
Word16 var2,
Flag *pOverflow)
{
- Word32 L_product;
- Word32 L_sum;
- Word32 result;
-
- OSCL_UNUSED_ARG(pOverflow);
-
- __asm {SMULBB L_product, L_var1_hi, var2}
- __asm {QDADD L_product, 0, L_product}
- __asm {SMULBB result, L_var1_lo, var2}
- result >>= 15;
- __asm {QDADD L_sum, L_product, result}
- return (L_sum);
- }
-
-#elif defined(PV_ARM_GCC_V5) /* Instructions for ARM-linux cross-compiler*/
-
- static inline Word32 Mpy_32_16(Word16 L_var1_hi,
- Word16 L_var1_lo,
- Word16 var2,
- Flag *pOverflow)
- {
-
register Word32 ra = L_var1_hi;
register Word32 rb = L_var1_lo;
register Word32 rc = var2;
@@ -125,29 +103,29 @@ extern "C"
OSCL_UNUSED_ARG(pOverflow);
- asm volatile("smulbb %0, %1, %2"
+ __asm__ volatile("smulbb %0, %1, %2"
: "=r"(L_product)
: "r"(ra), "r"(rc)
);
- asm volatile("mov %0, #0"
+ __asm__ volatile("mov %0, #0"
: "=r"(result)
);
- asm volatile("qdadd %0, %1, %2"
+ __asm__ volatile("qdadd %0, %1, %2"
: "=r"(L_product)
: "r"(result), "r"(L_product)
);
- asm volatile("smulbb %0, %1, %2"
+ __asm__ volatile("smulbb %0, %1, %2"
: "=r"(result)
: "r"(rb), "r"(rc)
);
- asm volatile("mov %0, %1, ASR #15"
+ __asm__ volatile("mov %0, %1, ASR #15"
: "=r"(ra)
: "r"(result)
);
- asm volatile("qdadd %0, %1, %2"
+ __asm__ volatile("qdadd %0, %1, %2"
: "=r"(result)
: "r"(L_product), "r"(ra)
);