https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118067
--- Comment #10 from Uroš Bizjak <ubizjak at gmail dot com> ---
Please note that RA loops with SImode, the dump from _.324r.reload reads:
(insn 193 5 191 2 (set (reg:SI 338)
(subreg/j:SI (reg/v:V32HI 165 [ u ]) 0)) "pr118067.c":13:8 96
{*movsi_internal}
(nil))
(note 191 193 192 2 NOTE_INSN_DELETED)
(insn 192 191 194 2 (set (reg:SI 339)
(reg:SI 338)) "pr118067.c":13:8 96 {*movsi_internal}
(nil))
...
(insn 280 279 281 2 (set (reg:SI 426)
(reg:SI 425)) "pr118067.c":13:8 96 {*movsi_internal}
(nil))
(insn 281 280 9 2 (set (subreg/j:SI (reg:HI 337) 0)
(reg:SI 426)) "pr118067.c":13:8 96 {*movsi_internal}
(nil))
(insn 9 281 10 2 (parallel [
(set (reg:HI 99 [ _2 ])
(lshiftrt:HI (reg:HI 337)
(const_int 1 [0x1])))
(clobber (reg:CC 17 flags))
]) "pr118067.c":13:8 1215 {*lshrhi3_1}
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)))
One would expect a HImode spill from (reg/v:V32HI 165 [ u ]) to a temporary
memory location (due to targetm.secondary_memory_needed) and fill from this
location to (reg:HI 337). Both instructions are available with TARGET_AVX512F.