Re: [fpc-devel] Testing Intel/AMD AVX-Implemenation

2012-05-03 Thread Sven Barth

Am 03.05.2012 22:34, schrieb Torsten:

While we follow only a few formatting rules in the compiler,
I think this is very hard to read.
- What does rax86.IntToStr?

i need this for create warnings (check memory reference size) and i
don't like include a rtl unit.


SysUtils is already used in ~100 units in the compiler, so you can use 
it as well.


Regards,
Sven
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Testing Intel/AMD AVX-Implemenation

2012-05-03 Thread Torsten

Am 03.05.2012 20:25, schrieb Florian Klämpfl:

Comments:
- I'am not happy with the new fields localvarsize and localconstoffset
in rautils.toprrec. Increasing the size of toprrec will probably
increase memory usage of the compiler, I also didn't get yet the use of
the fields: localsym and localsymofs should allow to figure out the same?

I need a little bit time for this question.


- What's the advantage of the change in itx86int.findreg_by_intname?
we have now more then 127 register: =>> old version works not correct (i 
don't understand why, and so i build a new version



- You use often
   begin
 statement
   end;

sorry, is my favorit style


   While we follow only a few formatting rules in the compiler,
   I think this is very hard to read.
- What does rax86.IntToStr?
i need this for create warnings (check memory reference size) and i 
don't like include a rtl unit.



- I tried to figure out but why is tinsentry.flags a int64?
i had added new const =>> i needed more bits, after redesign i have 
delete this const



- I made a pascal "wrapper" around
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/i386/avx.s?rev=1.8&content-type=text/x-cvsweb-markup&cvsroot=src
and get:

This are not "official" opcodes. Are pseudo opcodes
e.g VCMPEQPD reg1, reg2, reg3  = VCMPPD reg1, reg2, reg3, 0


tavx1.pp(93,9) Error: Unrecognized opcode vcmpeqpd
tavx1.pp(93,18) Error: Assembler syntax error
tavx1.pp(94,9) Error: Unrecognized opcode vcmpeqpd
tavx1.pp(94,19) Error: Assembler syntax error
tavx1.pp(95,9) Error: Unrecognized opcode vcmpltpd
tavx1.pp(95,18) Error: Assembler syntax error
tavx1.pp(96,9) Error: Unrecognized opcode vcmpltpd
tavx1.pp(96,19) Error: Assembler syntax error
tavx1.pp(97,9) Error: Unrecognized opcode vcmplepd
tavx1.pp(97,18) Error: Assembler syntax error
tavx1.pp(98,9) Error: Unrecognized opcode vcmplepd
tavx1.pp(98,19) Error: Assembler syntax error
tavx1.pp(99,9) Error: Unrecognized opcode vcmpunordpd
tavx1.pp(99,21) Error: Assembler syntax error
tavx1.pp(100,9) Error: Unrecognized opcode vcmpunordpd
tavx1.pp(100,22) Error: Assembler syntax error
tavx1.pp(101,9) Error: Unrecognized opcode vcmpneqpd
tavx1.pp(101,19) Error: Assembler syntax error
tavx1.pp(102,9) Error: Unrecognized opcode vcmpneqpd
tavx1.pp(102,20) Error: Assembler syntax error
tavx1.pp(103,9) Error: Unrecognized opcode vcmpnltpd
tavx1.pp(103,19) Error: Assembler syntax error
tavx1.pp(104,9) Error: Unrecognized opcode vcmpnltpd
tavx1.pp(104,20) Error: Assembler syntax error
tavx1.pp(105,9) Error: Unrecognized opcode vcmpnlepd
tavx1.pp(105,19) Error: Assembler syntax error
tavx1.pp(106,9) Error: Unrecognized opcode vcmpnlepd
tavx1.pp(106,20) Error: Assembler syntax error
tavx1.pp(107,9) Error: Unrecognized opcode vcmpordpd
tavx1.pp(107,19) Error: Assembler syntax error
tavx1.pp(108,9) Error: Unrecognized opcode vcmpordpd
tavx1.pp(108,20) Error: Assembler syntax error
tavx1.pp(109,9) Error: Unrecognized opcode vcmpeq_uqpd
tavx1.pp(109,21) Error: Assembler syntax error
tavx1.pp(110,9) Error: Unrecognized opcode vcmpeq_uqpd
tavx1.pp(110,22) Error: Assembler syntax error
tavx1.pp(111,9) Error: Unrecognized opcode vcmpngepd
tavx1.pp(111,19) Error: Assembler syntax error
tavx1.pp(112,9) Error: Unrecognized opcode vcmpngepd
tavx1.pp(112,20) Error: Assembler syntax error
tavx1.pp(113,9) Error: Unrecognized opcode vcmpngtpd
tavx1.pp(113,19) Error: Assembler syntax error
tavx1.pp(114,9) Error: Unrecognized opcode vcmpngtpd
tavx1.pp(114,20) Error: Assembler syntax error
tavx1.pp(115,9) Error: Unrecognized opcode vcmpfalsepd
tavx1.pp(115,21) Error: Assembler syntax error
tavx1.pp(116,9) Error: Unrecognized opcode vcmpfalsepd
tavx1.pp(116,22) Error: Assembler syntax error
tavx1.pp(117,9) Error: Unrecognized opcode vcmpneq_oqpd
tavx1.pp(117,22) Error: Assembler syntax error

Besides this, the changes look already very good to me!
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel




best regards
Torsten
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Testing Intel/AMD AVX-Implemenation

2012-05-03 Thread Torsten

Am 03.05.2012 18:24, schrieb Florian Klämpfl:

Am 03.05.2012 10:49, schrieb fck...@freenet.de:

Hi,



my Intel/AMD assembler AVX 1 support is ready for testing.



svn checkout http://svn.freepascal.org/svn/fpc/branches/tg74/avx ...



build compiler:  ./compiler/make cycle



I have testing under Linux (32/64) with internal assembler writer and
external assembler writer "gas"

Do you have any test files?
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel




Hi Florian,

i have 5 GByte testdata (64-bit). All opcode with all memory and 
register operands.


VADDPD  XMM0, XMM0, XMM0
VADDPD  XMM0, XMM0, XMM1
...
VADDPD  XMM0, XMM0, [RAX + RAX]
VADDPD  XMM0, XMM0, [RAX + RAX * 2]
VADDPD  XMM0, XMM0, [RAX + RAX * 4]
VADDPD  XMM0, XMM0, [RAX + RAX * 8]
VADDPD  XMM0, XMM0, [RAX + RAX * 2 + 16]
VADDPD  XMM0, XMM0, [RAX + RAX * 4 + 32]
VADDPD  XMM0, XMM0, [RAX + RAX * 8 + 48]
...
VADDPD  YMM15, YMM15, [R15 + R15 * 8 + 48]

= 44 MB filesize

I have also build nasm assembler -file to compile with nasm and than i 
compare the binary output with a little tool (also compare fpc internal 
assembler result with the result of external assembler "gas").



Torsten






___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Testing Intel/AMD AVX-Implemenation

2012-05-03 Thread Florian Klämpfl
Comments:
- I'am not happy with the new fields localvarsize and localconstoffset
in rautils.toprrec. Increasing the size of toprrec will probably
increase memory usage of the compiler, I also didn't get yet the use of
the fields: localsym and localsymofs should allow to figure out the same?
- What's the advantage of the change in itx86int.findreg_by_intname?
- You use often
  begin
statement
  end;
  While we follow only a few formatting rules in the compiler,
  I think this is very hard to read.
- What does rax86.IntToStr?
- I tried to figure out but why is tinsentry.flags a int64?
- I made a pascal "wrapper" around
http://sourceware.org/cgi-bin/cvsweb.cgi/src/gas/testsuite/gas/i386/avx.s?rev=1.8&content-type=text/x-cvsweb-markup&cvsroot=src
and get:

tavx1.pp(93,9) Error: Unrecognized opcode vcmpeqpd
tavx1.pp(93,18) Error: Assembler syntax error
tavx1.pp(94,9) Error: Unrecognized opcode vcmpeqpd
tavx1.pp(94,19) Error: Assembler syntax error
tavx1.pp(95,9) Error: Unrecognized opcode vcmpltpd
tavx1.pp(95,18) Error: Assembler syntax error
tavx1.pp(96,9) Error: Unrecognized opcode vcmpltpd
tavx1.pp(96,19) Error: Assembler syntax error
tavx1.pp(97,9) Error: Unrecognized opcode vcmplepd
tavx1.pp(97,18) Error: Assembler syntax error
tavx1.pp(98,9) Error: Unrecognized opcode vcmplepd
tavx1.pp(98,19) Error: Assembler syntax error
tavx1.pp(99,9) Error: Unrecognized opcode vcmpunordpd
tavx1.pp(99,21) Error: Assembler syntax error
tavx1.pp(100,9) Error: Unrecognized opcode vcmpunordpd
tavx1.pp(100,22) Error: Assembler syntax error
tavx1.pp(101,9) Error: Unrecognized opcode vcmpneqpd
tavx1.pp(101,19) Error: Assembler syntax error
tavx1.pp(102,9) Error: Unrecognized opcode vcmpneqpd
tavx1.pp(102,20) Error: Assembler syntax error
tavx1.pp(103,9) Error: Unrecognized opcode vcmpnltpd
tavx1.pp(103,19) Error: Assembler syntax error
tavx1.pp(104,9) Error: Unrecognized opcode vcmpnltpd
tavx1.pp(104,20) Error: Assembler syntax error
tavx1.pp(105,9) Error: Unrecognized opcode vcmpnlepd
tavx1.pp(105,19) Error: Assembler syntax error
tavx1.pp(106,9) Error: Unrecognized opcode vcmpnlepd
tavx1.pp(106,20) Error: Assembler syntax error
tavx1.pp(107,9) Error: Unrecognized opcode vcmpordpd
tavx1.pp(107,19) Error: Assembler syntax error
tavx1.pp(108,9) Error: Unrecognized opcode vcmpordpd
tavx1.pp(108,20) Error: Assembler syntax error
tavx1.pp(109,9) Error: Unrecognized opcode vcmpeq_uqpd
tavx1.pp(109,21) Error: Assembler syntax error
tavx1.pp(110,9) Error: Unrecognized opcode vcmpeq_uqpd
tavx1.pp(110,22) Error: Assembler syntax error
tavx1.pp(111,9) Error: Unrecognized opcode vcmpngepd
tavx1.pp(111,19) Error: Assembler syntax error
tavx1.pp(112,9) Error: Unrecognized opcode vcmpngepd
tavx1.pp(112,20) Error: Assembler syntax error
tavx1.pp(113,9) Error: Unrecognized opcode vcmpngtpd
tavx1.pp(113,19) Error: Assembler syntax error
tavx1.pp(114,9) Error: Unrecognized opcode vcmpngtpd
tavx1.pp(114,20) Error: Assembler syntax error
tavx1.pp(115,9) Error: Unrecognized opcode vcmpfalsepd
tavx1.pp(115,21) Error: Assembler syntax error
tavx1.pp(116,9) Error: Unrecognized opcode vcmpfalsepd
tavx1.pp(116,22) Error: Assembler syntax error
tavx1.pp(117,9) Error: Unrecognized opcode vcmpneq_oqpd
tavx1.pp(117,22) Error: Assembler syntax error

Besides this, the changes look already very good to me!
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Testing Intel/AMD AVX-Implemenation

2012-05-03 Thread Florian Klämpfl
I've created a new branch:
http://svn.freepascal.org/svn/fpc/branches/avx/
containing only the relevant changes and being rebased on current trunk
for easier reviewing.
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Testing Intel/AMD AVX-Implemenation

2012-05-03 Thread Florian Klämpfl
Am 03.05.2012 10:49, schrieb fck...@freenet.de:
> Hi,
> 
>  
> 
> my Intel/AMD assembler AVX 1 support is ready for testing.
> 
>  
> 
> svn checkout http://svn.freepascal.org/svn/fpc/branches/tg74/avx ...
> 
>  
> 
> build compiler:  ./compiler/make cycle
> 
>  
> 
> I have testing under Linux (32/64) with internal assembler writer and
> external assembler writer "gas"

Do you have any test files?
___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Breaking change in FPC 2.6.1

2012-05-03 Thread Marco van de Voort
In our previous episode, LacaK said:
> > Policy wise, I merge revisions for utils, packages and the higher level
> > units of RTL like sysutils and classes if they are a couple of weeks old
> > (3-4 weeks), but I usually leave big changes a bit longer.
> >   
> ok it is answer to my question ;-)
> So we can expect backporting after approx. month

yes. Depending on time of course. Recently e.g. the mysqlconnection55 was in
the "difficult" category, since the makefile stuff has to be done totally
different for the fixes branch. Such things can take longer, since I usually
have to find a day to work on it with some calm days after to mob up
fall-out.
 
> > Since last weekend there is a notes system that allows me to add notes to
> > the revs in mergelogs. See r21037 on the database page, it has a red "notes"
> > attached to it. Clicking it will unfold it.
> >   
> yes I noticed it ;-)
> 
> Please add also red comment to *21009* that this revision DO NOT 
> backport (it is "only" test), because I used there array constructor, 
> which AFAIK is not implemented in 2.6 (so it will fail to compile)

Done. Note that clicking the revision (in bold) will fold out the affect
files.

___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Breaking change in FPC 2.6.1

2012-05-03 Thread LacaK




Policy wise, I merge revisions for utils, packages and the higher level
units of RTL like sysutils and classes if they are a couple of weeks old
(3-4 weeks), but I usually leave big changes a bit longer.
  

ok it is answer to my question ;-)
So we can expect backporting after approx. month


Since last weekend there is a notes system that allows me to add notes to
the revs in mergelogs. See r21037 on the database page, it has a red "notes"
attached to it. Clicking it will unfold it.
  

yes I noticed it ;-)

Please add also red comment to *21009* that this revision DO NOT 
backport (it is "only" test), because I used there array constructor, 
which AFAIK is not implemented in 2.6 (so it will fail to compile)



At a certain point you have to start considering risks vs benefits of
merging something.

  

Yes

Thanks for deep explanation.
-Laco.


___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

  


___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Breaking change in FPC 2.6.1

2012-05-03 Thread Marco van de Voort
In our previous episode, LacaK said:
> >> explicitly asked by sb ?
> >
> > Trivial bugfixes especially in the RTL or packages are often 
> > backported (though we now have the additional difference in the 
> > buildsystem).
> Yes I am here speaking mostly about packages.
> And when happens this backporting? Short time before release in a batch 
> (more bugs in one merge) ?
> I known from Marco, that there is mergelog 
> http://www.stack.nl/~marcov/mergelogs26/database.html
> But I do not know, if all this bugs are candidates for merging or simply 
> it is list of all bugs fixed in trunk and not yet merged?
> So I am not sure what will be realy backported and what not ...

The main page of the mergelogs of fpc 2.6 atm is
http://www.stack.nl/~marcov/mergelogs26/

This is indeed simply a categorization of all differences between trunk and
fixes. 

The "All" page is all eligible revisions (refreshed +/- hourly), and below
I've created a rough categorization of the various commits.

I also have such page for the lazarus fixes branch, but prefer to move
everything to a FPC server before going public with that.

Since last weekend this is now hyperlinked (e.g. if a revisions is mentioned
like r43324 you can click it, same for mantis rapports).

The text versions are also still available (since handier for search as it
is a flat file)

Policy wise, I merge revisions for utils, packages and the higher level
units of RTL like sysutils and classes if they are a couple of weeks old
(3-4 weeks), but I usually leave big changes a bit longer.

Since last weekend there is a notes system that allows me to add notes to
the revs in mergelogs. See r21037 on the database page, it has a red "notes"
attached to it. Clicking it will unfold it.

This allows for see also and dependencies to be annotated.


Besides me, Jonas and Pierre merge part of their fixes themselves, and
Florian usually asks me to do it.
 
> > In the compiler it depends on the severity of the changes. E.g. I 
> > personally don't want to backport most of the generic fixes I have 
> > done as they introduced or depend on massive changes in the compiler.
> Yes it is logical ;-)

The work that has to be done various also for e.g. packages. When a branch
is fairly new it is easy, between the .2 and the .4 branch it gets harder.

At a certain point you have to start considering risks vs benefits of
merging something.

___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Breaking change in FPC 2.6.1

2012-05-03 Thread LacaK

Sven Barth  wrote / napísal(a):

Am 03.05.2012 08:39, schrieb LacaK:

Hi,
I have question indirectly related to this subject ;-)
If there are fixed some bugs in trunk (2.7.1 now) can we expect that
they will be backported in some of next stable release 2.6 (2.6.2, 
2.6.3)?
If yes , are there any rules which bugs are / can be / will be 
backported ?
(Now I am not speaking about new features added, but only about bugs 
fixed)

Depends it on fact how complex / risky is fix or must be backporting
explicitly asked by sb ?


Trivial bugfixes especially in the RTL or packages are often 
backported (though we now have the additional difference in the 
buildsystem).

Yes I am here speaking mostly about packages.
And when happens this backporting? Short time before release in a batch 
(more bugs in one merge) ?
I known from Marco, that there is mergelog 
http://www.stack.nl/~marcov/mergelogs26/database.html
But I do not know, if all this bugs are candidates for merging or simply 
it is list of all bugs fixed in trunk and not yet merged?

So I am not sure what will be realy backported and what not ...

In the compiler it depends on the severity of the changes. E.g. I 
personally don't want to backport most of the generic fixes I have 
done as they introduced or depend on massive changes in the compiler.

Yes it is logical ;-)
-Laco.

___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


[fpc-devel] Testing Intel/AMD AVX-Implemenation

2012-05-03 Thread fckama
Hi,
 
my Intel/AMD assembler AVX 1 support is ready for testing.
 
svn checkout http://svn.freepascal.org/svn/fpc/branches/tg74/avx ...
 
build compiler:  ./compiler/make cycle
 
I have testing under Linux (32/64) with internal assembler writer and external 
assembler writer "gas"
 
Please check compiling under "ppcgen" and "m68k" (only is compiling ok?).
 
On i386 and x86_64 platform: win32/win64, freebsd ...  test with internal and 
external assembler
 
Please, give me feedback.
 
 
Thanks
 
Torsten
 
 
 


---
Nutzen Sie freenet Mail optimal angepasst für Ihr iPhone, Android oder Nokia 
Handy auch von unterwegs.
Alle Infos und Download unter freenetMail Apps___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel


Re: [fpc-devel] Breaking change in FPC 2.6.1

2012-05-03 Thread Sven Barth

Am 03.05.2012 08:39, schrieb LacaK:

Hi,
I have question indirectly related to this subject ;-)
If there are fixed some bugs in trunk (2.7.1 now) can we expect that
they will be backported in some of next stable release 2.6 (2.6.2, 2.6.3)?
If yes , are there any rules which bugs are / can be / will be backported ?
(Now I am not speaking about new features added, but only about bugs fixed)
Depends it on fact how complex / risky is fix or must be backporting
explicitly asked by sb ?


Trivial bugfixes especially in the RTL or packages are often backported 
(though we now have the additional difference in the buildsystem). In 
the compiler it depends on the severity of the changes. E.g. I 
personally don't want to backport most of the generic fixes I have done 
as they introduced or depend on massive changes in the compiler.


Regards,
Sven

___
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel