Skip to content

Commit

Permalink
Some more Lazarus adaptions. The native x64 code is still not fully w…
Browse files Browse the repository at this point in the history
…orking, but at least it compiles...
  • Loading branch information
CWBudde committed Jun 28, 2021
1 parent 31123ed commit 14059bb
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 9 deletions.
28 changes: 26 additions & 2 deletions Source/GR32_ColorGradients.pas
Expand Up @@ -855,9 +855,17 @@ function Linear3PointInterpolation_SSE2(A, B, C: TColor32; WA, WB, WC: Single):
MOVQ XMM0,XMM3
SHUFPS XMM0,XMM0,0

MOVD XMM1,[WB] // probably use [RBP + $30] for FPC, otherwise load WB to EAX first and then to XMM1 (see implementation in the function below)
{$IFDEF FPC}
MOVD XMM1,[RBP + $30]
{$ELSE}
MOVD XMM1,WB
{$ENDIF}
SHUFPS XMM1,XMM1,0
MOVD XMM2,[WC]
{$IFDEF FPC}
MOVD XMM2,[RBP + $38]
{$ELSE}
MOVD XMM2,WC
{$ENDIF}
SHUFPS XMM2,XMM2,0

PXOR XMM3,XMM3
Expand Down Expand Up @@ -949,12 +957,20 @@ function Linear4PointInterpolation_SSE2(A, B, C, D: TColor32; WA, WB, WC, WD: Si
PUNPCKLWD XMM1,XMM7
CVTDQ2PS XMM1,XMM1

{$IFDEF FPC}
MOV EAX, [RBP + $30]
{$ELSE}
MOV EAX, WA
{$ENDIF}
MOVD XMM4,EAX
SHUFPS XMM4,XMM4,0
MULPS XMM0,XMM4

{$IFDEF FPC}
MOV EDX, [RBP + $38]
{$ELSE}
MOV EDX, WB
{$ENDIF}
MOVD XMM5,EDX
SHUFPS XMM5,XMM5,0
MULPS XMM1,XMM5
Expand All @@ -969,12 +985,20 @@ function Linear4PointInterpolation_SSE2(A, B, C, D: TColor32; WA, WB, WC, WD: Si
PUNPCKLWD XMM3,XMM7
CVTDQ2PS XMM3,XMM3

{$IFDEF FPC}
MOV EAX, [RBP + $40]
{$ELSE}
MOV EAX, WC
{$ENDIF}
MOVD XMM4,EAX
SHUFPS XMM4,XMM4,0
MULPS XMM2,XMM4

{$IFDEF FPC}
MOV EDX, [RBP + $48]
{$ELSE}
MOV EDX, WD
{$ENDIF}
MOVD XMM5,EDX
SHUFPS XMM5,XMM5,0
MULPS XMM3,XMM5
Expand Down
3 changes: 2 additions & 1 deletion Source/GR32_Compiler.inc
Expand Up @@ -546,9 +546,10 @@
{$DEFINE RGBA_FORMAT}

{$IF DEFINED(CPUx86_64)}
{$DEFINE PUREPASCAL}
{$ELSEIF DEFINED(CPUi386)}
{$ELSE}
{-$DEFINE PUREPASCAL}
{$DEFINE PUREPASCAL}
{$ENDIF}
{$ENDIF}

Expand Down
5 changes: 3 additions & 2 deletions Source/Packages/GR32_DSGN_Lazarus.lpk
Expand Up @@ -7,8 +7,9 @@
<CompilerOptions>
<Version Value="11"/>
<SearchPaths>
<IncludeFiles Value=".."/>
<OtherUnitFiles Value="..;../Packages"/>
<IncludeFiles Value="..;."/>
<Libraries Value="..;."/>
<OtherUnitFiles Value="..;."/>
<UnitOutputDirectory Value="../../Unit Cache/$(TargetCPU)-$(TargetOS)/$(LCLWidgetType)"/>
</SearchPaths>
<Parsing>
Expand Down
7 changes: 3 additions & 4 deletions Source/Packages/GR32_Lazarus.lpk
Expand Up @@ -3,21 +3,20 @@
<Package Version="4">
<PathDelim Value="\"/>
<Name Value="GR32_Lazarus"/>
<Type Value="RunAndDesignTime"/>
<Author Value="Team Graphics32"/>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<SearchPaths>
<IncludeFiles Value=".."/>
<OtherUnitFiles Value=".."/>
<IncludeFiles Value="..;."/>
<Libraries Value="..;."/>
<OtherUnitFiles Value="..;."/>
<UnitOutputDirectory Value="..\..\Unit Cache\$(TargetCPU)-$(TargetOS)\$(LCLWidgetType)"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>
<SyntaxMode Value="Delphi"/>
<CStyleOperator Value="False"/>
<CPPInline Value="False"/>
<UseAnsiStrings Value="False"/>
</SyntaxOptions>
</Parsing>
Expand Down

0 comments on commit 14059bb

Please sign in to comment.