This is the mail archive of the
mailing list for the GCC project.
Re: moving v16sf reg with multiple sub-regs
One reason that occurred to me is that I am issueing the v16sf move as four
subreg v4sf moves.
One thing I get are "variable may not be initialised" warnings:
test = _builtin_matrix_mul( left, right );
Is there someway I can flag the moves to say that is moving the v16sf
"whole" so it doesn't need to be initialised and hence avoid the warning?
"James E Wilson" <email@example.com> wrote in message
Dylan Cuthbert wrote:
asm( "some_instruction %0,%1,%2,%3" : "=&j" (blob): "j" (vec1), "j"
(vec2), "j" (frog) );
asm( "some_instruction2 %0,%1" : "=&j" (frog) : "j" (blob) );
It is the goal of the register allocator to use as few registers as
which means that we will try to use the same register for input and
Until we get to reload, where we see the early clobber (&), and then are
to add a copy so that the instruction has separate input and output
Early clobbers are bad. Don't ever use them unless you have to. Just
the instruction operates on pieces of the input does not mean & is
You only add the & if the input and output operands must be in different
This is just a guess. Try compiling with -da and looking at the register
assignments in the .lreg and .greg files, and also at what reload did.
possible that there could be something else going on.
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com