@GDCPresoReviews @TomF as @bas mentions, if it allows you to assume forward progress while in diverging execution, that could make the shader compiler simpler in certain situations. UB is important in terms of the abstract model of the shader language and IR, but the actual hardware model matters too because it changes how much freedom the compiler has to actualize the code in the shader. Aside: In this case, does this then impact the implementation of maximal reconvergence? Guess it's similar?
@dotstdy @GDCPresoReviews @TomF I dunno if they promise forward progress in graphics, vs only in cuda where nobody promises maximal reconvergence. And for gfx Nvidia has instructions to force reconvergence. Could still be a nice latency hiding tool between two sides of an if, maybe?
@GDCPresoReviews @TomF @bas I guess more basically, does that mean that reconvergence has to emit an actual instruction?
@GDCPresoReviews @bas @dotstdy Nvidia has explicit hints in their language, yes. Unclear what assembly instructions they actually turn into of course.
@TomF @GDCPresoReviews @bas was poking around some, this is a fun paper on the topic https://arxiv.org/pdf/2407.02944

@dotstdy @TomF @bas

Does it *actually* allow you to assume forward progress in diverging execution? Is the thread scheduler *guaranteed* to provide it?

Like, saying the scheduler is capable of running an arbitrary subset of threads is different than saying the scheduler implements a fair scheduling algorithm

@GDCPresoReviews @TomF @bas That's exactly what I would assume it does, since cuda has a reliance on forward progress. But of course I'm just spitballin.

@dotstdy @TomF @bas

Oh, sorry, I meant Mali, not Nvidia

@GDCPresoReviews @TomF @bas oh God knows what mali does, it might be better documented though :')
@GDCPresoReviews @dotstdy @TomF I don't think claims like that have been made for Mali, and I think that unless they advertise it widely I'd assume they don't