Steve Ellcey wrote: > And in aarch64 rtl expansion I see: > > (insn 10 9 11 (set (reg:QI 81) > (mem:QI (reg/v/f:DI 80 [ string ]) [0 *string_9(D)+0 S1 A8])) > "pr77729.c":3 -1 > (nil))
Yes using QI/HI mode anywhere in the RTL seems perverse and incorrect given AArch64 doesn't support registers narrower than 32 bits. Shift counts seem to have the same issue and expand into very complex sequences of ANDs with subreg - and nobody seems to understand what subreg really means... My feeling is that we should only use SI/DI mode in patterns and aggressively widen all 8/16-bit operations to SI mode (which is what C requires anyway). Wilco