1
0
Fork 0
forked from len0rd/rockbox

Use more IRAM on S5L870x to speed up wmapro by ~2%.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29906 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Andree Buschmann 2011-05-20 23:28:09 +00:00
parent 99494140da
commit 609c526d56
3 changed files with 22 additions and 10 deletions

View file

@ -571,9 +571,9 @@ int init_vlc_sparse(VLC *vlc, int nb_bits, int nb_codes,
#define INIT_VLC_USE_NEW_STATIC 4
void free_vlc(VLC *vlc);
#define INIT_VLC_STATIC(vlc, bits, a,b,c,d,e,f,g, static_size)\
#define INIT_VLC_STATIC(vlc, bits, a,b,c,d,e,f,g, static_size, attr)\
{\
static VLC_TYPE table[static_size][2];\
static VLC_TYPE table[static_size][2] attr;\
(vlc)->table= table;\
(vlc)->table_allocated= static_size;\
init_vlc(vlc, bits, a,b,c,d,e,f,g, INIT_VLC_USE_NEW_STATIC);\

View file

@ -400,31 +400,31 @@ int decode_init(asf_waveformatex_t *wfx)
INIT_VLC_STATIC(&sf_vlc, SCALEVLCBITS, HUFF_SCALE_SIZE,
scale_huffbits, 1, 1,
scale_huffcodes, 2, 2, 616);
scale_huffcodes, 2, 2, 616, IBSS_ATTR_WMAPRO_VLC_TABLES);
INIT_VLC_STATIC(&sf_rl_vlc, VLCBITS, HUFF_SCALE_RL_SIZE,
scale_rl_huffbits, 1, 1,
scale_rl_huffcodes, 4, 4, 1406);
scale_rl_huffcodes, 4, 4, 1406, IBSS_ATTR_WMAPRO_VLC_TABLES);
INIT_VLC_STATIC(&coef_vlc[0], VLCBITS, HUFF_COEF0_SIZE,
coef0_huffbits, 1, 1,
coef0_huffcodes, 4, 4, 2108);
coef0_huffcodes, 4, 4, 2108, IBSS_ATTR_WMAPRO_VLC_TABLES);
INIT_VLC_STATIC(&coef_vlc[1], VLCBITS, HUFF_COEF1_SIZE,
coef1_huffbits, 1, 1,
coef1_huffcodes, 4, 4, 3912);
coef1_huffcodes, 4, 4, 3912, IBSS_ATTR_WMAPRO_VLC_TABLES);
INIT_VLC_STATIC(&vec4_vlc, VLCBITS, HUFF_VEC4_SIZE,
vec4_huffbits, 1, 1,
vec4_huffcodes, 2, 2, 604);
vec4_huffcodes, 2, 2, 604, IBSS_ATTR_WMAPRO_VLC_TABLES);
INIT_VLC_STATIC(&vec2_vlc, VLCBITS, HUFF_VEC2_SIZE,
vec2_huffbits, 1, 1,
vec2_huffcodes, 2, 2, 562);
vec2_huffcodes, 2, 2, 562, IBSS_ATTR_WMAPRO_VLC_TABLES);
INIT_VLC_STATIC(&vec1_vlc, VLCBITS, HUFF_VEC1_SIZE,
vec1_huffbits, 1, 1,
vec1_huffcodes, 2, 2, 562);
vec1_huffcodes, 2, 2, 562, IBSS_ATTR_WMAPRO_VLC_TABLES);
/** calculate number of scale factor bands and their offsets
for every possible block size */

View file

@ -7,24 +7,36 @@
#define IBSS_ATTR_WMAPRO_LARGE_IRAM IBSS_ATTR
#define ICODE_ATTR_WMAPRO_LARGE_IRAM
#define ICONST_ATTR_WMAPRO_LARGE_IRAM ICONST_ATTR
#define IBSS_ATTR_WMAPRO_VLC_TABLES
#define ICONST_ATTR_WMAPRO_WIN_VS_TMP
#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024) || defined(CPU_S5L870X)
#elif (CONFIG_CPU == PP5022) || (CONFIG_CPU == PP5024)
/* Enough IRAM to move additional data and code to it. */
#define IBSS_ATTR_WMAPRO_LARGE_IRAM IBSS_ATTR
#define ICODE_ATTR_WMAPRO_LARGE_IRAM ICODE_ATTR
#define ICONST_ATTR_WMAPRO_LARGE_IRAM ICONST_ATTR
#define IBSS_ATTR_WMAPRO_VLC_TABLES
#define ICONST_ATTR_WMAPRO_WIN_VS_TMP
#elif defined(CPU_S5L870X)
/* Enough IRAM to move additional data and code to it. */
#define IBSS_ATTR_WMAPRO_LARGE_IRAM IBSS_ATTR
#define ICODE_ATTR_WMAPRO_LARGE_IRAM ICODE_ATTR
#define ICONST_ATTR_WMAPRO_LARGE_IRAM ICONST_ATTR
#define IBSS_ATTR_WMAPRO_VLC_TABLES IBSS_ATTR
#define ICONST_ATTR_WMAPRO_WIN_VS_TMP ICONST_ATTR
#else
/* Not enough IRAM available. */
#define IBSS_ATTR_WMAPRO_LARGE_IRAM
#define ICODE_ATTR_WMAPRO_LARGE_IRAM
#define ICONST_ATTR_WMAPRO_LARGE_IRAM
#define IBSS_ATTR_WMAPRO_VLC_TABLES
/* Models with large IRAM put tmp to IRAM rather than window coefficients as
* this is the fastest option. On models with smaller IRAM the 2nd-best option
* is to move the window coefficients to IRAM. */
#define ICONST_ATTR_WMAPRO_WIN_VS_TMP ICONST_ATTR
#endif
int decode_init(asf_waveformatex_t *wfx);