Rev 695 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 695 | Rev 697 | ||
---|---|---|---|
Line 34... | Line 34... | ||
34 | lea eax, [mix_list] |
34 | lea eax, [mix_list] |
35 | call do_mix_list |
35 | call do_mix_list |
36 | test eax, eax |
36 | test eax, eax |
37 | je .done |
37 | je .done |
Line -... | Line 38... | ||
- | 38 | ||
- | 39 | if USE_SSE2_MIXER |
|
38 | 40 | ||
39 | cmp eax, 1 |
41 | cmp eax, 1 |
40 | ja @F |
42 | ja @F |
41 | ;use fast path |
43 | ;use fast path |
42 | mov edi, [output] |
44 | mov edi, [output] |
43 | lea edx, [mix_list] |
45 | lea edx, [mix_list] |
44 | call mix_fast |
46 | call mix_fast |
45 | jmp .next |
47 | jmp .next |
- | 48 | @@: |
|
- | 49 | cmp eax, 2 |
|
- | 50 | ja @F |
|
- | 51 | ||
- | 52 | mov edi, [output] |
|
- | 53 | lea edx, [mix_list] |
|
- | 54 | call mix_fast_2_stream |
|
- | 55 | jmp .next |
|
- | 56 | @@: |
|
- | 57 | ||
- | 58 | end if |
|
46 | @@: |
59 | |
47 | lea ebx, [mix_list] |
60 | lea ebx, [mix_list] |
48 | stdcall mix_all, [output], ebx, eax |
61 | stdcall mix_all, [output], ebx, eax |
49 | .next: |
62 | .next: |
50 | add [output], 512 |
63 | add [output], 512 |
Line 344... | Line 357... | ||
344 | movss xmm3, [edx+8] ; vol Rf |
357 | movss xmm3, [edx+8] ; vol Rf |
345 | shufps xmm2, xmm3, 0 ; Rf Rf Lf Lf |
358 | shufps xmm2, xmm3, 0 ; Rf Rf Lf Lf |
346 | shufps xmm2, xmm2, 0x88 ; volume level Rf Lf Rf Lf |
359 | shufps xmm2, xmm2, 0x88 ; volume level Rf Lf Rf Lf |
347 | .mix: |
360 | .mix: |
348 | movdqa xmm1, [eax] ; R3w L3w R2w L2w R1w L1w R0w L0w |
361 | movdqa xmm1, [eax] ; R3w L3w R2w L2w R1w L1w R0w L0w |
349 | add eax, 16 |
362 | add eax, 16 |
350 | punpcklwd xmm0, xmm1 ; R1w R1w L1w L1W R0w R0w L0w L0w |
363 | punpcklwd xmm0, xmm1 ; R1w R1w L1w L1W R0w R0w L0w L0w |
351 | punpckhwd xmm1, xmm1 ; R3w R3w L3w L3w R2w R2w L2w L2w |
364 | punpckhwd xmm1, xmm1 ; R3w R3w L3w L3w R2w R2w L2w L2w |
Line 352... | Line 365... | ||
352 | 365 | ||
353 | psrad xmm0, 16 ; R1d L1d R0d L0d |
366 | psrad xmm0, 16 ; R1d L1d R0d L0d |
Line 361... | Line 374... | ||
361 | 374 | ||
362 | cvtps2dq xmm0, xmm0 ; R1d' L1d' R0d' L0d' |
375 | cvtps2dq xmm0, xmm0 ; R1d' L1d' R0d' L0d' |
363 | cvtps2dq xmm1, xmm1 ; R3d' L3d' R2d' L2d' |
376 | cvtps2dq xmm1, xmm1 ; R3d' L3d' R2d' L2d' |
364 | packssdw xmm0, xmm0 ; R1w' L1w' R0w' L0w' R1w' L1w' R0w' L0w' |
377 | packssdw xmm0, xmm0 ; R1w' L1w' R0w' L0w' R1w' L1w' R0w' L0w' |
- | 378 | packssdw xmm1, xmm1 ; R3w' L3w' R2w' L2w' R3w' L3w' R2w' L2w' |
|
- | 379 | punpcklqdq xmm0, xmm1 ; R3w' L3w' R2w' L2w' R1w' L1w' R0w' L0w' |
|
- | 380 | movntdq [edi], xmm0 |
|
- | 381 | ||
- | 382 | add edi, 16 |
|
- | 383 | dec ebx |
|
- | 384 | jnz .mix |
|
- | 385 | ||
- | 386 | ret |
|
- | 387 | ||
- | 388 | align 4 |
|
- | 389 | mix_fast_2_stream: |
|
- | 390 | ||
- | 391 | mov ebx, 32 |
|
- | 392 | mov eax, [edx] |
|
- | 393 | ||
- | 394 | movss xmm4, [edx+4] ; vol Lf |
|
- | 395 | movss xmm5, [edx+8] ; vol Rf |
|
- | 396 | mov ecx, [edx+12] |
|
- | 397 | ||
- | 398 | movss xmm6, [edx+16] ; vol Lf |
|
- | 399 | movss xmm7, [edx+20] ; vol Rf |
|
- | 400 | ||
- | 401 | shufps xmm4, xmm5, 0 ; Rf Rf Lf Lf |
|
- | 402 | shufps xmm4, xmm4, 0x88 ; volume level Rf Lf Rf Lf |
|
- | 403 | ||
- | 404 | shufps xmm6, xmm7, 0 ; Rf Rf Lf Lf |
|
- | 405 | shufps xmm6, xmm6, 0x88 ; volume level Rf Lf Rf Lf |
|
- | 406 | ||
- | 407 | .mix: |
|
- | 408 | movdqa xmm1, [eax] ; R3w L3w R2w L2w R1w L1w R0w L0w |
|
- | 409 | movdqa xmm3, [ecx] ; R3w L3w R2w L2w R1w L1w R0w L0w |
|
- | 410 | ||
- | 411 | add eax, 16 |
|
- | 412 | add ecx, 16 |
|
- | 413 | ||
- | 414 | punpcklwd xmm0, xmm1 ; R1w R1w L1w L1W R0w R0w L0w L0w |
|
- | 415 | punpckhwd xmm1, xmm1 ; R3w R3w L3w L3w R2w R2w L2w L2w |
|
- | 416 | ||
- | 417 | psrad xmm0, 16 ; R1d L1d R0d L0d |
|
- | 418 | psrad xmm1, 16 ; R3d L3d R2d L2d |
|
- | 419 | ||
- | 420 | cvtdq2ps xmm0, xmm0 ; time to use all power |
|
- | 421 | cvtdq2ps xmm1, xmm1 ; of the dark side |
|
- | 422 | ||
- | 423 | mulps xmm0, xmm4 ; R1f' L1f' R0f' L0f' |
|
- | 424 | mulps xmm1, xmm4 ; R3f' L3f' R2f' L2f' |
|
- | 425 | ||
- | 426 | punpcklwd xmm2, xmm3 ; R1w R1w L1w L1W R0w R0w L0w L0w |
|
- | 427 | punpckhwd xmm3, xmm3 ; R3w R3w L3w L3w R2w R2w L2w L2w |
|
- | 428 | ||
- | 429 | psrad xmm2, 16 ; R1d L1d R0d L0d |
|
- | 430 | psrad xmm3, 16 ; R3d L3d R2d L2d |
|
- | 431 | ||
- | 432 | cvtdq2ps xmm2, xmm2 ; time to use all power |
|
- | 433 | cvtdq2ps xmm3, xmm3 ; of the dark side |
|
- | 434 | ||
- | 435 | mulps xmm2, xmm6 ; R1f' L1f' R0f' L0f' |
|
- | 436 | mulps xmm3, xmm6 ; R3f' L3f' R2f' L2f' |
|
- | 437 | ||
- | 438 | addps xmm0, xmm2 |
|
- | 439 | addps xmm1, xmm3 |
|
- | 440 | ||
- | 441 | cvtps2dq xmm0, xmm0 ; R1d' L1d' R0d' L0d' |
|
- | 442 | cvtps2dq xmm1, xmm1 ; R3d' L3d' R2d' L2d' |
|
- | 443 | packssdw xmm0, xmm0 ; R1w' L1w' R0w' L0w' R1w' L1w' R0w' L0w' |
|
365 | packssdw xmm1, xmm1 ; R3w' L3w' R2w' L2w' R3w' L3w' R2w' L2w' |
444 | packssdw xmm1, xmm1 ; R3w' L3w' R2w' L2w' R3w' L3w' R2w' L2w' |
366 | punpcklqdq xmm0, xmm1 ; R3w' L3w' R2w' L2w' R1w' L1w' R0w' L0w' |
445 | punpcklqdq xmm0, xmm1 ; R3w' L3w' R2w' L2w' R1w' L1w' R0w' L0w' |
Line 367... | Line 446... | ||
367 | movntdq [edi], xmm0 |
446 | movntdq [edi], xmm0 |
368 | 447 |