turnip: dEQP-VK.subgroups.ballot_broadcast.framebuffer.* has failures on older deqp-vk
dEQP-VK.subgroups.ballot_broadcast.framebuffer.*
has some failures on android11-tests-release branch. The branch lacks this shader change and causes ir3 to generate bad binary. Here is the VS code
and disassembly of dEQP-VK.subgroups.ballot_broadcast.framebuffer.subgroupbroadcast_uvec3vertex
.
The root cause seems to be in this snippet
...
(ul)mov.u32u32 r4.x, c<a0.x + 1>
mov.u32u32 r41.y, r3.w
and.b r41.z, r41.z, 1
cmps.s.ne hr5.z, r39.w, 0
br !p0.x, #l83
mov.u32u32 r49.x, r4.x
l83:
(jp)(ul)mov.u32u32 r4.y, c<a0.x + 2>
...
The first mov.u3232
should not have (ul)
. I hacked ir3_legalize
to omit (ul)
from the first instruction and that allowed the test to pass.