Rev 9237 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9237 | Rev 9512 | ||
---|---|---|---|
Line 243... | Line 243... | ||
243 | ;------------------------ edi - pointer to 2nd 3d point --- |
243 | ;------------------------ edi - pointer to 2nd 3d point --- |
244 | ;------------------------ ebx - pointer to result vector -- |
244 | ;------------------------ ebx - pointer to result vector -- |
245 | ;---------------------- out : none ------------------------ |
245 | ;---------------------- out : none ------------------------ |
Line 246... | Line 246... | ||
246 | 246 | ||
247 | make_vector_r: |
247 | make_vector_r: |
248 | if Ext < SSE2 |
248 | if Ext < SSE |
249 | fninit |
249 | fninit |
250 | fld dword[edi] ;edi+x3d |
250 | fld dword[edi] ;edi+x3d |
251 | fsub dword[esi] ;esi+x3d |
251 | fsub dword[esi] ;esi+x3d |
Line 295... | Line 295... | ||
295 | fmul dword [edi+vec_x] |
295 | fmul dword [edi+vec_x] |
296 | fsubp ;st1 ,st |
296 | fsubp ;st1 ,st |
297 | fstp dword [ebx+vec_z] |
297 | fstp dword [ebx+vec_z] |
298 | ret |
298 | ret |
299 | cross_aligned: |
299 | cross_aligned: |
- | 300 | ; params as above cross_p |
|
300 | movaps xmm0,[esi] |
301 | movaps xmm0,[esi] |
301 | movaps xmm1,[esi] |
302 | movaps xmm1,[esi] |
302 | movaps xmm2,[edi] |
303 | movaps xmm2,[edi] |
303 | movaps xmm3,[edi] |
304 | movaps xmm3,[edi] |
304 | shufps xmm0,xmm0,00001001b |
305 | shufps xmm0,xmm0,00001001b |
Line 605... | Line 606... | ||
605 | end if |
606 | end if |
606 | ret |
607 | ret |
607 | ;---------------------------------------------- |
608 | ;---------------------------------------------- |
608 | ; esi - pointer to 3x3 matrix |
609 | ; esi - pointer to 3x3 matrix |
609 | add_scale_to_matrix: |
610 | add_scale_to_matrix: |
- | 611 | if Ext>SSE |
|
- | 612 | movss xmm0,[rsscale] |
|
- | 613 | shufps xmm0,xmm0,0 |
|
- | 614 | movups xmm1,[esi] |
|
- | 615 | movups xmm2,[esi+16] |
|
- | 616 | movss xmm3,[esi+32] |
|
- | 617 | mulps xmm1,xmm0 |
|
- | 618 | mulps xmm2,xmm0 |
|
- | 619 | mulss xmm3,xmm0 |
|
- | 620 | movups [esi],xmm1 |
|
- | 621 | movups [esi+16],xmm2 |
|
- | 622 | movss [esi+32],xmm3 |
|
- | 623 | else |
|
610 | fninit |
624 | fninit |
611 | fld [rsscale] |
625 | fld [rsscale] |
612 | fld dword[esi] ;----- |
626 | fld dword[esi] ;----- |
613 | fmul st,st1 |
627 | fmul st,st1 |
614 | fstp dword[esi] |
628 | fstp dword[esi] |
Line 637... | Line 651... | ||
637 | fmul st,st1 |
651 | fmul st,st1 |
638 | fstp dword[esi+20] |
652 | fstp dword[esi+20] |
639 | fld dword[esi+32] |
653 | fld dword[esi+32] |
640 | fmulp st1,st |
654 | fmulp st1,st |
641 | fstp dword[esi+32] ;------ |
655 | fstp dword[esi+32] ;------ |
642 | 656 | end if |
|
643 | ret |
657 | ret |
Line 644... | Line 658... | ||
644 | 658 | ||
645 | ;in esi - offset to 3d points (point as 3 dwords float) |
659 | ;in esi - offset to 3d points (point as 3 dwords float) |
646 | ; edi - offset to 2d points ( as 3 words integer) |
660 | ; edi - offset to 2d points ( as 3 words integer) |
647 | ; ecx - number of points |
661 | ; ecx - number of points |
- | 662 | translate_points: ; just convert into integer; z coord still needed |
|
648 | translate_points: ; just convert into integer; z coord still needed |
663 | if Ext < SSE |
- | 664 | fninit |
|
- | 665 | else |
|
- | 666 | ; movaps xmm1,[vect_x] |
|
- | 667 | end if |
|
649 | fninit |
668 | |
650 | .again: |
669 | .again: |
651 | if 0 |
670 | if 0 |
652 | fld dword[esi+8] |
671 | fld dword[esi+8] |
653 | ; fmul [rsscale] |
672 | ; fmul [rsscale] |
Line 674... | Line 693... | ||
674 | 693 | ||
675 | fiadd [yobs] |
694 | fiadd [yobs] |
676 | fiadd [vect_y] |
695 | fiadd [vect_y] |
677 | fistp word[edi+2] |
696 | fistp word[edi+2] |
- | 697 | end if |
|
678 | end if |
698 | if Ext>=SSE |
- | 699 | movups xmm0,[esi] |
|
- | 700 | cvtps2dq xmm0,xmm0 |
|
- | 701 | packssdw xmm0,xmm0 |
|
- | 702 | paddw xmm0,[vect_x] |
|
- | 703 | movd [edi],xmm0 |
|
- | 704 | ; psrldq xmm0,4 |
|
- | 705 | ; movd eax,xmm0 |
|
- | 706 | pextrw eax,xmm0,6 |
|
- | 707 | mov [edi+4],ax |
|
- | 708 | else |
|
679 | ; movups xmm0,[esi] |
709 | |
680 | ; cvtps2dq xmm0,xmm0 |
710 | ; cvtps2dq xmm0,xmm0 |
681 | ; packsdw xmm0,xmm0 |
711 | ; packsdw xmm0,xmm0 |
682 | ; movq [edi] |
712 | ; movq [edi] |
683 | fld dword[esi] |
713 | fld dword[esi] |
Line 686... | Line 716... | ||
686 | fld dword[esi+4] |
716 | fld dword[esi+4] |
687 | fiadd [vect_y] |
717 | fiadd [vect_y] |
688 | fistp word[edi+2] |
718 | fistp word[edi+2] |
689 | fld dword[esi+8] |
719 | fld dword[esi+8] |
690 | fistp word[edi+4] |
720 | fistp word[edi+4] |
- | 721 | end if |
|
- | 722 | ||
691 | add esi,12 |
723 | add esi,12 |
692 | add edi,6 |
724 | add edi,6 |
693 | dec ecx |
725 | ; dec ecx |
694 | jnz .again |
726 | ; jnz .again |
- | 727 | loop .again |
|
Line 695... | Line 728... | ||
695 | 728 |