<enunes>
anarsoul: so after staring at the liveness problem a bit more, I'm realizing that the algorithm should actually still work for multiple writes in different blocks
<enunes>
the point is that when a register is written, say all components, the right thing to do is indeed kill it
<enunes>
the values that were previously there are not valid anymore, so the register is indeed not live
<enunes>
if only some components are overwritten, the register stays in the live set due to the mask tracking
Barada has quit [Quit: Barada]
<enunes>
so, if there are regressions in the ubuntu touch stuff because of that, it's either some missing corner case or just another exposed bug
<enunes>
I also ran deqp with loop unrolling disabled and there were no new issues with loops, multiple writes etc, so I think the implementation is ok
yuq825 has quit [Remote host closed the connection]
<anarsoul|c>
enunes: I've sent an MR on Saturday that fixes the issue for Ubuntu touch
<enunes>
anarsoul: well, I think we're good then, I'm confident now that there is no major design issue
<anarsoul|c>
Not with liveness analysis :)
<anarsoul|c>
See my MR that fixes texture lowering
<anarsoul|c>
I don't really like the solution but I don't see other way to fix it without refactoring ppir
<anarsoul|c>
Basically we have to track all successors, not only these from current block
<anarsoul|c>
Otherwise we don't have enough information to insert move correctly for ldtex
<enunes>
I saw that one but didn't review in depth
<enunes>
is it something that was exposed with liveness or was it always there?
<enunes>
I have to refresh my mind about how texture lowering works
<anarsoul|c>
It was here since I dropped cloning ldtex to each block
<anarsoul|c>
Since we can't guarantee that ldtex will be called from each invocation if we clone them
<enunes>
I'll only be able to look at it later today; does this have any relation with the higher precision path for textures?
<MoeIcenowy>
anarsoul|c: I checked AUX0 pixel kill bit set in the dump
<MoeIcenowy>
many tests have it set
<anarsoul|c>
@enunes: nope, that's for ldtex, since it always puts result into pipeline reg
<anarsoul|c>
We need a mov if we want to store into into real reg
<rellla>
MoeIcenowy: yeah, most of the test have it set - except the depth_stencil.stencil_ops.*
<anarsoul>
I don't really see the pattern :(
<anarsoul>
if I set it unconditionally glmark2 breaks
<MoeIcenowy>
anarsoul: I think we should set it if no discard and no blend