I feel like trying to accommodate the assembler (and disassembler) in vkd3d_shader_instruction is going to be a losing proposition at some point,
I think so as well, yes. I also think we haven't quite reached that point yet though, and it seems helpful to not tie that particular change to shader model 6 support at this point.
but in this case it at least doesn't seem right that it's in spirv.c; perhaps it could live in some "neutral" source file?
Sure.