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.