In http://reviews.llvm.org/D7951#131459, @wschmidt wrote:

> In http://reviews.llvm.org/D7951#131441, @hfinkel wrote:
>
> > In http://reviews.llvm.org/D7951#131439, @nemanjai wrote:
> >
> > > Note to reviewers: There is currently no macro guard for the builtins 
> > > that do not require Cagegory:Vector.Crypto. However, the back end will 
> > > not generate code for them on older CPU's. Perhaps I should guard those 
> > > with __POWER8_VECTOR__ macro. However, this would imply that -mcrypto 
> > > needs to imply -mpower8-vector which is probably the correct thing to do 
> > > since Category:Vector.Crypto is a subset of Category:Vector.
> > >  I can make these changes and upload a revision if everyone agrees with 
> > > this approach.
> >
> >
> > Why don't we guard them all with __CRYPTO__? It seems somewhat odd to have 
> > some, but not all, of the __builtin_crypto_* available when the crypto 
> > feature is disabled.
>
>
> Because this is too big of a hammer.  GCC made a mistake with this (I've 
> proposed correcting this and will be working on fixing it in the future).  We 
> need to treat the SHA and AES support instructions as a separate group 
> because Vector.Crypto is an optional implementation feature in the hardware, 
> due to export control restrictions.  POWER8 hardware with such instructions 
> couldn't be transported legally to sensitive countries.  But the other 
> instructions in that section of the ISA are under no such legal restrictions, 
> and as they are part of the Vector feature, they must be implemented for 
> OpenPOWER-compliant implementations.


Understood. Exactly what have you proposed that GCC do?

My preference would be the following: Define intrinsics for these instructions 
without 'crypto' in the name, and make them available predicated only on 
__POWER8_VECTOR__. Define aliases (using #define or another inline function) to 
these with 'crypto' in the name, and have these available predicated on 
__CRYPTO__. This way the instructions remain generally available, but we don't 
end up in the confusing situation where __builtin_crypto_* functions are 
available even when the 'crypto' feature has been disabled.


REPOSITORY
  rL LLVM

http://reviews.llvm.org/D7951

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to