Subversion Repositories Kolibri OS

Rev

Rev 695 | Go to most recent revision | Show entire file | Regard 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 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