This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: How to find out register information at the beginning of a basic block?
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Vladimir Makarov <vmakarov at redhat dot com>
- Cc: GCC Development <gcc at gcc dot gnu dot org>
- Date: Mon, 31 May 2010 17:17:52 -0700
- Subject: Re: How to find out register information at the beginning of a basic block?
- References: <AANLkTikiXdsulo-u7fCJyz0ZAUu9wa4S32ZR1HZY2Igs@mail.gmail.com> <AANLkTilXTAnHxsK9oyCDDI8GTWXFofmkJVwL-lHcvlDB@mail.gmail.com> <4C040E9A.3000600@redhat.com>
On Mon, May 31, 2010 at 12:31 PM, Vladimir Makarov <vmakarov@redhat.com> wrote:
> H.J. Lu wrote:
>>
>> Hi,
>>
>> I am working on generating vzeroupper to avoid AVX->SSE transition
>> penalty.
>>
>> I have generated vzeroupper on function return as well as function
>> call. ?I am working on a backend pass to eliminate those vzeroupper
>> instructions when I can prove that the upper 128bits of AVX registers
>> are dead at the point where vzeroupper is added. To do that, I need
>> to find out if a register is live at the beginning of a basic block as
>> well
>> as its size. I thought dataflow might give me such info. But I couldn't
>> find a way to access such information. Does anyone have any pointers?
>>
>>
>
> DF_LR_IN (bb) returns bitmap of livings prseudo regnos.
> DF_LIVE_IN (bb) takes availability info into account.
>
> Size of hard registers is defined by hard_regno_nregs.
>
My impression is hard_regno_nregs tells me that number of
hard registers given machine mode occupy. It doesn't tell me
the live size of a hard register at the beginning of a basic
block. How do I get this information?
Thanks.
--
H.J.