Adding the remaining SSE intrinsics to hwintrinsiclistxarch.h
authorTanner Gooding <tagoo@outlook.com>
Fri, 15 Dec 2017 02:50:23 +0000 (18:50 -0800)
committerTanner Gooding <tagoo@outlook.com>
Wed, 17 Jan 2018 00:04:12 +0000 (16:04 -0800)
src/jit/hwintrinsiclistxarch.h

index e834f7a..cd5e59d 100644 (file)
 // clang-format off
 
 #if FEATURE_HW_INTRINSICS
-//                  Intrinsic ID                   Function name                ISA   
-//  SSE Intrinsics          
-HARDWARE_INTRINSIC(SSE_IsSupported,             "get_IsSupported",              SSE)
-HARDWARE_INTRINSIC(SSE_Add,                     "Add",                          SSE)
-
-//  SSE2 Intrinsics 
-HARDWARE_INTRINSIC(SSE2_IsSupported,            "get_IsSupported",              SSE2)
-HARDWARE_INTRINSIC(SSE2_Add,                    "Add",                          SSE2)
-
-//  SSE3 Intrinsics 
-HARDWARE_INTRINSIC(SSE3_IsSupported,            "get_IsSupported",              SSE3)
-
-//  SSSE3 Intrinsics 
-HARDWARE_INTRINSIC(SSSE3_IsSupported,           "get_IsSupported",              SSSE3)
-
-//  SSE41 Intrinsics 
-HARDWARE_INTRINSIC(SSE41_IsSupported,           "get_IsSupported",              SSE41)
-
-//  SSE42 Intrinsics 
-HARDWARE_INTRINSIC(SSE42_IsSupported,           "get_IsSupported",              SSE42)
-HARDWARE_INTRINSIC(SSE42_Crc32,                 "Crc32",                        SSE42)
-
-//  AVX Intrinsics 
-HARDWARE_INTRINSIC(AVX_IsSupported,             "get_IsSupported",              AVX)
-HARDWARE_INTRINSIC(AVX_Add,                     "Add",                          AVX)
-
-//  AVX2 Intrinsics 
-HARDWARE_INTRINSIC(AVX2_IsSupported,            "get_IsSupported",              AVX2)
-HARDWARE_INTRINSIC(AVX2_Add,                    "Add",                          AVX2)
-
-//  AES Intrinsics 
-HARDWARE_INTRINSIC(AES_IsSupported,             "get_IsSupported",              AES)
-
-//  BMI1 Intrinsics 
-HARDWARE_INTRINSIC(BMI1_IsSupported,            "get_IsSupported",              BMI1)
-
-//  BMI2 Intrinsics 
-HARDWARE_INTRINSIC(BMI2_IsSupported,            "get_IsSupported",              BMI2)
-
-//  FMA Intrinsics 
-HARDWARE_INTRINSIC(FMA_IsSupported,             "get_IsSupported",              FMA)
-
-//  LZCNT Intrinsics 
-HARDWARE_INTRINSIC(LZCNT_IsSupported,           "get_IsSupported",              LZCNT)
-HARDWARE_INTRINSIC(LZCNT_LeadingZeroCount,      "LeadingZeroCount",             LZCNT)
-
-//  PCLMULQDQ Intrinsics 
-HARDWARE_INTRINSIC(PCLMULQDQ_IsSupported,       "get_IsSupported",              PCLMULQDQ)
-
-//  POPCNT Intrinsics 
-HARDWARE_INTRINSIC(POPCNT_IsSupported,          "get_IsSupported",              POPCNT)
-HARDWARE_INTRINSIC(POPCNT_PopCount,              "PopCount",                    POPCNT)
+//                 Intrinsic ID                                     Function name                                   ISA
+//  SSE Intrinsics
+HARDWARE_INTRINSIC(SSE_IsSupported,                                 "get_IsSupported",                              SSE)
+HARDWARE_INTRINSIC(SSE_Add,                                         "Add",                                          SSE)
+HARDWARE_INTRINSIC(SSE_AddScalar,                                   "AddScalar",                                    SSE)
+HARDWARE_INTRINSIC(SSE_And,                                         "And",                                          SSE)
+HARDWARE_INTRINSIC(SSE_AndNot,                                      "AndNot",                                       SSE)
+HARDWARE_INTRINSIC(SSE_CompareEqual,                                "CompareEqual",                                 SSE)
+HARDWARE_INTRINSIC(SSE_CompareEqualOrderedScalar,                   "CompareEqualOrderedScalar",                    SSE)
+HARDWARE_INTRINSIC(SSE_CompareEqualScalar,                          "CompareEqualScalar",                           SSE)
+HARDWARE_INTRINSIC(SSE_CompareEqualUnorderedScalar,                 "CompareEqualUnorderedScalar",                  SSE)
+HARDWARE_INTRINSIC(SSE_CompareGreaterThan,                          "CompareGreaterThan",                           SSE)
+HARDWARE_INTRINSIC(SSE_CompareGreaterThanOrderedScalar,             "CompareGreaterThanOrderedScalar",              SSE)
+HARDWARE_INTRINSIC(SSE_CompareGreaterThanScalar,                    "CompareGreaterThanScalar",                     SSE)
+HARDWARE_INTRINSIC(SSE_CompareGreaterThanUnorderedScalar,           "CompareGreaterThanUnorderedScalar",            SSE)
+HARDWARE_INTRINSIC(SSE_CompareGreaterThanOrEqual,                   "CompareGreaterThanOrEqual",                    SSE)
+HARDWARE_INTRINSIC(SSE_CompareGreaterThanOrEqualOrderedScalar,      "CompareGreaterThanOrEqualOrderedScalar",       SSE)
+HARDWARE_INTRINSIC(SSE_CompareGreaterThanOrEqualScalar,             "CompareGreaterThanOrEqualScalar",              SSE)
+HARDWARE_INTRINSIC(SSE_CompareGreaterThanOrEqualUnorderedScalar,    "CompareGreaterThanOrEqualUnorderedScalar",     SSE)
+HARDWARE_INTRINSIC(SSE_CompareLessThan,                             "CompareLessThan",                              SSE)
+HARDWARE_INTRINSIC(SSE_CompareLessThanOrderedScalar,                "CompareLessThanOrderedScalar",                 SSE)
+HARDWARE_INTRINSIC(SSE_CompareLessThanScalar,                       "CompareLessThanScalar",                        SSE)
+HARDWARE_INTRINSIC(SSE_CompareLessThanUnorderedScalar,              "CompareLessThanUnorderedScalar",               SSE)
+HARDWARE_INTRINSIC(SSE_CompareLessThanOrEqual,                      "CompareLessThanOrEqual",                       SSE)
+HARDWARE_INTRINSIC(SSE_CompareLessThanOrEqualOrderedScalar,         "CompareLessThanOrEqualOrderedScalar",          SSE)
+HARDWARE_INTRINSIC(SSE_CompareLessThanOrEqualScalar,                "CompareLessThanOrEqualScalar",                 SSE)
+HARDWARE_INTRINSIC(SSE_CompareLessThanOrEqualUnorderedScalar,       "CompareLessThanOrEqualUnorderedScalar",        SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotEqual,                             "CompareNotEqual",                              SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotEqualOrderedScalar,                "CompareNotEqualOrderedScalar",                 SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotEqualScalar,                       "CompareNotEqualScalar",                        SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotEqualUnorderedScalar,              "CompareNotEqualUnorderedScalar",               SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotGreaterThan,                       "CompareNotGreaterThan",                        SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotGreaterThanScalar,                 "CompareNotGreaterThanScalar",                  SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotGreaterThanOrEqual,                "CompareNotGreaterThanOrEqual",                 SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotGreaterThanOrEqualScalar,          "CompareNotGreaterThanOrEqualScalar",           SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotLessThan,                          "CompareNotLessThan",                           SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotLessThanScalar,                    "CompareNotLessThanScalar",                     SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotLessThanOrEqual,                   "CompareNotLessThanOrEqual",                    SSE)
+HARDWARE_INTRINSIC(SSE_CompareNotLessThanOrEqualScalar,             "CompareNotLessThanOrEqualScalar",              SSE)
+HARDWARE_INTRINSIC(SSE_CompareOrdered,                              "CompareOrdered",                               SSE)
+HARDWARE_INTRINSIC(SSE_CompareOrderedScalar,                        "CompareOrderedScalar",                         SSE)
+HARDWARE_INTRINSIC(SSE_CompareUnordered,                            "CompareUnordered",                             SSE)
+HARDWARE_INTRINSIC(SSE_CompareUnorderedScalar,                      "CompareUnorderedScalar",                       SSE)
+HARDWARE_INTRINSIC(SSE_ConvertToInt32,                              "ConvertToInt32",                               SSE)
+HARDWARE_INTRINSIC(SSE_ConvertToInt64,                              "ConvertToInt64",                               SSE)
+HARDWARE_INTRINSIC(SSE_ConvertToSingle,                             "ConvertToSingle",                              SSE)
+HARDWARE_INTRINSIC(SSE_ConvertToVector128SingleScalar,              "ConvertToVector128SingleScalar",               SSE)
+HARDWARE_INTRINSIC(SSE_ConvertToInt32WithTruncation,                "ConvertToInt32WithTruncation",                 SSE)
+HARDWARE_INTRINSIC(SSE_ConvertToInt64WithTruncation,                "ConvertToInt64WithTruncation",                 SSE)
+HARDWARE_INTRINSIC(SSE_Divide,                                      "Divide",                                       SSE)
+HARDWARE_INTRINSIC(SSE_DivideScalar,                                "DivideScalar",                                 SSE)
+HARDWARE_INTRINSIC(SSE_LoadAlignedVector128,                        "LoadAlignedVector128",                         SSE)
+HARDWARE_INTRINSIC(SSE_LoadHigh,                                    "LoadHigh",                                     SSE)
+HARDWARE_INTRINSIC(SSE_LoadLow,                                     "LoadLow",                                      SSE)
+HARDWARE_INTRINSIC(SSE_LoadScalar,                                  "LoadScalar",                                   SSE)
+HARDWARE_INTRINSIC(SSE_LoadVector128,                               "LoadVector128",                                SSE)
+HARDWARE_INTRINSIC(SSE_Max,                                         "Max",                                          SSE)
+HARDWARE_INTRINSIC(SSE_MaxScalar,                                   "MaxScalar",                                    SSE)
+HARDWARE_INTRINSIC(SSE_Min,                                         "Min",                                          SSE)
+HARDWARE_INTRINSIC(SSE_MinScalar,                                   "MinScalar",                                    SSE)
+HARDWARE_INTRINSIC(SSE_MoveHighToLow,                               "MoveHighToLow",                                SSE)
+HARDWARE_INTRINSIC(SSE_MoveLowToHigh,                               "MoveLowToHigh",                                SSE)
+HARDWARE_INTRINSIC(SSE_MoveMask,                                    "MoveMask",                                     SSE)
+HARDWARE_INTRINSIC(SSE_MoveScalar,                                  "MoveScalar",                                   SSE)
+HARDWARE_INTRINSIC(SSE_Multiply,                                    "Multiply",                                     SSE)
+HARDWARE_INTRINSIC(SSE_MultiplyScalar,                              "MultiplyScalar",                               SSE)
+HARDWARE_INTRINSIC(SSE_Or,                                          "Or",                                           SSE)
+HARDWARE_INTRINSIC(SSE_Reciprocal,                                  "Reciprocal",                                   SSE)
+HARDWARE_INTRINSIC(SSE_ReciprocalScalar,                            "ReciprocalScalar",                             SSE)
+HARDWARE_INTRINSIC(SSE_ReciprocalSqrt,                              "ReciprocalSqrt",                               SSE)
+HARDWARE_INTRINSIC(SSE_ReciprocalSqrtScalar,                        "ReciprocalSqrtScalar",                         SSE)
+HARDWARE_INTRINSIC(SSE_SetAllVector128,                             "SetAllVector128",                              SSE)
+HARDWARE_INTRINSIC(SSE_SetScalar,                                   "SetScalar",                                    SSE)
+HARDWARE_INTRINSIC(SSE_SetVector128,                                "SetVector128",                                 SSE)
+HARDWARE_INTRINSIC(SSE_SetZeroVector128,                            "SetZeroVector128",                             SSE)
+HARDWARE_INTRINSIC(SSE_Shuffle,                                     "Shuffle",                                      SSE)
+HARDWARE_INTRINSIC(SSE_Sqrt,                                        "Sqrt",                                         SSE)
+HARDWARE_INTRINSIC(SSE_SqrtScalar,                                  "SqrtScalar",                                   SSE)
+HARDWARE_INTRINSIC(SSE_StaticCast,                                  "StaticCast",                                   SSE)
+HARDWARE_INTRINSIC(SSE_Store,                                       "Store",                                        SSE)
+HARDWARE_INTRINSIC(SSE_StoreAligned,                                "StoreAligned",                                 SSE)
+HARDWARE_INTRINSIC(SSE_StoreAlignedNonTemporal,                     "StoreAlignedNonTemporal",                      SSE)
+HARDWARE_INTRINSIC(SSE_StoreHigh,                                   "StoreHigh",                                    SSE)
+HARDWARE_INTRINSIC(SSE_StoreLow,                                    "StoreLow",                                     SSE)
+HARDWARE_INTRINSIC(SSE_StoreScalar,                                 "StoreScalar",                                  SSE)
+HARDWARE_INTRINSIC(SSE_Subtract,                                    "Subtract",                                     SSE)
+HARDWARE_INTRINSIC(SSE_SubtractScalar,                              "SubtractScalar",                               SSE)
+HARDWARE_INTRINSIC(SSE_UnpackHigh,                                  "UnpackHigh",                                   SSE)
+HARDWARE_INTRINSIC(SSE_UnpackLow,                                   "UnpackLow",                                    SSE)
+HARDWARE_INTRINSIC(SSE_Xor,                                         "Xor",                                          SSE)
+
+//  SSE2 Intrinsics
+HARDWARE_INTRINSIC(SSE2_IsSupported,                                "get_IsSupported",                              SSE2)
+HARDWARE_INTRINSIC(SSE2_Add,                                        "Add",                                          SSE2)
+
+//  SSE3 Intrinsics
+HARDWARE_INTRINSIC(SSE3_IsSupported,                                "get_IsSupported",                              SSE3)
+
+//  SSSE3 Intrinsics
+HARDWARE_INTRINSIC(SSSE3_IsSupported,                               "get_IsSupported",                              SSSE3)
+
+//  SSE41 Intrinsics
+HARDWARE_INTRINSIC(SSE41_IsSupported,                               "get_IsSupported",                              SSE41)
+
+//  SSE42 Intrinsics
+HARDWARE_INTRINSIC(SSE42_IsSupported,                               "get_IsSupported",                              SSE42)
+HARDWARE_INTRINSIC(SSE42_Crc32,                                     "Crc32",                                        SSE42)
+
+//  AVX Intrinsics
+HARDWARE_INTRINSIC(AVX_IsSupported,                                 "get_IsSupported",                              AVX)
+HARDWARE_INTRINSIC(AVX_Add,                                         "Add",                                          AVX)
+
+//  AVX2 Intrinsics
+HARDWARE_INTRINSIC(AVX2_IsSupported,                                "get_IsSupported",                              AVX2)
+HARDWARE_INTRINSIC(AVX2_Add,                                        "Add",                                          AVX2)
+
+//  AES Intrinsics
+HARDWARE_INTRINSIC(AES_IsSupported,                                 "get_IsSupported",                              AES)
+
+//  BMI1 Intrinsics
+HARDWARE_INTRINSIC(BMI1_IsSupported,                                "get_IsSupported",                              BMI1)
+
+//  BMI2 Intrinsics
+HARDWARE_INTRINSIC(BMI2_IsSupported,                                "get_IsSupported",                              BMI2)
+
+//  FMA Intrinsics
+HARDWARE_INTRINSIC(FMA_IsSupported,                                 "get_IsSupported",                              FMA)
+
+//  LZCNT Intrinsics
+HARDWARE_INTRINSIC(LZCNT_IsSupported,                               "get_IsSupported",                              LZCNT)
+HARDWARE_INTRINSIC(LZCNT_LeadingZeroCount,                          "LeadingZeroCount",                             LZCNT)
+
+//  PCLMULQDQ Intrinsics
+HARDWARE_INTRINSIC(PCLMULQDQ_IsSupported,                           "get_IsSupported",                              PCLMULQDQ)
+
+//  POPCNT Intrinsics
+HARDWARE_INTRINSIC(POPCNT_IsSupported,                              "get_IsSupported",                              POPCNT)
+HARDWARE_INTRINSIC(POPCNT_PopCount,                                 "PopCount",                                     POPCNT)
 #endif // FEATURE_HW_INTRINSICS
 
 #undef HARDWARE_INTRINSIC