Re: Help with lra

2016-08-24 Thread shmeel gutl
On 10-Aug-16 08:41 PM, Vladimir N Makarov wrote: As for memory constraint you should not to return true for a pseudo. Reload/LRA can figure out how to match a spilled pseudo with memory (but this constraint should be define_memory_constraint, i saw mistakes when people used different forms of

Re: Help with lra

2016-08-11 Thread shmeel gutl
On 10-Aug-16 08:41 PM, Vladimir N Makarov wrote: On 08/09/2016 12:33 AM, shmeel gutl wrote: On 03-Aug-16 12:10 AM, Vladimir Makarov wrote: On 08/02/2016 04:41 PM, shmeel gutl wrote: I am trying to enable lra for a propriety backend. I ran into one problem that I can't solve. I

Re: Help with lra

2016-08-08 Thread shmeel gutl
On 03-Aug-16 12:10 AM, Vladimir Makarov wrote: On 08/02/2016 04:41 PM, shmeel gutl wrote: I am trying to enable lra for a propriety backend. I ran into one problem that I can't solve. In lra-constraints.c:split_reg lra_create_new_reg can be called with a hard code rclass of NO_REGS. It

Help with lra

2016-08-02 Thread shmeel gutl
I am trying to enable lra for a propriety backend. I ran into one problem that I can't solve. In lra-constraints.c:split_reg lra_create_new_reg can be called with a hard code rclass of NO_REGS. It then queues a move instruction of the type set TYPE:new_reg TYPE:old_reg But the NO_REGS rclas

Re: Question about find modifiable mems

2016-07-31 Thread shmeel gutl
On 03-Jun-15 09:39 AM, shmeel gutl wrote: find_modifiable_mems was introduced to gcc 4.8 in september 2012. Is there any documentation as to how it is supposed to help the haifa scheduler? In my private port of gcc it make the following type of transformations from a= *(b+20

Help porting to lra

2016-02-03 Thread shmeel gutl
I am trying to enable lra for my vliw architecture and I am encountering a problem of "max number of generated reload insns". The problem seems elementary but I don't see the correction. Consider r1 =r2+r3 s1=r1+r4 call func(r3) r5=s2+r1 where s registers are pseudo registers

Re: Acceptance criteria for the git conversion

2015-09-03 Thread shmeel gutl
On 01-Sep-15 01:54 PM, Eric S. Raymond wrote: What kind of mechanical transformation or hand-editing would add value for you? I am working from a clone of the current git repository. Is there an automated procedure that will enable me to switch to the new repository and still keep all of the co

Re: Problem with tree pass pre

2015-08-31 Thread shmeel gutl
On 31-Aug-15 02:19 PM, Richard Biener wrote: On Mon, Aug 31, 2015 at 6:51 AM, shmeel gutl wrote: When dealing with an array with known values, pre will evaluate the first iteration of a loop over the elements. The code generator with then jump into the loop. This is at best increasing the

Problem with tree pass pre

2015-08-30 Thread shmeel gutl
When dealing with an array with known values, pre will evaluate the first iteration of a loop over the elements. The code generator with then jump into the loop. This is at best increasing the size of the code. It also creates inferior code when the hardware supports zero overhead loops. The at

porting to lra

2015-08-24 Thread shmeel gutl
are there any guidelines as to what needs to be done in the backend to enable lra for 5.2? when I turn it on I get two types of errors. 1) insn not recognized because fp hasn't been converted yet, and 2) max number of generated reload insns. any pointers will be appreciated shmeel

Re: Question about find modifiable mems

2015-06-05 Thread shmeel gutl
On 04-Jun-15 03:54 AM, Jim Wilson wrote: On 06/02/2015 11:39 PM, shmeel gutl wrote: find_modifiable_mems was introduced to gcc 4.8 in september 2012. Is there any documentation as to how it is supposed to help the haifa scheduler? The patch was submitted here https://gcc.gnu.org/ml/gcc

Question about find modifiable mems

2015-06-02 Thread shmeel gutl
find_modifiable_mems was introduced to gcc 4.8 in september 2012. Is there any documentation as to how it is supposed to help the haifa scheduler? In my private port of gcc it make the following type of transformations from a= *(b+20) b+=30 to b+=30 a=*

Re: [RFC] Design and Implementation for Path Splitting for Loop with Conditional IF-THEN-ELSE

2015-05-16 Thread shmeel gutl
On 16-May-15 03:49 PM, Ajit Kumar Agarwal wrote: if (loop && loop->latch == bb || loop->header == bb) Please add parenthesis to the various occurrences of this code fragment. Better if the precedence is explicit.

rnreg and vliw

2015-01-23 Thread shmeel gutl
It seems that in gcc 4.7, the rnreg pass for renaming registers after reload is not vliw aware. In particular I saw it reassign a register that is in use in the same vliw. To be more concrete, I saw it change the following pseudo code DI:a30 = v0 SI:a14 = -a14 to DI:a30 = v0 SI

Re: A Question About LRA/reload

2014-12-09 Thread shmeel gutl
On 09-Dec-14 07:56 PM, Jeff Law wrote: On 12/09/14 10:10, Vladimir Makarov wrote: generate the correct code in many cases even for x86. Jeff Law tried IRA coloring reusage too for reload but whole RA became slower (although he achieved performance improvements on x86). Right. After IRA was com

Re: Using associativity for optimization

2014-12-02 Thread shmeel gutl
On 02-Dec-14 12:23 PM, Richard Biener wrote: On Tue, Dec 2, 2014 at 12:11 AM, shmeel gutl wrote: While testing my implementation of passing arguments in registers, I noticed that gcc 4.7 creates instruction dependencies when it doesn't have to. Consider: int foo(int a1, int a2, int a3, i

Re: Using associativity for optimization

2014-12-02 Thread shmeel gutl
It works fine for my test case. Thanks Richard Biener wrote: >On Tue, Dec 2, 2014 at 12:11 AM, shmeel gutl > wrote: >> While testing my implementation of passing arguments in registers, I noticed >> that gcc 4.7 creates instruction dependencies when it doesn't have to.

Re: negative latencies

2014-05-25 Thread shmeel gutl
On 23-May-14 05:20 PM, Vladimir Makarov wrote: On 2014-05-23, 3:49 AM, shmeel gutl wrote: On 21-May-14 06:30 PM, Vladimir Makarov wrote: I am just curious what happens when you put insn2, insn1. and insn2 uses a result of insn1 in 6 cycles and insn1 producing the result in 3 cycles, but

Re: negative latencies

2014-05-25 Thread shmeel gutl
On 23-May-14 01:59 PM, Bernd Schmidt wrote: On 05/23/2014 10:07 AM, shmeel gutl wrote: Exposed pipeline is not my problem. Negative latency is my problem. I don't see negative latency for c6x, not in unit reservations and not in adjust cost. Did I miss something? You just need to mod

Re: negative latencies

2014-05-23 Thread shmeel gutl
On 22-May-14 07:21 PM, Bernd Schmidt wrote: On 05/21/2014 05:30 PM, Vladimir Makarov wrote: On 2014-05-20, 5:18 PM, shmeel gutl wrote: The problem that I see is that the haifa scheduler schedules one cycle at a time, in a forward order, by picking from a list of instructions that can be

Re: negative latencies

2014-05-23 Thread shmeel gutl
On 21-May-14 06:30 PM, Vladimir Makarov wrote: I am just curious what happens when you put insn2, insn1. and insn2 uses a result of insn1 in 6 cycles and insn1 producing the result in 3 cycles, but there are not ready functional units (e.g. arithmentic units) necessary for insn1 for 4 or more

Re: negative latencies

2014-05-20 Thread shmeel gutl
On 20-May-14 06:13 PM, Vladimir Makarov wrote: On 05/19/2014 02:13 AM, shmeel gutl wrote: Are there hooks in gcc to deal with negative latencies? In other words, an architecture that permits an instruction to use a result from an instruction that will be issued later. Could you explain more

Re: negative latencies

2014-05-19 Thread shmeel gutl
f Of shmeel gutl Sent: Monday, May 19, 2014 12:23 PM To: Andrew Pinski Cc: gcc@gcc.gnu.org; Vladimir Makarov Subject: Re: negative latencies On 19-May-14 09:39 AM, Andrew Pinski wrote: On Sun, May 18, 2014 at 11:13 PM, shmeel gutl wrote: Are there hooks in gcc to deal with negative latencies

Re: negative latencies

2014-05-18 Thread shmeel gutl
On 19-May-14 09:39 AM, Andrew Pinski wrote: On Sun, May 18, 2014 at 11:13 PM, shmeel gutl wrote: Are there hooks in gcc to deal with negative latencies? In other words, an architecture that permits an instruction to use a result from an instruction that will be issued later. Do you mean

negative latencies

2014-05-18 Thread shmeel gutl
Are there hooks in gcc to deal with negative latencies? In other words, an architecture that permits an instruction to use a result from an instruction that will be issued later. At first glance it seems that it will will break a few things. 1) The definition of dependencies cannot come from th

Re: Request for discussion: Rewrite of inline assembler docs

2014-03-28 Thread shmeel gutl
On 28-Mar-14 01:46 PM, Hannes Frederic Sowa wrote: On Fri, Mar 28, 2014 at 09:41:41AM +, Andrew Haley wrote: Ok, I see the problem. Maybe something like this by avoiding the term? Using this clobber causes the compiler to flush all (modified) registers being used to store values which gcc d

exposed pipeline

2014-03-05 Thread shmeel gutl
For the 4.7 branch I only saw one architecture using exposed pipeline. Is there any documentation on the quality of exposed pipeline support? Does the back-end need to do anything special to deal with jumps and returns from calls? Thanks Shmeel

Re: Dependency confusion in sched-deps

2013-12-06 Thread shmeel gutl
On 06-Dec-13 01:34 AM, Maxim Kuvyrkov wrote: On 6/12/2013, at 8:44 am, shmeel gutl wrote: On 05-Dec-13 02:39 AM, Maxim Kuvyrkov wrote: Dependency type plays a role for estimating costs and latencies between instructions (which affects performance), but using wrong or imprecise dependency

Re: Dependency confusion in sched-deps

2013-12-05 Thread shmeel gutl
On 05-Dec-13 02:39 AM, Maxim Kuvyrkov wrote: Dependency type plays a role for estimating costs and latencies between instructions (which affects performance), but using wrong or imprecise dependency type does not affect correctness. On multi-issue architectures it does make a difference. Anti d

avoiding extra .loc directives

2013-11-05 Thread shmeel gutl
For my VLIW toolchain, I am not allowed to output .loc directives in the middle of a VLIW bundle. Following the lead of the bfin backend, I scan bundles during the machine reorg pass and ensure that all of the insns of a bundle have the same location. This solves most of the problems, but final

Re: conflict between scheduler and register allocator

2013-10-28 Thread shmeel gutl
On 09-Aug-13 07:35 PM, Vladimir Makarov wrote: On 13-08-09 7:25 AM, shmeel gutl wrote: I am having trouble meeting the constraints of the scheduler and the register allocator for my back end. The relevant features are: 1) VLIW - up to 4 instructions can be issued each cycle 2) If a vliw

conflict between scheduler and register allocator

2013-08-09 Thread shmeel gutl
I am having trouble meeting the constraints of the scheduler and the register allocator for my back end. The relevant features are: 1) VLIW - up to 4 instructions can be issued each cycle 2) If a vliw bundle has both a set and a use, the use will use the old values. 3) A call instruction will p

Testing timing tables

2013-06-23 Thread shmeel gutl
The latency calculations in my backend are very complicated. Is there any automated way to test them?

Memory dependence

2013-06-10 Thread shmeel gutl
In the architecture that I am using, there is a big pipeline penalty for read after write to the same memory location. Is it possible to tell the difference between a possible memory conflict and a definite memory conflict?