Jakob Stoklund Olesen <stoklund at 2pi.dk> writes:> On Sep 19, 2012, at 10:49 AM, <dag at cray.com> wrote: > >> Jakob Stoklund Olesen <stoklund at 2pi.dk> writes: >> >> So if there are multiple values between r2 and r3 (r2.1, r2.2, etc.) I >> would just follow the chains implied by the SibValueInfo Deps array? >> Basically, I want to find all of the live ranges related to r1. > > It really depends on what you're trying to do. > > The whole sibling value machinery is only concerned with tracking > different virtual register value numbers that are known to have the > same value. It doesn't really apply to anything else.Are all of those sibling values guaranteed to ultimately derive from the same def, in the sense that they can be traced through copies, phis, etc. back to a single instruction? I'm looking at scheduling the load in my example and I need to be able to check for conflicting stores within relevant live ranges. Is there a design document for the new InlineSpiller and SplitKit somewhere? -Dave
On Sep 19, 2012, at 4:02 PM, dag at cray.com wrote:> Jakob Stoklund Olesen <stoklund at 2pi.dk> writes: > >> On Sep 19, 2012, at 10:49 AM, <dag at cray.com> wrote: >> >>> Jakob Stoklund Olesen <stoklund at 2pi.dk> writes: >>> >>> So if there are multiple values between r2 and r3 (r2.1, r2.2, etc.) I >>> would just follow the chains implied by the SibValueInfo Deps array? >>> Basically, I want to find all of the live ranges related to r1. >> >> It really depends on what you're trying to do. >> >> The whole sibling value machinery is only concerned with tracking >> different virtual register value numbers that are known to have the >> same value. It doesn't really apply to anything else. > > Are all of those sibling values guaranteed to ultimately derive from the > same def, in the sense that they can be traced through copies, phis, > etc. back to a single instruction?They are known the all come from the same value in the original live range from before live range splitting. The defining instruction may not exists any longer. It could have been rematerialized somewhere else. It could also have been PHI.> Is there a design document for the new InlineSpiller and SplitKit > somewhere?No. /jakob
On Sep 19, 2012, at 4:08 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:> They are known the all come from the same value in the original live range from before live range splitting.s/the/to/ See InlineSpiller::Original and VRM::getOriginal(). /jakob
Jakob Stoklund Olesen <stoklund at 2pi.dk> writes:>> Are all of those sibling values guaranteed to ultimately derive from the >> same def, in the sense that they can be traced through copies, phis, >> etc. back to a single instruction? > > They are known the all come from the same value in the original live range from before live range splitting.Ok, that's exactly what I need.> The defining instruction may not exists any longer. It could have been > rematerialized somewhere else. It could also have been PHI.Ok, so in that case the traced-to VNInfo will have a def SlotIndex of Slot_Block or something? -David