This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: How to find out register information at the beginning of a basic block?


On 05/31/2010 08:17 PM, H.J. Lu wrote:
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?
If you mean what part of hard register lives, then as I know there is no such infrastructure code. As I remember Ken Zadeck tried to implement something analogous in the old RA. You could try to find this code in archives.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]