https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97286

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |vmakarov at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
We have:
(insn 17 15 19 4 (set (reg:V4SF 92)
        (vec_merge:V4SF (mem:V4SF (plus:DI (reg/v/f:DI 88 [ in ])
                    (reg:DI 87 [ ivtmp.15 ])) [0 MEM[(const __m128i_u *
{ref-all})in_7(D) + ivtmp.15_30 * 1]+0 S16 A8])
            (subreg:V4SF (reg/v:V2DI 91 [ a ]) 0)
            (const_int 5 [0x5]))) "include/smmintrin.h":193:19 4587
{sse4_1_blendps}
     (expr_list:REG_DEAD (reg/v:V2DI 91 [ a ])
        (nil)))
(insn 19 17 20 4 (set (reg/v:V2DI 91 [ a ])
        (subreg:V2DI (reg:V4SF 92) 0)) "pr97286.c":5:11 1405 {movv2di_internal}
     (nil))
in the loop (plus pseudo 91 setter before the loop and pseudo 92 store in the
loop).
There are no conflicts:
;; a4(r91,l0) conflicts: a15(r92,l0)
;;     total conflict hard regs:
;;     conflict hard regs:
so it is unclear why IRA doesn't prefer putting it into the same register. 
Maybe the subregs are the reason and if there weren't any, it would do it?

Reply via email to