search for: physreg0

Displaying 4 results from an estimated 4 matches for "physreg0".

Did you mean: physreg
2017 Jun 19
4
the root cause is CP, was: A tagged architecture, the elephant in the undef / poison room
...s an IR "constant” and that any optimization you can do to a “constant” can also be done to “undef” without further thought. Instead each ‘undef’ should be thought of as a live on entry register, IE an incoming argument physical register, and “x = undef” cannot be optimized any more than “x = PhysReg0”, in particular multiple uses of X does not mean multiple incoming argument registers, and separate instances of “undef” cannot be equated any more than distinct incoming argument registers. To the argument that this may create unnecessary register pressure I say that is a register allocator issue...
2017 Jun 19
3
the root cause is CP, was: A tagged architecture, the elephant in the undef / poison room
...poison)" in the new semantics. It does not address the > problem of optimizing things like `a s< (a +nsw 1)` (so you'll need a > poison-like thing for that anyway). > >> incoming argument physical register, and “x = undef” cannot be optimized >> any more than “x = PhysReg0”, in particular multiple uses of X does not mean >> multiple incoming argument registers, and separate instances of “undef” >> cannot be equated any more than distinct incoming argument registers. >> >> To the argument that this may create unnecessary register pressure I sa...
2017 Jun 13
4
A tagged architecture, the elephant in the undef / poison room
Here’s what seems to really be going on “undef” === models an uninitialized register, but “poison” === turns the entire IR into a tagged architecture Is this really the way to go ? It seems like a odd choice given that none of our current targets are tagged architectures, all of this tagged IR has to somehow be reduced back down to normal target machine instructions. This question
2018 Dec 05
3
Strange regalloc behaviour: one more available register causes much worse allocation
enableAdvancedRASplitCost() does the same thing as ConsiderLocalIntervalCost, but as a subtarget option instead of a command-line option, and as I’ve said it doesn’t help because it’s a non-local interval causing the eviction chain (RAGreedy::splitCanCauseEvictionChain only considers the local interval for a single block, and it’s unclear to me how to make it handle a non-local interval). John