Re: [fpc-devel] Testing Intel/AMD AVX-Implemenation
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
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
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
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
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
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
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
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
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
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
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
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