Re: Register allocation issues

2007-09-06 Thread Matt Lee
On 9/6/07, David Edelsohn [EMAIL PROTECTED] wrote: Matt Lee writes: Matt The problem is, that though the loads can be optimized by pipelining Matt them. The register allocator has created a dependency by using only r3 Matt and r4, instead of using the other volatiles. GCC's

Re: Register allocation issues

2007-09-06 Thread Matt Lee
On 9/6/07, Dave Korn [EMAIL PROTECTED] wrote: On 05 September 2007 23:47, Matt Lee wrote: Registers r3 to r12 are volatiles. However, for the C code below, struct foo { int a[4]; } ; struct foo p, q; void func () { memcpy (p, q, sizeof (struct foo)); } I am

Re: Register allocation issues

2007-09-06 Thread Matt Lee
On 9/6/07, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: Matt Lee writes: Date: Thu, 06 Sep 2007 15:02:52 -0400 From: David Edelsohn [EMAIL PROTECTED] Matt There is no point trying to minimize usage of volatile hard registers, Matt is there? They are precisely there to be used up as much

Re: Register allocation issues

2007-09-06 Thread Matt Lee
On 9/6/07, Segher Boessenkool [EMAIL PROTECTED] wrote: load r3, q + 0 load r4, q + 4 store r3, p + 0 store r4, p + 4 load r3, q + 4 load r4, q + 8 store r3, p + 4 store r4, p + 8 These last four lines should be load r3, q + 8 load r4, q + 12 store r3,

Register allocation issues

2007-09-05 Thread Matt Lee
Hello, On my simple RISC architecture I am seeing suboptimal instruction scheduling with GCC-4.1.1 caused by the way registers are getting allocated. I am looking for suggestions on what could be wrong in my description to cause the poor allocation. More details -- Registers r3 to r12 are

Re: DFA Scheduler - unable to pipeline loads

2007-09-04 Thread Matt Lee
, but with 3 units stages issue,iu,wb. What does that mean? My understanding is that the number of units seperated by , should be equal to latency. Am I right? Thanks - Joey -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Matt Lee Sent: 2007年9月1日 5:58

Re: DFA Scheduler - unable to pipeline loads

2007-09-04 Thread Matt Lee
On 8/31/07, Adam Nemet [EMAIL PROTECTED] wrote: Matt Lee [EMAIL PROTECTED] writes: I am seeing poor scheduling in Dhrystone where a memcpy call is expanded inline. memcpy (dst, src, 16) == load 1, rA + 4 store 1, rB + 4 load 2, rA + 8 store 2, rB + 8 ... Are you sure

DFA Scheduler - unable to pipeline loads

2007-08-31 Thread Matt Lee
Hi, I am working with GCC-4.1.1 on a simple 5-pipe stage simple scalar RISC processors with the following description for loads and stores, (define_insn_reservation integer 1 (eq_attr type branch,jump,call,arith,darith,icmp,nop) issue,iu,wb) (define_insn_reservation load 3 (eq_attr type

Addressing modes question

2006-07-06 Thread Matt Lee
Hi, Is it possible for me to write a backend that accepts certain addressing modes for loads, while rejecting them for stores? I am not sure how to do this with the GO_IF_LEGITIMATE_ADDRESS macro. I know that this is not very sane, but the situation has arisen neverthless. I want to allow only