@@ -3016,6 +3016,28 @@ class Compiler
30163016                              CorInfoIntrinsics     intrinsicID,
30173017                              bool                   tailCall);
30183018    NamedIntrinsic lookupNamedIntrinsic (CORINFO_METHOD_HANDLE method);
3019+ 
3020+ #ifdef  _TARGET_XARCH_
3021+     InstructionSet lookupHWIntrinsicISA (const  char * className);
3022+     NamedIntrinsic lookupHWIntrinsic (const  char * methodName, InstructionSet isa);
3023+     InstructionSet isaOfHWIntrinsic (NamedIntrinsic intrinsic);
3024+     GenTree* impX86HWIntrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3025+     GenTree* impSSEIntrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3026+     GenTree* impSSE2Intrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3027+     GenTree* impSSE3Intrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3028+     GenTree* impSSSE3Intrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3029+     GenTree* impSSE41Intrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3030+     GenTree* impSSE42Intrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3031+     GenTree* impAVXIntrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3032+     GenTree* impAVX2Intrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3033+     GenTree* impAESIntrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3034+     GenTree* impBMI1Intrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3035+     GenTree* impBMI2Intrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3036+     GenTree* impFMAIntrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3037+     GenTree* impLZCNTIntrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3038+     GenTree* impPCLMULQDQIntrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3039+     GenTree* impPOPCNTIntrinsic (NamedIntrinsic intrinsic, CORINFO_METHOD_HANDLE method);
3040+ #endif 
30193041    GenTreePtr impArrayAccessIntrinsic (CORINFO_CLASS_HANDLE clsHnd,
30203042                                       CORINFO_SIG_INFO*    sig,
30213043                                       int                   memberRef,
@@ -7915,6 +7937,19 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
79157937#endif                       //  FEATURE_AVX_SUPPORT
79167938#endif                       //  _TARGET_XARCH_
79177939
7940+ #ifdef  _TARGET_XARCH_
7941+         //  only for Intel hardware intrinsics
7942+         uint64_t  compSupportsISA;
7943+         void  setSupportedISA (InstructionSet isa)
7944+         {
7945+             compSupportsISA |= 1  << isa;
7946+         }
7947+         bool  compSupports (InstructionSet isa)
7948+         {
7949+             return  (compSupportsISA & (1  << isa)) != 0 ;
7950+         }
7951+ #endif 
7952+ 
79187953//  optimize maximally and/or favor speed over size?
79197954
79207955#define  DEFAULT_MIN_OPTS_CODE_SIZE  60000 
0 commit comments