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] |
On Mon, May 31, 2010 at 12:31 PM, Vladimir Makarov <vmakarov@redhat.com> wrote:I don't think you need all these chains (of course if you really need it). It is time consuming.
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.
It is more complicated if you need the size of pseudo. The class of pseudo
is necessary for this but even if you know this there are complicated
situations, e.g.
The new backend pass is run as the last pass and doesn't deal with pseudo registers. I have
df_chain_add_problem (DF_UD_CHAIN + DF_DU_CHAIN); <<< Is this correct?
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |