[llvm] [AArch64][GlobalISel] Legalize <8 x i1> and <16 x i1> loads and stores (PR #210514)

Joel Walker via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 4 06:43:56 PDT 2026


================

----------------
Joel-Wwalker wrote:

I poked at this while reworking the patch. The two shapes the bitcast route would create both legalize cleanly on current main — I ran G_TRUNC of <2 x s32> to <2 x s8> and G_BITCAST of s16 to <2 x s8> through -run-pass=legalizer, and both go through widen/unmerge sequences without falling back or looping. So whatever the G_TRUNC problem was when the TODO was written, at least the basic shapes work now.

Today a <2 x i8> load scalarizes into two byte loads plus a lane insert, where SelectionDAG does one ldrh and widens. So the TODO looks worth trying, but flipping it changes codegen for the existing v2i8/v2i16 tests and deserves its own sweep, so I'd rather attempt it as a separate change after these land.

https://github.com/llvm/llvm-project/pull/210514


More information about the llvm-commits mailing list