Hello , I too am an undergraduate student intrigued by your work.
I think the vectorisation of while loop will not be too hard, because it’s less a case of “LLVM assumes that … it can only vectorize counting loops”, but more like there is currently no middle-end pass for that. I know that that front ends can cause middle-end passes to run (e.g. LDC (the LLVM D compiler) has (among others) a pass to promote some GC allocations to the stack), and therefore I assume that it should be of comparable difficulty (i.e. doable) to cause middle-end passes to run in the presence of the mill back-end.
Of course writing said pass will be a different kettle of fish.