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.

Reply via email to