lavc/dsd_tablegen: speed up table generation
Tables are bit identical. Sample benchmark (Haswell, GNU/Linux+gcc): old: 814485 decicycles in dsd_ctables_tableinit, 512 runs, 0 skips new: 356808 decicycles in dsd_ctable_tableinit, 512 runs, 0 skips Binary size should essentially be identical, and is in fact identical on the configuration I tested on. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
This commit is contained in:
		@@ -78,16 +78,17 @@ static float ctables[CTABLES][256];
 | 
			
		||||
 | 
			
		||||
static av_cold void dsd_ctables_tableinit(void)
 | 
			
		||||
{
 | 
			
		||||
    int t, e, m, k;
 | 
			
		||||
    double acc;
 | 
			
		||||
    for (t = 0; t < CTABLES; ++t) {
 | 
			
		||||
        k = FFMIN(HTAPS - t * 8, 8);
 | 
			
		||||
        for (e = 0; e < 256; ++e) {
 | 
			
		||||
            acc = 0.0;
 | 
			
		||||
            for (m = 0; m < k; ++m)
 | 
			
		||||
                acc += (((e >> (7 - m)) & 1) * 2 - 1) * htaps[t * 8 + m];
 | 
			
		||||
            ctables[CTABLES - 1 - t][e] = (float)acc;
 | 
			
		||||
    int t, e, m, sign;
 | 
			
		||||
    double acc[CTABLES];
 | 
			
		||||
    for (e = 0; e < 256; ++e) {
 | 
			
		||||
        memset(acc, 0, sizeof(acc));
 | 
			
		||||
        for (m = 0; m < 8; ++m) {
 | 
			
		||||
            sign = (((e >> (7 - m)) & 1) * 2 - 1);
 | 
			
		||||
            for (t = 0; t < CTABLES; ++t)
 | 
			
		||||
                acc[t] += sign * htaps[t * 8 + m];
 | 
			
		||||
        }
 | 
			
		||||
        for (t = 0; t < CTABLES; ++t)
 | 
			
		||||
            ctables[CTABLES - 1 - t][e] = acc[t];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
#endif /* CONFIG_HARDCODED_TABLES */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user