On Wed, 18 May 2005 12:19:47 -0700, Richard Henderson wrote
> On Wed, May 18, 2005 at 11:10:42PM +0800, Ling-hua Tseng wrote:
> > So I guess that there are some miss-configured in my ports, but I can't
> > find it.
>
> Put a breakpoint at tree-complex.c line 962. Examine the conditions
> leading up to
>
> if ((GET_MODE_CLASS (compute_mode) == MODE_VECTOR_INT
> || GET_MODE_CLASS (compute_mode) == MODE_VECTOR_FLOAT)
> && op != NULL
> && op->handlers[compute_mode].insn_code !=
> CODE_FOR_nothing) return;
>
> to find out why the return isn't taken. There aren't really very
> many options.
>
> The one that jumps first to my mind is that the "addv4qi3"
> instruction pattern doesn't actually exist because you have a typo
> in the name.
>
> r~
A very strange thing was happened.
I put the breakpoint there (in my tree-complex.c, that is line 904),
and find out it's always false in the first part of condition expression.
That's because the compute_mode is SImode. (I never modified any source code)
In order to confirm this, I put the line before the if statement:
printf("%s\n", GET_MODE_NAME(compute_mode));
So the part of program looks like the following:
===================================[top]====================================
if (compute_type == type)
{
printf("%s\n", GET_MODE_NAME(compute_mode));
if ((GET_MODE_CLASS (compute_mode) == MODE_VECTOR_INT
|| GET_MODE_CLASS (compute_mode) == MODE_VECTOR_FLOAT)
&& op != NULL
&& op->handlers[compute_mode].insn_code != CODE_FOR_nothing)
return;
else
{
/* There is no operation in hardware, so fall back to scalars. */
compute_type = TREE_TYPE (type);
compute_mode = TYPE_MODE (compute_type);
}
}
===================================[end]====================================
And then I re-compiled gcc, re-compiled my test program...
I got 4 lines "SI".
(In the ARM's iWMMXt V8QI testing, I got the message: "V8QI")
I used the GDB to put the breakpoint again,
and type "print (((rhs)->common.type)->common.code)".
I got '$1 = VECTOR_TYPE' and got '$2 = VECTOR_TYPE', '$3 = VECTOR_TYPE',
'$4 = VECTOR_TYPE' in the next 3 iterations.
I'm confused.
Are there any target machine macros or hooks setting the VECTOR_TYPE tree
node to SImode?
I checked the <file>.t13.cfg again and didn't find any difference with my
earlier posted.