AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: d at teklibre dot com
GCC build triplet: x86_64-linux-gnu
GCC host triplet: x86_64-linux-gnu
GCC target triplet: x86_64-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39847
--- Comment #1 from d at teklibre dot com 2009-04-22 13:49 ---
Created an attachment (id=17672)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17672&action=view)
Test program demonstrating 16 register breakage on inline asm in x86_64
--
http://gcc.gnu.org/bugzilla/show_
--- Comment #2 from d at teklibre dot com 2009-04-22 14:04 ---
tested against: gcc (Ubuntu 4.3.2-1ubuntu12) 4.3.2 - fails
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39847
--- Comment #4 from d at teklibre dot com 2009-04-22 14:58 ---
"+" counts as two operands? ok, that makes sense. So, basically
2*num_of_physical_regs would be a saner default ...
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39847
--- Comment #6 from d at teklibre dot com 2009-04-22 15:40 ---
Pinska: Actually, no. I started with the intrinsics and looked hard at what the
code scheduler was doing before settling on rewriting this in inline assembly.
The intrinsics have several problems that effect the code
--- Comment #9 from d at teklibre dot com 2009-04-22 17:24 ---
Pinskia:
It is going to take me a long time to address these issues piecemeal, so...
0) I will build gcc-4.4 and try that. I will also make the 1 line patch to it
to try increasing the number of asm params, and try that. I
--- Comment #13 from d at teklibre dot com 2009-04-22 17:55 ---
@Andrew
>I suspect the reason the limit is 30 is that when that code was written the
>largest register set was 32 registers, 2 of which were reserved to the
>implementation. Inline asm hasn't kept up wit
--- Comment #14 from d at teklibre dot com 2009-04-22 18:00 ---
@Jakub:
I'm going to build this thing today. (once I figure out the best way, and I
figure it will take a while, even so) Are there any specific tests I should run
to check for performance issues? I expect any
--- Comment #16 from d at teklibre dot com 2009-04-22 18:30 ---
@Jakub/Andrew:
max_recog_operands =
MIN(FIRST_PSEUDO_REGISTER*2,SOME_SANE_VALUE_DERIVED_FROM_SMASHING_THE_STACK_ON_IA64)
; // ?
I certainly am not in a position to make a one line change to gcc and test it
on ia64 or
--- Comment #19 from d at teklibre dot com 2009-04-22 19:48 ---
@Andrew: I agree with Jakub's point too, but don't believe merely doubling the
number of operands will hurt much. Am trying it against 4.3.2... it's building
as I write.
When I figure out how to safely b
--- Comment #20 from d at teklibre dot com 2009-04-23 03:29 ---
I got gcc 4.4 built with the 1 line patch.
It assembles my 24 operand function just fine (which had several errors in the
asm that I couldn't detect without assembling it - pushed out to my repo now -
it even gets th
--- Comment #21 from d at teklibre dot com 2009-04-23 03:44 ---
(In reply to comment #20)
> It successfully compiles, links, and runs my project (ScreamingRabbitCode) at
> -O3 -mtune=core2 w/o the asm code in 17.397s. gcc 4.3.2 takes 17.865s. (both
> are best case times ove
12 matches
Mail list logo