[PATCH] [PATCH] Test case and FastISel fixes with FeatureVSX enabled

Bill Schmidt wschmidt at linux.vnet.ibm.com
Mon Sep 22 09:59:23 PDT 2014


On Mon, 2014-09-22 at 15:11 +0000, Bill Seurer wrote:
> >>! In D5362#12, @hfinkel wrote:
> > Thanks for working on this!
> > 
> > Regarding approach, instead of disabling parts of FastISel when VSX is enabled, why don't we disable VSX when FastISel would be used? For example, what if in PPCSubtarget::initSubtargetFeatures we added something like this after the call to ParseSubtargetFeatures:
> > 
> >   if (OptLevel == CodeGenOpt::None) or even better if possible (TM.Options.EnableFastISel)
> >     HasVSX = false;
> > 
> > (we already do something similar for little-Endian mode currently). Then we just need to add an assert in the FastISel implementation that VSX is not enabled.
> 
> How about changing getRegForValue to return 0 if it ends up with a VSX register.  All the uses of getRegForValue already check for a 0 return value.  That moves the code to just one spot and there are already multiple checks there for things that FastISel can't handle.

Hi Bill,

I believe this is generally what Eric is suggesting, but
FastISel::getRegForValue() is in the common code, so we have to change
it in one of the backend-specific calls.  There is a call to
TLI.isTypeLegal(VT) in FastISel::getRegForValue() that will call into
PPCFastISel.isTypeLegal().  So you can add a check there for the VSX
register classes and return false for now, and that will take care of it
everywhere.

Thanks,
Bill
> 
> > As a general note, please upload full-context diffs in the future (see http://llvm.org/docs/Phabricator.html for instructions).
> 
> Will do.
> 
> http://reviews.llvm.org/D5362
> 
> 





More information about the llvm-commits mailing list