This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: rfc: vector_cst, reload etc
hi geoff.
> > find_reloads will cause a reload of R8-R12 (in insn 13)
>
> ??? You must mean R9-R12.
sorry, yes.
> > (set (subreg:SI (reg:V4SI r12)) 69)
>
> You mean '(set (reg:SI r12) (const_int 69))'. There shouldn't be a
> SUGREG at this point.
correct.
> > ..as perfectly valid (after all, it's just a set into an SI register).
> > then flow deletes the set into r12 because it's no longer needed.
>
> ??? Of course it's needed. The code should look, at this point, like:
>
> (set (reg:V4SI v...) (const_vector 0))
> (set (reg:V4SI r9) (reg:V4SI v...))
> (set (reg:SI r12) (const_int 12))
> (subsequent use of r9-r12).
i wish... here's the rtl after .greg. it seems to be it's *trying* to:
1. clear v0
2. v0 --> memory
3. (not done) poke 69 into the right offset in memory
4. (not done) v0 <-- modified memory
but it forgets to do #3 and #4. and just ends up putting 69 in r12.
clues?
(insn 13 27 38 (set (reg:V4SI 77 v0)
(const_vector:V4SI[
(const_int 0 [0x0])
(const_int 0 [0x0])
(const_int 0 [0x0])
(const_int 0 [0x0])
] )) 544 {*movv4si_const0} (nil)
(nil))
(insn 38 13 34 (set (reg:SI 8 r8)
(plus:SI (reg/f:SI 1 r1)
(const_int -32 [0xffffffe0]))) 36 {*addsi3_internal1} (nil)
(nil))
(insn 34 38 37 (set (mem:V4SI (reg:SI 8 r8) [0 S16 A128])
(reg:V4SI 77 v0)) 534 {altivec_stvx_4si} (nil)
(nil))
(insn 37 34 16 (set (reg/v:V4SI 9 r9 [118])
(mem:V4SI (reg:SI 8 r8) [0 S16 A128])) 538 {*movv4si_internal} (nil)
(nil))
(insn 16 37 30 (set (reg:SI 12 r12 [118])
(const_int 69 [0x45])) 294 {*movsi_internal1} (insn_list 13 (nil))
(nil))
(insn 30 16 29 (set (reg/f:SI 8 r8 [117])
(high:SI (symbol_ref:SI ("!d__bar")))) 285 {macho_high} (nil)
(expr_list:REG_EQUIV (high:SI (symbol_ref:SI ("!d__bar")))
(nil)))
(insn 29 30 39 (set (reg/f:SI 8 r8 [116])
(lo_sum:SI (reg/f:SI 8 r8 [117])
(symbol_ref:SI ("!d__bar")))) 286 {macho_low} (nil)
(expr_list:REG_EQUIV (symbol_ref:SI ("!d__bar"))
(nil)))
(insn 39 29 18 (set (reg:SI 7 r7)
(plus:SI (reg/f:SI 1 r1)
(const_int -32 [0xffffffe0]))) 36 {*addsi3_internal1} (nil)
(nil))
(insn 18 39 19 (set (mem/f:V4SI (reg/f:SI 8 r8 [116]) [0 bar+0 S16 A128])
(reg:V4SI 77 v0)) 534 {altivec_stvx_4si} (insn_list 9 (insn_list 16 (nil)))
(nil))