This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Why the V4QImode vector operations are expanded into many SImode at "oplower" pass?


On Wed, 18 May 2005 14:17:59 -0700, Richard Henderson wrote
> On Thu, May 19, 2005 at 04:58:32AM +0800, Ling-hua Tseng wrote:
> > I got 4 lines "SI".
> > (In the ARM's iWMMXt V8QI testing, I got the message: "V8QI")
> 
> Then you need to debug your targetm.vector_mode_supported_p.
> 
> Starting around stor-layout.c line 1609:
> 
>             for (; mode != VOIDmode ; mode = GET_MODE_WIDER_MODE 
> (mode))              if (GET_MODE_NUNITS (mode) == nunits            
>       && GET_MODE_INNER (mode) == innermode                  && 
> targetm.vector_mode_supported_p (mode))                break;
> 
>             /* For integers, try mapping it to a same-sized scalar 
> mode.  */            if (mode == VOIDmode                && 
> GET_MODE_CLASS (innermode) == MODE_INT)              mode = 
> mode_for_size (nunits * GET_MODE_BITSIZE (innermode),                
>                     MODE_INT, 0);
> 
> The compiler has passed through the first loop without finding
> a supported vector mode that matches nunits=4 && inner=QImode.
> 
> r~
The targetm.vector_mode_supported_p is pointed to the genernal 
hook "hook_bool_mode_false".
But I have already put the following lines in my <target>.c:
===================================[top]====================================
...
#include "target-def.h"
...
static bool unicore_vector_mode_supported_p(enum machine_mode mode);
...
struct gcc_target targetm = TARGET_INITIALIZER;
...
#undef  TARGET_VECTOR_MODE_SUPPORTED_P
#define TARGET_VECTOR_MODE_SUPPORTED_P  unicore_vector_mode_supported_p
...
static bool unicore_vector_mode_supported_p(enum machine_mode mode)
{
        switch(mode) {
        case V4QImode:
        case V2HImode:
                return true;
        default:
                return false;
        }
}
...
===================================[end]====================================

Doesn't it enough to let the targetm.vector_mode_supported_p to be pointed to
my unicore_vector_mode_supported_p() ?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]