forked from len0rd/rockbox
Small Musepack optimisation.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6685 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
3c30ee51d8
commit
649acec2fc
2 changed files with 18 additions and 1 deletions
|
@ -14,7 +14,8 @@ ifdef APPEXTRA
|
||||||
INCLUDES += -I$(APPSDIR)/$(APPEXTRA)
|
INCLUDES += -I$(APPSDIR)/$(APPEXTRA)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS = $(GCCOPTS) \
|
MUSEPACKOPTS = -O2
|
||||||
|
CFLAGS = $(GCCOPTS) $(MUSEPACKOPTS)\
|
||||||
$(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE}
|
$(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE}
|
||||||
|
|
||||||
# This sets up 'SRC' based on the files mentioned in SOURCES
|
# This sets up 'SRC' based on the files mentioned in SOURCES
|
||||||
|
|
|
@ -99,8 +99,24 @@ static inline MPC_SAMPLE_FORMAT MPC_MULTIPLY_EX(MPC_SAMPLE_FORMAT item1,MPC_SAMP
|
||||||
#ifdef MPC_HAVE_MULHIGH
|
#ifdef MPC_HAVE_MULHIGH
|
||||||
#define MPC_MULTIPLY_FRACT(X,Y) _MulHigh(X,Y)
|
#define MPC_MULTIPLY_FRACT(X,Y) _MulHigh(X,Y)
|
||||||
#else
|
#else
|
||||||
|
#if CONFIG_CPU==MCF5249 && !defined(SIMULATOR)
|
||||||
|
/* loses one bit of accuracy.
|
||||||
|
the rest of the macros won't be as easy as this... */
|
||||||
|
#define MPC_MULTIPLY_FRACT(X,Y) \
|
||||||
|
({ \
|
||||||
|
MPC_SAMPLE_FORMAT t; \
|
||||||
|
asm volatile ( \
|
||||||
|
"mac.l %[A], %[B], %%acc0\n\t" \
|
||||||
|
"movclr.l %%acc0, %[t]\n\t" \
|
||||||
|
"asr.l #1, %[t]\n\t" \
|
||||||
|
: [t] "=d" (t) \
|
||||||
|
: [A] "r" ((X)), [B] "r" ((Y))); \
|
||||||
|
t; \
|
||||||
|
})
|
||||||
|
#else
|
||||||
#define MPC_MULTIPLY_FRACT(X,Y) MPC_MULTIPLY_EX(X,Y,32)
|
#define MPC_MULTIPLY_FRACT(X,Y) MPC_MULTIPLY_EX(X,Y,32)
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MPC_MAKE_FRACT_CONST(X) (MPC_SAMPLE_FORMAT)((X) * (double)(((mpc_int64_t)1)<<32) )
|
#define MPC_MAKE_FRACT_CONST(X) (MPC_SAMPLE_FORMAT)((X) * (double)(((mpc_int64_t)1)<<32) )
|
||||||
#define MPC_MULTIPLY_FRACT_CONST(X,Y) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST(Y))
|
#define MPC_MULTIPLY_FRACT_CONST(X,Y) MPC_MULTIPLY_FRACT(X,MPC_MAKE_FRACT_CONST(Y))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue