krzysz00 wrote: Having read the discussion, I'd argue against doing a bunch of explicit shifts, and instead bitcasting to vectors - LLVM will turn that into either shifts or subreg modifiers as needed, IIRC https://github.com/llvm/llvm-project/pull/174206