This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: DFA Scheduler - unable to pipeline loads
- From: Adam Nemet <anemet at caviumnetworks dot com>
- To: "Matt Lee" <reachmatt dot lee at gmail dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Fri, 31 Aug 2007 16:26:51 -0700
- Subject: Re: DFA Scheduler - unable to pipeline loads
- References: <e94302560708311457l59598381tae5a2588fff63c43@mail.gmail.com>
"Matt Lee" <reachmatt.lee@gmail.com> 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 that there are no dependencies due to aliasing here. The
only similar thing that Dhrystone has to what you quote is between a
pointer and a global variable and in fact there is an aliasing
conflict there.
If that is the case you can define a movmem pattern where you first
load everthing in one chunk and then store it later. See MIPS's
movmemsi pattern and the function mips_block_move_straight.
Adam