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.

Reply via email to