diff --git a/Source/GR32_ColorGradients.pas b/Source/GR32_ColorGradients.pas index 0c0d6a4a..ef940a85 100644 --- a/Source/GR32_ColorGradients.pas +++ b/Source/GR32_ColorGradients.pas @@ -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 @@ -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 @@ -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 diff --git a/Source/GR32_Compiler.inc b/Source/GR32_Compiler.inc index 64a89141..d9141ff3 100644 --- a/Source/GR32_Compiler.inc +++ b/Source/GR32_Compiler.inc @@ -546,9 +546,10 @@ {$DEFINE RGBA_FORMAT} {$IF DEFINED(CPUx86_64)} + {$DEFINE PUREPASCAL} {$ELSEIF DEFINED(CPUi386)} {$ELSE} - {-$DEFINE PUREPASCAL} + {$DEFINE PUREPASCAL} {$ENDIF} {$ENDIF} diff --git a/Source/Packages/GR32_DSGN_Lazarus.lpk b/Source/Packages/GR32_DSGN_Lazarus.lpk index 7c7d85c1..bab9a5f4 100644 --- a/Source/Packages/GR32_DSGN_Lazarus.lpk +++ b/Source/Packages/GR32_DSGN_Lazarus.lpk @@ -7,8 +7,9 @@ - - + + + diff --git a/Source/Packages/GR32_Lazarus.lpk b/Source/Packages/GR32_Lazarus.lpk index f29fae5a..3b6986eb 100644 --- a/Source/Packages/GR32_Lazarus.lpk +++ b/Source/Packages/GR32_Lazarus.lpk @@ -3,21 +3,20 @@ - - - + + + -