Re: [Consult] tile: How to construct testsuite for tile architecture without hardware.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello all:

This month, I rewrite floating point instructions implementation, and
send related patches to qemu members (it was really not easy to me, it
spent me much free time resources).

At present, current gcc summary is below (a little better than before).

                  === gcc Summary ===
  
  # of expected passes            78530
  # of unexpected failures        84
  # of unexpected successes       1
  # of expected failures          121
  # of unresolved testcases       2
  # of unsupported tests          1391

I am just analyzing and fixing one issue, it looks like a gcc's issue.
It is about __builtin_mul_overflow(). After comparing with the x86_64
output, tilegx should only check the lower 32 bits:

  objdump for tilegx:

        if (__builtin_mul_overflow (x, y, &r))
   10918:       180ee685d1483000        { addi r11, r52, -36 }
   10920:       180ec68651483000        { addi r12, r52, -40 }
   10928:       180807e6d1483000        { movei r13, 0 }
   10930:       9c76400034cc3000        { ld4s r14, r12 }
   10938:       9c56400034bc3000        { ld4s r10, r11 }
   10940:       286a300050f0a38a        { mul_ls_ls r10, r14, r10 }

   10948:       3009014751483000        { shrsi r14, r10, 32 }
   10950:       3008f947d1483000        { shrsi r15, r10, 31 }
   10958:       280a71e751483000        { cmpeq r14, r15, r14 }

   10960:       17c001c151483000        { bnez r14, 10970 <t115_1mul+0xc0> }
   10968:       18080fe6d1483000        { movei r13, 1 }

   10970:       9c76400034bc3000        { ld4s r14, r11 }
   10978:       14c001c5d1483000        { bgez r14, 109d0 <t115_1mul+0x120> }

   10980:       18080fe6d1483000        { movei r13, 1 }
   10988:       9c76400034cc3000        { ld4s r14, r12 }
   10990:       144001c3d1483000        { beqz r14, 109c8 <t115_1mul+0x118> }

   10998:       9c66400034cc3000        { ld4s r12, r12 }
   109a0:       1827f98651483000        { cmpeqi r12, r12, -1 }
   109a8:       14400182d1483000        { beqz r12, 109d0 <t115_1mul+0x120> }

   /* It should only check the lower 32 bits, but it checks 64 bits */
   109b0:       9c5e400034bc3000        { ld4s r11, r11 } /* ld4u instead of */
   /* need "and r10, r10 0xffffffff" */
   109b8:       280a5165d1483000        { cmpeq r11, r11, r10 } 
   109c0:       1440016151483000        { beqz r11, 109d0 <t115_1mul+0x120> }

   109c8:       180807e6d1483000        { movei r13, 0 }

   109d0:       283bf945d1483000        { move r11, r10 }
   ...


  objdump for x86_64:

        if (__builtin_mul_overflow (x, y, &r))
  400662:       ba 00 00 00 00          mov    $0x0,%edx
  400667:       8b 45 e8                mov    -0x18(%rbp),%eax
  40066a:       0f af 45 ec             imul   -0x14(%rbp),%eax
  40066e:       71 05                   jno    400675 <t115_1mul+0x1d>
  400670:       ba 01 00 00 00          mov    $0x1,%edx

  400675:       83 7d ec 00             cmpl   $0x0,-0x14(%rbp)
  400679:       79 1b                   jns    400696 <t115_1mul+0x3e>

  40067b:       ba 01 00 00 00          mov    $0x1,%edx
  400680:       83 7d e8 00             cmpl   $0x0,-0x18(%rbp)
  400684:       74 0b                   je     400691 <t115_1mul+0x39>

  400686:       83 7d e8 ff             cmpl   $0xffffffff,-0x18(%rbp)
  40068a:       75 0a                   jne    400696 <t115_1mul+0x3e>

  /* it only checks the lower 32 bits */
  40068c:       39 45 ec                cmp    %eax,-0x14(%rbp)
  40068f:       75 05                   jne    400696 <t115_1mul+0x3e>

  400691:       ba 00 00 00 00          mov    $0x0,%edx

  400696:       89 45 fc                mov    %eax,-0x4(%rbp)
  400699:       89 d0                   mov    %edx,%eax
  ...


Thanks.

On 10/18/15 13:23, Chen Gang wrote:
> Hello all:
> 
> After fix one qemu issue about floating point insns, correct the related
> environments (make some symbol links), and reconfig building options (so
> support g++), the current gcc testsuite result are:
> 
>                 === gcc Summary ===
> 
> # of expected passes            78156
> # of unexpected failures        98
> # of unexpected successes       1
> # of expected failures          120
> # of unresolved testcases       1
> # of unsupported tests          1384
> 
>                 === g++ Summary ===
> 
> # of expected passes            83999
> # of unexpected failures        78
> # of unexpected successes       2
> # of expected failures          277
> # of unsupported tests          3568
> 
> [root@localhost build-gcc-tile]# gcc/xgcc -v
> Using built-in specs.
> COLLECT_GCC=gcc/xgcc
> Target: tilegx-gchen-linux
> Configured with: ../gcc/configure --target=tilegx-gchen-linux --disable-nls --enable-languages=c,c++ --enable-threads --enable-shared --enable-libssp --prefix=/upstream/release-tile --with-headers=/upstream/release-tile/include --with-sysroot=/upstream/release-tile --disable-multilib --disable-libquadmath --disable-libgomp --disable-libatomic
> Thread model: posix
> gcc version 6.0.0 20151012 (experimental) (GCC) 
> [root@localhost build-gcc-tile]# gcc/xg++ -v
> Using built-in specs.
> COLLECT_GCC=gcc/xg++
> Target: tilegx-gchen-linux
> Configured with: ../gcc/configure --target=tilegx-gchen-linux --disable-nls --enable-languages=c,c++ --enable-threads --enable-shared --enable-libssp --prefix=/upstream/release-tile --with-headers=/upstream/release-tile/include --with-sysroot=/upstream/release-tile --disable-multilib --disable-libquadmath --disable-libgomp --disable-libatomic
> Thread model: posix
> gcc version 6.0.0 20151012 (experimental) (GCC)
> 
> 
> 
> Welcome any ideas, suggestions, and completions.
> 
> Thanks.
> 
> 
> On 10/17/15 14:39, Chen Gang wrote:
>>
>> After rebuild gcc/binutils with the latest code and correct the building
>> config parameters, the gcc testsuite result is:
>>
>>                 === gcc Summary ===
>>
>> # of expected passes            77855
>> # of unexpected failures        162
>> # of unexpected successes       1
>> # of expected failures          120
>> # of unresolved testcases       131
>> # of unsupported tests          1477
>>
>> root@localhost tile]# /upstream/release-tile/bin/tilegx-gchen-linux-gcc -v
>> Using built-in specs.
>> COLLECT_GCC=/upstream/release-tile/bin/tilegx-gchen-linux-gcc
>> COLLECT_LTO_WRAPPER=/upstream/release-tile/libexec/gcc/tilegx-gchen-linux/6.0.0/lto-wrapper
>> Target: tilegx-gchen-linux
>> Configured with: ../gcc/configure --target=tilegx-gchen-linux --disable-nls --enable-languages=c --enable-threads --enable-shared --enable-libssp --prefix=/upstream/release-tile --with-headers=/upstream/release-tile/include --with-sysroot=/upstream/release-tile --disable-multilib
>> Thread model: posix
>> gcc version 6.0.0 20151012 (experimental) (GCC) 
>>
>> Welcome any members' ideas, suggestions, and completions.
>>
>>
>> Thanks.
>>
>>
>> On 10/5/15 19:59, Chen Gang wrote:
>>> After fix the tillegx qemu's fsingle floating point insns issue, the gcc test suite result is:
>>>
>>> 		=== gcc Summary ===
>>>
>>> # of expected passes		77272
>>> # of unexpected failures	365
>>> # of unexpected successes	7
>>> # of expected failures		113
>>> # of unresolved testcases	141
>>> # of unsupported tests		1476
>>>
>>> And I shall continue to analyze the left issues, next. :-)
>>>
>>>
>>> Thanks.
>>> --
>>> Chen Gang
>>>
>>> Open, share, and attitude like air, water, and life which God blessed
>>>
>>>
>>> ----------------------------------------
>>>> From: xili_gchen_5257@xxxxxxxxxxx
>>>> To: cmetcalf@xxxxxxxxxx; walt@xxxxxxxxxx
>>>> CC: law@xxxxxxxxxx; gcc-help@xxxxxxxxxxx; mikestump@xxxxxxxxxxx; eager@xxxxxxxxxx; rth@xxxxxxxxxx; peter.maydell@xxxxxxxxxx; afaerber@xxxxxxx; rth@xxxxxxxxxxx
>>>> Subject: RE: [Consult] tile: How to construct testsuite for tile architecture without hardware.
>>>> Date: Sun, 4 Oct 2015 19:55:44 +0800
>>>>
>>>> After finish additional 7 qemu patches, our tilegx qemu can test the gcc
>>>> testsuite successfully (no any unimplementation issues). The test result
>>>> is:
>>>>
>>>> === gcc Summary ===
>>>>
>>>> # of expected passes 77012
>>>> # of unexpected failures 622
>>>> # of unexpected successes 7
>>>> # of expected failures 113
>>>> # of unresolved testcases 143
>>>> # of unsupported tests 1476
>>>>
>>>>
>>>> For the 622 left issues:
>>>>
>>>> - Maybe still tilegx implementation issue, e.g.
>>>>
>>>> the floating point single mul instruction cann't get the result which
>>>> tilegx gcc expected (it is only related with calculating: float32_mul
>>>> calculation result is not match tilegx gcc expected).
>>>>
>>>> - Maybe envorintments configuration issues, e.g.
>>>>
>>>> for gcc guality_check, it may call gdb outside, so I need config the
>>>> related gdb correctlly.
>>>>
>>>> - Maybe tilegx gcc issues, e.g.
>>>>
>>>> for some UNKNOWN instructions, probably generated by incorrect jump
>>>> instructions, one sample is "-fpic -mcmodel=large" for gcc nested-5
>>>> test.
>>>>
>>>> Next, I shall:
>>>>
>>>> - continue to fix the left 622 issues, and send related patches to
>>>> qemu-devel mailing list or gcc-patches mailing list.
>>>>
>>>> - then rewrite floating point instructions, and try to let the related
>>>> code merged into qemu mainline with qemu members' help (at present,
>>>> floating point implementation is a temporary implementation).
>>>>
>>>> - at last, try to finish all left unimplemented instructions (there are
>>>> still some unimplement insns left, but at present, gcc testsuite does
>>>> not use them), and start tilegx qemu system mode, next.
>>>>
>>>>
>>>> Welcome any members' ideas, suggestion, and completions. :-)
>>>>
>>>>
>>>> Thanks.
>>>>
>>>> Chen Gang
>>>>
>>>> Open, share, and attitude like air, water, and life which God blessed
>>>>
>>>>
>>>> ----------------------------------------
>>>>> Date: Thu, 1 Oct 2015 12:12:48 +0800
>>>>> From: xili_gchen_5257@xxxxxxxxxxx
>>>>> To: cmetcalf@xxxxxxxxxx; walt@xxxxxxxxxx
>>>>> CC: law@xxxxxxxxxx; gcc-help@xxxxxxxxxxx; mikestump@xxxxxxxxxxx; eager@xxxxxxxxxx; rth@xxxxxxxxxx; peter.maydell@xxxxxxxxxx; afaerber@xxxxxxx; rth@xxxxxxxxxxx
>>>>> Subject: Re: [Consult] tile: How to construct testsuite for tile architecture without hardware.
>>>>>
>>>>>
>>>>> At present, tilegx is integrated into qemu master branch successfully
>>>>> with the much help by qemu members.
>>>>>
>>>>> But sorry, I did not finish gcc testsuite in time, the main excuse is
>>>>>
>>>>> - I am busy on the normal work -- sometimes, have to do overtime work.
>>>>> (my company started up an urgent project, but couldn't find suitable
>>>>> persons for it in short time, so I have to do it during these days).
>>>>>
>>>>> Next, in Chinese National Day, I have enough free time resources on open
>>>>> source, hope I finish our gcc testsuite within Chinese National Day (it
>>>>> is from 2015-10-01 -- 2015-10-07).
>>>>>
>>>>> Thanks.
>>>>>
>>>>> On 8/30/15 11:50, Chen Gang wrote:
>>>>>>
>>>>>> Oh, sorry again, I did not finish qemu test within this month, again.
>>>>>> Current status is:
>>>>>>
>>>>>> === gcc Summary ===
>>>>>>
>>>>>> # of expected passes 76725
>>>>>> # of unexpected failures 790
>>>>>> # of unexpected successes 7
>>>>>> # of expected failures 113
>>>>>> # of unresolved testcases 142
>>>>>> # of unsupported tests 1483
>>>>>>
>>>>>>
>>>>>> My main excuses are:
>>>>>>
>>>>>> - We are lack of tilegx floating point insns related documents, we have
>>>>>> to 'guess' implementation details. At last, we found ways to process
>>>>>> it (we spent more than a half month free time resources for it).
>>>>>>
>>>>>> - My related qemu code need be refactor before merging into qemu master
>>>>>> tree. At present, we are refactoring and merging tilegx code to qemu
>>>>>> master tree (mainly by qemu related members).
>>>>>>
>>>>>> Hope I can finish qemu tilegx gcc testsuite within next month (I guess,
>>>>>> it should be done in time).
>>>>>>
>>>>>> - Test the refactored and merged code again, based on it, I continue to
>>>>>> fix gcc testsuite related issues.
>>>>>>
>>>>>> - Fix all 700+ gcc testsuite issues (10+ for pending issues, and the
>>>>>> others are for UN-implementation insns issues, I guess).
>>>>>>
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>>
>>>>>> On 7/30/15 05:01, Chen Gang wrote:
>>>>>>> On 7/20/15 06:26, Chen Gang wrote:
>>>>>>>> Hello all:
>>>>>>>>
>>>>>>>> At present (after a half year), with the much help of QEMU members,
>>>>>>>> tilegx linux-user can work (manually using busybox's sh, ls, cp, mv, vi
>>>>>>>> are OK).
>>>>>>>>
>>>>>>>> Next, I shall start gcc testsuite with qemu tilegx linux-user, hope I
>>>>>>>> can finish within this month (2015-07-31).
>>>>>>>>
>>>>>>>
>>>>>>> Sorry, I can not finish the qemu test within this month. The reason is
>>>>>>> my tilegx qemu is still lack of some instructions implementation, next,
>>>>>>> I should finish them firstly (I implemented most insns, but not all).
>>>>>>>
>>>>>>> === gcc Summary ===
>>>>>>>
>>>>>>> # of expected passes 69830
>>>>>>> # of unexpected failures 4312
>>>>>>> # of unexpected successes 2
>>>>>>> # of expected failures 108
>>>>>>> # of unresolved testcases 1776
>>>>>>> # of unsupported tests 1567
>>>>>>>
>>>>>>> More than 4K failures are because tilegx qemu lacks of instruction's
>>>>>>> implementation, and also more than 10 issues are for TIMEOUT (I guess,
>>>>>>> my original tilegx qemu instruction's implementation still has bugs).
>>>>>>>
>>>>>>> I shall try to finish it within next month, although I am not quite sure
>>>>>>> (it needs enough time resources on it, but I am lack of time resources:
>>>>>>> I can only spend less 1 hour per work day and 2 hours per week end day).
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>> On 1/24/15 21:31, Chen Gang S wrote:
>>>>>>>>> Hello Maintainers:
>>>>>>>>>
>>>>>>>>> The result of gcc testsuite for tile without qemu is below, I guess the
>>>>>>>>> environments construction is OK:
>>>>>>>>>
>>>>>>>>> === gcc Summary ===
>>>>>>>>>
>>>>>>>>> # of expected passes 66650
>>>>>>>>> # of unexpected failures 42
>>>>>>>>> # of unexpected successes 1
>>>>>>>>> # of expected failures 107
>>>>>>>>> # of unresolved testcases 16558
>>>>>>>>> # of unsupported tests 1771
>>>>>>>>>
>>>>>>>>> Based on normal testsuite and microblaze testsuite configuration, it is
>>>>>>>>> easy to config gcc testsuite for tile. Thank gcc testsuit member and
>>>>>>>>> microblaze member very much. :-)
>>>>>>>>>
>>>>>>>>> - Copy the original microblaze exp file as tile exp file. Export tile
>>>>>>>>> ip to /etc/hosts.
>>>>>>>>>
>>>>>>>>> - Change the related compiler name and related patch to tile in tile
>>>>>>>>> exp file.
>>>>>>>>>
>>>>>>>>> - Use tile cflag "-m64 -mcpu=tilegx -mcmodel=large -mlittle-endian"
>>>>>>>>> instead of the original microblaze cflag, in tile exp file.
>>>>>>>>>
>>>>>>>>> If OK, I shall try to make a tile patch within this month. Next month,
>>>>>>>>> I shall start tile qemu (I am preparing for it within this month). After
>>>>>>>>> communicate with qemu members, I guess, it is possible to finish it.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Welcome any ideas, suggestions, and completions.
>>>>>>>>>
>>>>>>>>> Thanks.
>>>>>>>>>
>>>>>>>>> On 1/20/15 10:02, Chen Gang S wrote:
>>>>>>>>>> On 1/20/15 00:10, Chris Metcalf wrote:
>>>>>>>>>>> On 1/17/2015 4:52 AM, Chen Gang S wrote:
>>>>>>>>>>>> Hello Maintainers:
>>>>>>>>>>>>
>>>>>>>>>>>> I am trying to make gcc patches for tile, and need testsuite without
>>>>>>>>>>>> related hardware, so I consult:
>>>>>>>>>>>
>>>>>>>>>>> Unfortunately, at the current time, the simulator is only available as part of the commercial Multicore Development Environment package. A qemu port for tile hardware would certainly be welcome, but to my knowledge, no one has completed such a port yet. ISA and ABI documentation for tilegx are available at www.tilera.com/scm.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> OK, thank you very much, and the documentation is really valuable to me.
>>>>>>>>>>
>>>>>>>>>> After finish gcc tile testsuite (hope I can finish within this month),
>>>>>>>>>> I shall continue for tile qemu, I should try my best for it, hope I can
>>>>>>>>>> finish: "can run gcc testsuite with the tile qemu".
>>>>>>>>>>
>>>>>>>>>> At present, it is really very hard to me, but for me, it is my duty (I
>>>>>>>>>> met it, and it was within my original boarder).
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> For me, nothing is impossible, if God blessed.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Chen Gang
>>>>>>
>>>>>> Open, share, and attitude like air, water, and life which God blessed
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> Chen Gang (陈刚)
>>>>>
>>>>> Open, share, and attitude like air, water, and life which God blessed
>>>>
>>>  		 	   		  
>>>
>>
> 

-- 
Chen Gang (陈刚)

Open, share, and attitude like air, water, and life which God blessed




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux