This fixes a miscompilation I introduced in D75993: In that patch, I was switching back to a "T" predicate if an instruction in the "E" part of a VPT block was writing to VPR.
e.g.
vpttet.s32 le, q3, r2 vcmpt.s32 ge, q3, r3 vstrwt.32 q0, [r4] vcmpe.i32 eq, q3, q1 ; There was a vpnot before the vcmp, so its predicate became 'e' and the vpnot was removed vstrwt.32 q2, [r4], #16 ; vcmp wrote to VPR, so the predicate became 'T' again -> this is incorrect
The correct code for above is this, instead:
vpttee.s32 le, q3, r2 vcmpt.s32 ge, q3, r3 vstrwt.32 q0, [r4] vcmpe.i32 eq, q3, q1 vstrwe.32 q2, [r4], #16 ; even if vcmp wrote to vpr, we keep the 'E'
To fix this, I simply removed all of the logic related to "swapping predicates back to T" in the MVE VPT Block Insertion pass.
I also had to rewrite one test so it'd still have a vpttet block - the previous version of the test became a vpttee with this change.
Can you keep the old test as another vpttee test too