summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-11-11 17:39:01 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-11-11 17:39:01 +0000
commitb2d56462534de5ef754511e54b3e638f20355cae (patch)
tree6730d4fddb207f2a87de87e8af1b2efe0acbf9d4
parentf9d5598a812949b30e5e08e94e091556796c8842 (diff)
downloadfpc-b2d56462534de5ef754511e54b3e638f20355cae.tar.gz
* Attempt to roll back last Hermes merges. TBT on 64-bit.
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/fixes_2_6@26060 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--packages/hermes/Makefile136
-rw-r--r--packages/hermes/Makefile.fpc10
-rw-r--r--packages/hermes/src/factconv.inc12
-rw-r--r--packages/hermes/src/hermes.pp7
-rw-r--r--packages/hermes/src/hermes_factory.inc10
-rw-r--r--packages/hermes/src/x86_64/headx86_64.inc1
-rw-r--r--packages/hermes/src/x86_64/x86_64_i8.inc137
7 files changed, 69 insertions, 244 deletions
diff --git a/packages/hermes/Makefile b/packages/hermes/Makefile
index 2e5ed23a54..b070c071c5 100644
--- a/packages/hermes/Makefile
+++ b/packages/hermes/Makefile
@@ -502,206 +502,200 @@ endif
ifeq ($(FULL_TARGET),i386-haiku)
override COMPILER_OPTIONS+=-dI386_ASSEMBLER
endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_OPTIONS+=-dx86_64_ASSEMBLER
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_OPTIONS+=-dx86_64_ASSEMBLER
-endif
ifeq ($(FULL_TARGET),i386-linux)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-go32v2)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-win32)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-os2)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-freebsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-beos)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-haiku)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-netbsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-solaris)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-qnx)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-netware)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-openbsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-wdosx)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-darwin)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-emx)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-watcom)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-wince)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-embedded)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-symbian)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-nativent)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),m68k-linux)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),m68k-freebsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),m68k-amiga)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),m68k-atari)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),m68k-openbsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),m68k-palmos)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),m68k-embedded)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc-linux)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc-macos)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc-wii)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),sparc-linux)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),sparc-solaris)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),sparc-embedded)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),x86_64-linux)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),x86_64-win64)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),arm-linux)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),arm-palmos)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),arm-darwin)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),arm-wince)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),arm-gba)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),arm-nds)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),arm-embedded)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),arm-symbian)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),avr-embedded)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),armeb-linux)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),armeb-embedded)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),mipsel-linux)
-override COMPILER_INCLUDEDIR+=src $(ARCHINC)
+override COMPILER_INCLUDEDIR+=src
endif
ifeq ($(FULL_TARGET),i386-linux)
override COMPILER_SOURCEDIR+=src tests
diff --git a/packages/hermes/Makefile.fpc b/packages/hermes/Makefile.fpc
index 92dbe9b6ab..a34c89cc40 100644
--- a/packages/hermes/Makefile.fpc
+++ b/packages/hermes/Makefile.fpc
@@ -16,21 +16,13 @@ options_i386_go32v2=-dI386_ASSEMBLER
options_i386_freebsd=-dI386_ASSEMBLER
options_i386_haiku=-dI386_ASSEMBLER
options_i386_beos=-dI386_ASSEMBLER
-options_x86_64_linux=-dx86_64_ASSEMBLER
-options_x86_64_win32=-dx86_64_ASSEMBLER
-options_x86_64_go32v2=-dx86_64_ASSEMBLER
-options_x86_64_freebsd=-dx86_64_ASSEMBLER
-options_x86_64_haiku=-dx86_64_ASSEMBLER
-options_x86_64_beos=-dx86_64_ASSEMBLER
unitdir=
targetdir=.
-includedir=src $(ARCHINC)
+includedir=src
sourcedir=src tests
[install]
-ARCHINC=src/$(ARCH)
-
fpcpackage=y
[default]
diff --git a/packages/hermes/src/factconv.inc b/packages/hermes/src/factconv.inc
index 74d7cbf741..84af202387 100644
--- a/packages/hermes/src/factconv.inc
+++ b/packages/hermes/src/factconv.inc
@@ -58,20 +58,10 @@ end;
const
Factory_NumConverters = 45
- {$IFDEF I386_ASSEMBLER}+27{$ENDIF I386_ASSEMBLER}
- {$IFDEF X86_64_ASSEMBLER}+1{$ENDIF X86_64_ASSEMBLER}
- ;
+ {$IFDEF I386_ASSEMBLER}+27{$ENDIF I386_ASSEMBLER};
Factory_Converters: array [0..Factory_NumConverters - 1] of THermesFactoryStruct =
(
-{$IFDEF X86_64_ASSEMBLER}
- { ------ From 8 bit INDEXED ------- }
- (s_bits:8;s_idx:True;s_r:0;s_g:0;s_b:0;s_a:0;
- d_bits:32;d_idx:False;d_r:0;d_g:0;d_b:0;d_a:0;
- loopnormal:@ConvertX86_64_index8_32;loopstretch:nil;
- normal:@NotApplicable;stretch:nil;
- dither:nil;ditherstretch:nil;processor:PROC_X86_64),
-{$ENDIF X86_64_ASSEMBLER}
{$IFDEF I386_ASSEMBLER}
{ ------ From 32 RGB 888 - MMX PENTIUM II ---- }
(s_bits:32;s_idx:False;s_r:$ff0000;s_g:$ff00;s_b:$ff;s_a:0;
diff --git a/packages/hermes/src/hermes.pp b/packages/hermes/src/hermes.pp
index 70eb1ab657..e31745b087 100644
--- a/packages/hermes/src/hermes.pp
+++ b/packages/hermes/src/hermes.pp
@@ -50,10 +50,6 @@ unit Hermes;
{$ENDIF}
{$ENDIF}
-{$IF defined(cpux86_64) and not defined(noassembler)}
- {$DEFINE X86_64_ASSEMBLER}
-{$ENDIF}
-
interface
const
@@ -468,9 +464,6 @@ var
{$I i386/headi386.inc}
{$I i386/headmmx.inc}
{$ENDIF I386_ASSEMBLER}
-{$IFDEF X86_64_ASSEMBLER}
- {$I x86_64/headx86_64.inc}
-{$ENDIF X86_64_ASSEMBLER}
{$I factconv.inc}
{$I hermes_list.inc}
{$I hermes_utility.inc}
diff --git a/packages/hermes/src/hermes_factory.inc b/packages/hermes/src/hermes_factory.inc
index 09afe3777e..0eed2005bb 100644
--- a/packages/hermes/src/hermes_factory.inc
+++ b/packages/hermes/src/hermes_factory.inc
@@ -34,11 +34,10 @@ var
Processor: Integer;
procedure Hermes_Factory_Init;
-{$IFDEF I386_ASSEMBLER}
var
- res: Integer = 0;
-{$ENDIF I386_ASSEMBLER}
+ res: Integer;
begin
+ res := 0;
Processor := PROC_GENERIC;
{$IFDEF I386_ASSEMBLER}
@@ -51,9 +50,6 @@ begin
{ Writeln('mmx!');}
end;
{$ENDIF I386_ASSEMBLER}
- {$IFDEF X86_64_ASSEMBLER}
- Processor := Processor or PROC_X86_64;
- {$ENDIF X86_64_ASSEMBLER}
end;
function Hermes_Factory_getClearer(bits: Uint32): PHermesClearer;
@@ -263,9 +259,7 @@ end;
function Hermes_Factory_getEqualConverter(bits: Integer): PHermesConverter;
var
found: Boolean;
-{$IFDEF I386_ASSEMBLER}
asm_found: Integer;
-{$ENDIF I386_ASSEMBLER}
c_found: Integer;
begin
found := False;
diff --git a/packages/hermes/src/x86_64/headx86_64.inc b/packages/hermes/src/x86_64/headx86_64.inc
index fee250ed7c..e69de29bb2 100644
--- a/packages/hermes/src/x86_64/headx86_64.inc
+++ b/packages/hermes/src/x86_64/headx86_64.inc
@@ -1 +0,0 @@
-{$I x86_64_i8.inc}
diff --git a/packages/hermes/src/x86_64/x86_64_i8.inc b/packages/hermes/src/x86_64/x86_64_i8.inc
index 249f45d98c..e69de29bb2 100644
--- a/packages/hermes/src/x86_64/x86_64_i8.inc
+++ b/packages/hermes/src/x86_64/x86_64_i8.inc
@@ -1,137 +0,0 @@
-{
- Free Pascal version of the Hermes pixel conversion library.
- Copyright (C) 2012, 2013 Nikolay Nikolov (nickysn@users.sourceforge.net)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version
- with the following modification:
-
- As a special exception, the copyright holders of this library give you
- permission to link this library with independent modules to produce an
- executable, regardless of the license terms of these independent modules,and
- to copy and distribute the resulting executable under terms of your choice,
- provided that you also meet, for each linked independent module, the terms
- and conditions of the license of that module. An independent module is a
- module which is not derived from or based on this library. If you modify
- this library, you may extend this exception to your version of the library,
- but you are not obligated to do so. If you do not wish to do so, delete this
- exception statement from your version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-}
-
-{$ASMMODE intel}
-
-{ -------------------------------------------------------------------------
-
- NORMAL CONVERTERS
-
- ------------------------------------------------------------------------- }
-
-procedure ConvertX86_64_index8_32(iface: PHermesConverterInterface); cdecl;
-label
- preloop_start, preloop_skip, loop_start, loop_pre_remainder, loop_remainder, done;
-var
- i: Integer;
- s_pixel: Uint8;
- d_pixel: Uint32;
- source, dest: PUint8;
- lookup: PUint32;
- s_width: int64;
-begin
- source := iface^.s_pixels;
- dest := iface^.d_pixels;
- lookup := iface^.lookup;
- s_width := iface^.s_width;
- if s_width <= 0 then
- exit;
- repeat
-{ for i := 0 to iface^.s_width - 1 do
- begin}
-{ s_pixel := source^;
- d_pixel := iface^.lookup[s_pixel];
- PUint32(dest)^ := d_pixel or $FF;
- Inc(source);
- Inc(dest, 4);}
- asm
- mov rsi, [source]
- mov rdi, [dest]
- mov rbx, [lookup]
- mov rcx, [s_width]
-
-preloop_start:
- test rdi, 15
- jz preloop_skip
-
- movzx rax, byte [rsi]
- mov edx, dword [rbx + rax * 4]
- movnti [rdi], edx
- inc rsi
- add rdi, 4
- sub rcx, 1
- jz done
- jmp preloop_start
-
-preloop_skip:
- mov r8, rcx
- and r8, 3
- shr rcx, 2
- test rcx, rcx
- jz loop_pre_remainder
-
- align 16
-loop_start:
- movzx rax, byte [rsi]
- movzx r9, byte [rsi + 1]
- movzx r10, byte [rsi + 2]
- movzx r11, byte [rsi + 3]
-
- movd xmm0, dword [rbx + rax * 4]
- movd xmm1, dword [rbx + r9 * 4]
- movd xmm2, dword [rbx + r10 * 4]
- movd xmm3, dword [rbx + r11 * 4]
- punpckldq xmm0, xmm1
- punpckldq xmm2, xmm3
- punpcklqdq xmm0, xmm2
-
- movntdq [rdi], xmm0
- add rsi, 4
- add rdi, 16
- sub ecx, 1
- jnz loop_start
-
-loop_pre_remainder:
- mov rcx, r8
- test rcx, rcx
- jz done
-loop_remainder:
- movzx rax, byte [rsi]
- mov edx, dword [rbx + rax * 4]
- movnti [rdi], edx
- inc rsi
- add rdi, 4
- sub ecx, 1
- jnz loop_remainder
-
-done:
- mov [source], rsi
- mov [dest], rdi
- end;
-{ end;}
- Inc(source, iface^.s_add);
- Inc(dest, iface^.d_add);
- Dec(iface^.s_height);
- until iface^.s_height = 0;
- asm
- sfence
- end;
-end;