diff options
Diffstat (limited to 'libspeex/fixed_bfin.h')
-rw-r--r-- | libspeex/fixed_bfin.h | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/libspeex/fixed_bfin.h b/libspeex/fixed_bfin.h index aa26f6a..9eb21e3 100644 --- a/libspeex/fixed_bfin.h +++ b/libspeex/fixed_bfin.h @@ -36,6 +36,8 @@ #ifndef FIXED_BFIN_H #define FIXED_BFIN_H +#include "bfin.h" + #undef PDIV32_16 static inline spx_word16_t PDIV32_16(spx_word32_t a, spx_word16_t b) { @@ -57,7 +59,7 @@ static inline spx_word16_t PDIV32_16(spx_word32_t a, spx_word16_t b) "%0 = R0;\n\t" : "=m" (res) : "m" (a), "m" (bb) - : "P0", "R0", "R1", "cc"); + : "P0", "R0", "R1", "ASTAT" BFIN_HWLOOP0_REGS); return res; } @@ -84,7 +86,7 @@ static inline spx_word16_t DIV32_16(spx_word32_t a, spx_word16_t b) "%0 = R0;\n\t" : "=m" (res) : "m" (a), "m" (bb) - : "P0", "R0", "R1", "cc"); + : "P0", "R0", "R1", "ASTAT" BFIN_HWLOOP0_REGS); return res; } @@ -98,6 +100,7 @@ static inline spx_word16_t MAX16(spx_word16_t a, spx_word16_t b) "%0 = MAX(%1,%2);" : "=d" (res) : "%d" (a), "d" (b) + : "ASTAT" ); return res; } @@ -113,7 +116,7 @@ static inline spx_word32_t MULT16_32_Q15(spx_word16_t a, spx_word32_t b) "%0 = (A1 += %2.L*%1.H) ;\n\t" : "=&W" (res), "=&d" (b) : "d" (a), "1" (b) - : "A1" + : "A1", "ASTAT" ); return res; } @@ -130,7 +133,7 @@ static inline spx_word32_t MAC16_32_Q15(spx_word32_t c, spx_word16_t a, spx_word "%0 = %0 + %4;\n\t" : "=&W" (res), "=&d" (b) : "d" (a), "1" (b), "d" (c) - : "A1" + : "A1", "ASTAT" ); return res; } @@ -147,7 +150,7 @@ static inline spx_word32_t MULT16_32_Q14(spx_word16_t a, spx_word32_t b) "%0 = (A1 += %1.L*%2.H);\n\t" : "=W" (res), "=d" (a), "=d" (b) : "1" (a), "2" (b) - : "A1" + : "A1", "ASTAT" ); return res; } @@ -165,7 +168,7 @@ static inline spx_word32_t MAC16_32_Q14(spx_word32_t c, spx_word16_t a, spx_word "%0 = %0 + %4;\n\t" : "=&W" (res), "=&d" (b) : "d" (a), "1" (b), "d" (c) - : "A1" + : "A1", "ASTAT" ); return res; } |