This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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))


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]