Ignore:
Timestamp:
Apr 17, 2019, 12:58:41 AM (5 years ago)
Author:
chronos
Message:
  • Modified: Propagate project build mode options to used packages.
  • Added: Check memory leaks using heaptrc.
  • Modified: Update BGRABitmap package.
Location:
GraphicTest
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • GraphicTest

    • Property svn:ignore
      •  

        old new  
        88GraphicTest.lps
        99GraphicTest.dbg
         10heaptrclog.trc
  • GraphicTest/Packages/bgrabitmap/bgramatrix3d.pas

    r494 r521  
    434434
    435435operator*(constref A: TMatrix3D; var M: TPoint3D_128): TPoint3D_128;
    436 {$IFDEF BGRASSE_AVAILABLE}var oldMt: single; {$ENDIF}
     436{$IFDEF BGRASSE_AVAILABLE}var oldMt: single; resultAddr: pointer;{$ENDIF}
    437437begin
    438438  {$IFDEF BGRASSE_AVAILABLE}
     
    441441    oldMt := M.t;
    442442    M.t := SingleConst1;
     443    resultAddr := @result;
     444    {$IFDEF cpux86_64}
    443445    if UseSSE3 then
    444446    asm
    445       mov eax, A
    446       movups xmm5, [eax]
    447       movups xmm6, [eax+16]
    448       movups xmm7, [eax+32]
    449 
    450       mov eax, M
    451       movups xmm0, [eax]
    452 
    453       mov eax, result
     447      mov rax, A
     448      movups xmm5, [rax]
     449      movups xmm6, [rax+16]
     450      movups xmm7, [rax+32]
     451
     452      mov rax, M
     453      movups xmm0, [rax]
     454
     455      mov rax, resultAddr
    454456
    455457      movaps xmm4,xmm0
     
    457459      haddps xmm4,xmm4
    458460      haddps xmm4,xmm4
    459       movss [eax], xmm4
     461      movss [rax], xmm4
    460462
    461463      movaps xmm4,xmm0
     
    463465      haddps xmm4,xmm4
    464466      haddps xmm4,xmm4
    465       movss [eax+4], xmm4
     467      movss [rax+4], xmm4
    466468
    467469      mulps xmm0,xmm7
    468470      haddps xmm0,xmm0
    469471      haddps xmm0,xmm0
    470       movss [eax+8], xmm0
     472      movss [rax+8], xmm0
    471473    end else
    472474    asm
    473       mov eax, A
    474       movups xmm5, [eax]
    475       movups xmm6, [eax+16]
    476       movups xmm7, [eax+32]
    477 
    478       mov eax, M
    479       movups xmm0, [eax]
    480 
    481       mov eax, result
     475      mov rax, A
     476      movups xmm5, [rax]
     477      movups xmm6, [rax+16]
     478      movups xmm7, [rax+32]
     479
     480      mov rax, M
     481      movups xmm0, [rax]
     482
     483      mov rax, resultAddr
    482484
    483485      movaps xmm4,xmm0
     
    492494      addps xmm4, xmm3
    493495
    494       movss [eax], xmm4
     496      movss [rax], xmm4
    495497
    496498      movaps xmm4,xmm0
     
    505507      addps xmm4, xmm3
    506508
    507       movss [eax+4], xmm4
     509      movss [rax+4], xmm4
    508510
    509511      mulps xmm0,xmm7
     
    517519      addps xmm0, xmm3
    518520
     521      movss [rax+8], xmm0
     522    end;
     523    {$ELSE}
     524    if UseSSE3 then
     525    asm
     526      mov eax, A
     527      movups xmm5, [eax]
     528      movups xmm6, [eax+16]
     529      movups xmm7, [eax+32]
     530
     531      mov eax, M
     532      movups xmm0, [eax]
     533
     534      mov eax, resultAddr
     535
     536      movaps xmm4,xmm0
     537      mulps xmm4,xmm5
     538      haddps xmm4,xmm4
     539      haddps xmm4,xmm4
     540      movss [eax], xmm4
     541
     542      movaps xmm4,xmm0
     543      mulps xmm4,xmm6
     544      haddps xmm4,xmm4
     545      haddps xmm4,xmm4
     546      movss [eax+4], xmm4
     547
     548      mulps xmm0,xmm7
     549      haddps xmm0,xmm0
     550      haddps xmm0,xmm0
     551      movss [eax+8], xmm0
     552    end else
     553    asm
     554      mov eax, A
     555      movups xmm5, [eax]
     556      movups xmm6, [eax+16]
     557      movups xmm7, [eax+32]
     558
     559      mov eax, M
     560      movups xmm0, [eax]
     561
     562      mov eax, resultAddr
     563
     564      movaps xmm4,xmm0
     565      mulps xmm4,xmm5
     566      //mix1
     567      movaps xmm3, xmm4
     568      shufps xmm3, xmm3, $4e
     569      addps xmm4, xmm3
     570      //mix2
     571      movaps xmm3, xmm4
     572      shufps xmm3, xmm3, $11
     573      addps xmm4, xmm3
     574
     575      movss [eax], xmm4
     576
     577      movaps xmm4,xmm0
     578      mulps xmm4,xmm6
     579      //mix1
     580      movaps xmm3, xmm4
     581      shufps xmm3, xmm3, $4e
     582      addps xmm4, xmm3
     583      //mix2
     584      movaps xmm3, xmm4
     585      shufps xmm3, xmm3, $11
     586      addps xmm4, xmm3
     587
     588      movss [eax+4], xmm4
     589
     590      mulps xmm0,xmm7
     591      //mix1
     592      movaps xmm3, xmm0
     593      shufps xmm3, xmm3, $4e
     594      addps xmm0, xmm3
     595      //mix2
     596      movaps xmm3, xmm0
     597      shufps xmm3, xmm3, $11
     598      addps xmm0, xmm3
     599
    519600      movss [eax+8], xmm0
    520601    end;
     602    {$ENDIF}
    521603    M.t := oldMt;
    522604    result.t := 0;
Note: See TracChangeset for help on using the changeset viewer.