------- Additional Comments From rth at gcc dot gnu dot org 2005-05-18 08:21
-------
Not alpha specific. The tunings we have in the alpha memcpy expansion are
correct for real copies between memory. We want to prefer
ldbu $1,3($17)
ldbu $2,0($17)
ldbu $3,1($17)
ldbu $4,2($17)
stb $1,3($16)
stb $2,0($16)
stb $3,1($16)
stb $4,2($16)
over
ldq_u $5,0($17)
ldq_u $2,3($17)
ldq_u $3,3($16)
ldq_u $4,0($16)
extlh $2,$17,$2
extll $5,$17,$5
msklh $3,$16,$3
mskll $4,$16,$4
bis $5,$2,$1
inslh $1,$16,$6
insll $1,$16,$1
bis $3,$6,$3
bis $4,$1,$4
stq_u $3,3($16)
stq_u $4,0($16)
The trick is that we want to notice at the tree level that the memcpy is
really a killing store of a local variable, and rewrite it into the
assignment form. I'll give it some thought.
--
What |Removed |Added
----------------------------------------------------------------------------
GCC target triplet|alphaev68-*-linux-gnu |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15419