Implementing VMX128 AltiVec Variant

Gordan Bobic gordan@bobich.net
Wed Aug 22 10:13:00 GMT 2007


On Wed, 22 Aug 2007, Paolo Bonzini 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".

Thanks for that. This is the sort of thing I was hoping to eventually 
implement (rather than re-implementing vmx128.h and vmx128.md from scratch 
with 90% overlap with altivec.h and altivec.md). But I'd really like to go 
with a quick and dirty proof of concept first, which is to just cut out 
the offending instructions from altivec support, just to make sure that it 
would work.

Gordan



More information about the Gcc mailing list