Implementing VMX128 AltiVec Variant

Paolo Bonzini bonzini@gnu.org
Wed Aug 22 09:48:00 GMT 2007


Gordan Bobic wrote:
> On Tue, 21 Aug 2007, Ian Lance Taylor wrote:
> 
>>> With the modifications I made, GCC still compiled fine. However,
>>> libgcc and libstdc++ DO still get build with the missing instructions
>>> (according to objdump -D). Why is that? Is that a consequence of the
>>> ADA files? Or something else? Where should I look? Is the it ada files
>>> that are the cause of the problem I'm seeing?
>>
>> It must be something else.  I'm not sure what, though.  It might be
>> something as simple as an instruction built from substrings.  For
>> example, search for altivec_vmsumu<VI_char>m in altivec.md.
> 
> I just re-checked for that and I can't find any. I have attached a diff 
> for my modified altivec.h, altivec.md and rs6000.c files. Patch in 
> gcc/config/rs6000 subtree with -p1.
> 
> Can anyone think of anywhere else I should be looking? Where else could 
> these instructions be coming from?

This is really not relevant to the posted patch; however, I'll still 
post it here.

The proper way to disable Altivec instructions is to leave altivec.h and 
rs6000.c aside, and just change the "TARGET_ALTIVEC" to something like 
"(TARGET_ALTIVEC && 0)".  The remaining code will automagically be disabled.

Later, you can add your option and the corresponding TARGET_VMX128 mask, 
and go back replacing the "TARGET_ALTIVEC && 0" with "TARGET_ALTIVEC && 
!TARGET_VMX128".

Paolo



More information about the Gcc mailing list