Subversion Repositories Kolibri OS

Rev

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