Mercurial > mplayer.hg
comparison liba52/downmix.c @ 3624:0e4ff1cac6a2
sse opt of mix32to2()
author | michael |
---|---|
date | Wed, 19 Dec 2001 18:58:05 +0000 |
parents | 35b18ed357c2 |
children | 84ff13d4540c |
comparison
equal
deleted
inserted
replaced
3623:3f1c2c06d0d8 | 3624:0e4ff1cac6a2 |
---|---|
409 static void mix32to2 (sample_t * samples, sample_t bias) | 409 static void mix32to2 (sample_t * samples, sample_t bias) |
410 { | 410 { |
411 int i; | 411 int i; |
412 sample_t common; | 412 sample_t common; |
413 | 413 |
414 #ifdef HAVE_SSE | |
415 asm volatile( | |
416 "movlps %1, %%xmm7 \n\t" | |
417 "shufps $0x00, %%xmm7, %%xmm7 \n\t" | |
418 "movl $-1024, %%esi \n\t" | |
419 "1: \n\t" | |
420 "movaps 1024(%0, %%esi), %%xmm0 \n\t" | |
421 "addps %%xmm7, %%xmm0 \n\t" // common | |
422 "movaps %%xmm0, %%xmm1 \n\t" // common | |
423 "addps (%0, %%esi), %%xmm0 \n\t" | |
424 "addps 2048(%0, %%esi), %%xmm1 \n\t" | |
425 "addps 3072(%0, %%esi), %%xmm0 \n\t" | |
426 "addps 4096(%0, %%esi), %%xmm1 \n\t" | |
427 "movaps %%xmm0, (%0, %%esi) \n\t" | |
428 "movaps %%xmm1, 1024(%0, %%esi) \n\t" | |
429 "addl $16, %%esi \n\t" | |
430 " jnz 1b \n\t" | |
431 :: "r" (samples+256), "m" (bias) | |
432 : "%esi" | |
433 ); | |
434 #else | |
414 for (i = 0; i < 256; i++) { | 435 for (i = 0; i < 256; i++) { |
415 common = samples[i + 256] + bias; | 436 common = samples[i + 256] + bias; |
416 samples[i] += common + samples[i + 768]; | 437 samples[i] += common + samples[i + 768]; |
417 samples[i + 256] = common + samples[i + 512] + samples[i + 1024]; | 438 samples[i + 256] = common + samples[i + 512] + samples[i + 1024]; |
418 } | 439 } |
440 #endif | |
419 } | 441 } |
420 | 442 |
421 static void mix32toS (sample_t * samples, sample_t bias) | 443 static void mix32toS (sample_t * samples, sample_t bias) |
422 { | 444 { |
423 int i; | 445 int i; |