SimdAsHWIntrinsic improvements and cleanup (#80134)
authorTanner Gooding <tagoo@outlook.com>
Fri, 6 Jan 2023 18:58:01 +0000 (10:58 -0800)
committerGitHub <noreply@github.com>
Fri, 6 Jan 2023 18:58:01 +0000 (10:58 -0800)
* Merge common code paths in simdashwintrinsic.cpp

* Fixing a bug in the WithElement node for CreateFromVector

* Ensure simdashwintrinsic paths consistently use the gtNewSimd*Node helpers where one path was already

* Ensure remaining simdashwintrinsic paths use the gtNewSimd*Node helpers

* Consistently use fgMakeMultiUse in the gtNewSimd*Node APIs

* Applying formatting patch

* Ensure isSimdAsHWIntrinsic gets passed through

* Revert "Consistently use fgMakeMultiUse in the gtNewSimd*Node APIs"

This reverts commit edb2ce8aa64c123f9407bd2a2f44c08900c54295.

* Handle SN_op_UnaryNegation for Vector2/3/4 on Mono

* Ensure short, ushort, float, and double don't assert for Vector128_Dot on downlevel hardware

src/coreclr/jit/gentree.cpp
src/coreclr/jit/hwintrinsicxarch.cpp
src/coreclr/jit/simdashwintrinsic.cpp
src/coreclr/jit/simdashwintrinsic.h
src/coreclr/jit/simdashwintrinsiclistarm64.h
src/coreclr/jit/simdashwintrinsiclistxarch.h
src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2.cs
src/libraries/System.Private.CoreLib/src/System/Numerics/Vector3.cs
src/libraries/System.Private.CoreLib/src/System/Numerics/Vector4.cs
src/mono/mono/mini/simd-intrinsics.c

index 25dc0b5..e3d175f 100644 (file)
@@ -20566,8 +20566,7 @@ GenTree* Compiler::gtNewSimdCmpOpAllNode(genTreeOps  op,
                 intrinsic = NI_Vector128_op_Equality;
             }
 
-            op1 = gtNewSimdCmpOpNode(op, simdType, op1, op2, simdBaseJitType, simdSize,
-                                     /* isSimdAsHWIntrinsic */ false);
+            op1 = gtNewSimdCmpOpNode(op, simdType, op1, op2, simdBaseJitType, simdSize, isSimdAsHWIntrinsic);
             op2 = gtNewAllBitsSetConNode(simdType);
 
             if (simdBaseType == TYP_FLOAT)
@@ -20606,8 +20605,7 @@ GenTree* Compiler::gtNewSimdCmpOpAllNode(genTreeOps  op,
                 intrinsic = NI_Vector128_op_Equality;
             }
 
-            op1 = gtNewSimdCmpOpNode(op, simdType, op1, op2, simdBaseJitType, simdSize,
-                                     /* isSimdAsHWIntrinsic */ false);
+            op1 = gtNewSimdCmpOpNode(op, simdType, op1, op2, simdBaseJitType, simdSize, isSimdAsHWIntrinsic);
             op2 = gtNewAllBitsSetConNode(simdType);
 
             if (simdBaseType == TYP_FLOAT)
@@ -20688,8 +20686,7 @@ GenTree* Compiler::gtNewSimdCmpOpAnyNode(genTreeOps  op,
                 intrinsic = NI_Vector128_op_Inequality;
             }
 
-            op1 = gtNewSimdCmpOpNode(op, simdType, op1, op2, simdBaseJitType, simdSize,
-                                     /* isSimdAsHWIntrinsic */ false);
+            op1 = gtNewSimdCmpOpNode(op, simdType, op1, op2, simdBaseJitType, simdSize, isSimdAsHWIntrinsic);
             op2 = gtNewZeroConNode(simdType);
 
             if (simdBaseType == TYP_FLOAT)
@@ -20732,8 +20729,7 @@ GenTree* Compiler::gtNewSimdCmpOpAnyNode(genTreeOps  op,
 
             intrinsic = (simdSize == 8) ? NI_Vector64_op_Inequality : NI_Vector128_op_Inequality;
 
-            op1 = gtNewSimdCmpOpNode(op, simdType, op1, op2, simdBaseJitType, simdSize,
-                                     /* isSimdAsHWIntrinsic */ false);
+            op1 = gtNewSimdCmpOpNode(op, simdType, op1, op2, simdBaseJitType, simdSize, isSimdAsHWIntrinsic);
             op2 = gtNewZeroConNode(simdType);
 
             if (simdBaseType == TYP_FLOAT)
index 03c59de..2f79e46 100644 (file)
@@ -609,6 +609,9 @@ GenTree* Compiler::impBaseIntrinsic(NamedIntrinsic        intrinsic,
         {
             assert(sig->numArgs == 2);
 
+            impSpillSideEffect(true,
+                               verCurrentState.esStackDepth - 2 DEBUGARG("Spilling op1 side effects for HWIntrinsic"));
+
             op2 = impSIMDPopStack(retType);
             op1 = impSIMDPopStack(retType);
 
index 347ae5b..9acdb04 100644 (file)
@@ -313,7 +313,6 @@ GenTree* Compiler::impSimdAsHWIntrinsic(NamedIntrinsic        intrinsic,
     {
         case 0:
         {
-            assert(!SimdAsHWIntrinsicInfo::NeedsOperandsSwapped(intrinsic));
             return gtNewSimdAsHWIntrinsicNode(retType, hwIntrinsic, simdBaseJitType, simdSize);
         }
 
@@ -323,7 +322,6 @@ GenTree* Compiler::impSimdAsHWIntrinsic(NamedIntrinsic        intrinsic,
                                        : JITtype2varType(strip(info.compCompHnd->getArgType(sig, argList, &argClass)));
             op1 = getArgForHWIntrinsic(argType, argClass, isInstanceMethod);
 
-            assert(!SimdAsHWIntrinsicInfo::NeedsOperandsSwapped(intrinsic));
             return gtNewSimdAsHWIntrinsicNode(retType, op1, hwIntrinsic, simdBaseJitType, simdSize);
         }
 
@@ -344,11 +342,6 @@ GenTree* Compiler::impSimdAsHWIntrinsic(NamedIntrinsic        intrinsic,
                                        : JITtype2varType(strip(info.compCompHnd->getArgType(sig, argList, &argClass)));
             op1 = getArgForHWIntrinsic(argType, argClass, isInstanceMethod);
 
-            if (SimdAsHWIntrinsicInfo::NeedsOperandsSwapped(intrinsic))
-            {
-                std::swap(op1, op2);
-            }
-
             return gtNewSimdAsHWIntrinsicNode(retType, op1, op2, hwIntrinsic, simdBaseJitType, simdSize);
         }
     }
@@ -553,13 +546,18 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
 #if defined(TARGET_XARCH)
         case NI_VectorT128_Dot:
         {
-            if (!compOpportunisticallyDependsOn(InstructionSet_SSE41))
+            if ((simdBaseType == TYP_INT) || (simdBaseType == TYP_UINT))
             {
-                // We need to exit early if this is Vector<T>.Dot for int or uint and SSE41 is not supported
-                // The other types should be handled via the table driven paths
-
-                assert((simdBaseType == TYP_INT) || (simdBaseType == TYP_UINT));
-                return nullptr;
+                if (!compExactlyDependsOn(InstructionSet_SSE41))
+                {
+                    // TODO-XARCH-CQ: We can support 32-bit integers if we updating multiplication
+                    // to be lowered rather than imported as the relevant operations.
+                    return nullptr;
+                }
+            }
+            else
+            {
+                assert(varTypeIsShort(simdBaseType) || varTypeIsFloating(simdBaseType));
             }
             break;
         }
@@ -700,6 +698,18 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
         }
 #endif
 
+#if defined(TARGET_XARCH)
+        case NI_VectorT128_Floor:
+        case NI_VectorT128_Ceiling:
+        {
+            if (!compExactlyDependsOn(InstructionSet_SSE41))
+            {
+                return nullptr;
+            }
+            break;
+        }
+#endif // TARGET_XARCH
+
         default:
         {
             // Most intrinsics have some path that works even if only SSE2/AdvSimd is available
@@ -718,15 +728,18 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
 
             switch (intrinsic)
             {
-#if defined(TARGET_XARCH)
                 case NI_VectorT128_get_AllBitsSet:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_get_AllBitsSet:
+#endif // TARGET_XARCH
                 {
                     return gtNewAllBitsSetConNode(retType);
                 }
 
                 case NI_VectorT128_get_Count:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_get_Count:
+#endif // TARGET_XARCH
                 {
                     GenTreeIntCon* countNode = gtNewIconNode(getSIMDVectorLength(simdSize, simdBaseType), TYP_INT);
                     countNode->gtFlags |= GTF_ICON_SIMD_COUNT;
@@ -737,7 +750,9 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                 case NI_Vector3_get_One:
                 case NI_Vector4_get_One:
                 case NI_VectorT128_get_One:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_get_One:
+#endif // TARGET_XARCH
                 {
                     return gtNewOneConNode(retType, simdBaseType);
                 }
@@ -746,41 +761,12 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                 case NI_Vector3_get_Zero:
                 case NI_Vector4_get_Zero:
                 case NI_VectorT128_get_Zero:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_get_Zero:
+#endif // TARGET_XARCH
                 {
                     return gtNewZeroConNode(retType);
                 }
-#elif defined(TARGET_ARM64)
-                case NI_VectorT128_get_AllBitsSet:
-                {
-                    return gtNewAllBitsSetConNode(retType);
-                }
-
-                case NI_VectorT128_get_Count:
-                {
-                    GenTreeIntCon* countNode = gtNewIconNode(getSIMDVectorLength(simdSize, simdBaseType), TYP_INT);
-                    countNode->gtFlags |= GTF_ICON_SIMD_COUNT;
-                    return countNode;
-                }
-
-                case NI_Vector2_get_One:
-                case NI_Vector3_get_One:
-                case NI_Vector4_get_One:
-                case NI_VectorT128_get_One:
-                {
-                    return gtNewOneConNode(retType, simdBaseType);
-                }
-
-                case NI_Vector2_get_Zero:
-                case NI_Vector3_get_Zero:
-                case NI_Vector4_get_Zero:
-                case NI_VectorT128_get_Zero:
-                {
-                    return gtNewZeroConNode(retType);
-                }
-#else
-#error Unsupported platform
-#endif // !TARGET_XARCH && !TARGET_ARM64
 
                 default:
                 {
@@ -819,20 +805,112 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                                        : JITtype2varType(strip(info.compCompHnd->getArgType(sig, argList, &argClass)));
             op1 = getArgForHWIntrinsic(argType, argClass, isInstanceMethod);
 
-            assert(!SimdAsHWIntrinsicInfo::NeedsOperandsSwapped(intrinsic));
-
             switch (intrinsic)
             {
-#if defined(TARGET_XARCH)
                 case NI_Vector2_Abs:
                 case NI_Vector3_Abs:
                 case NI_Vector4_Abs:
                 case NI_VectorT128_Abs:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_Abs:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdAbsNode(retType, op1, simdBaseJitType, simdSize, /* isSimdAsHWIntrinsic */ true);
                 }
 
+                case NI_VectorT128_Ceiling:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Ceiling:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdCeilNode(retType, op1, simdBaseJitType, simdSize, /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_VectorT128_Floor:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Floor:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdFloorNode(retType, op1, simdBaseJitType, simdSize, /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_Vector2_op_UnaryNegation:
+                case NI_Vector3_op_UnaryNegation:
+                case NI_Vector4_op_UnaryNegation:
+                case NI_VectorT128_Negate:
+                case NI_VectorT128_op_UnaryNegation:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Negate:
+                case NI_VectorT256_op_UnaryNegation:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdUnOpNode(GT_NEG, retType, op1, simdBaseJitType, simdSize,
+                                             /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_VectorT128_OnesComplement:
+                case NI_VectorT128_op_OnesComplement:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_OnesComplement:
+                case NI_VectorT256_op_OnesComplement:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdUnOpNode(GT_NOT, retType, op1, simdBaseJitType, simdSize,
+                                             /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_Vector2_Sqrt:
+                case NI_Vector3_Sqrt:
+                case NI_Vector4_Sqrt:
+                case NI_VectorT128_Sqrt:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Sqrt:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdSqrtNode(retType, op1, simdBaseJitType, simdSize, /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_VectorT128_Sum:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Sum:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdSumNode(retType, op1, simdBaseJitType, simdSize, /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_VectorT128_ToScalar:
+                {
+                    return gtNewSimdHWIntrinsicNode(retType, op1, NI_Vector128_ToScalar, simdBaseJitType, simdSize,
+                                                    /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_VectorT128_op_UnaryPlus:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_op_UnaryPlus:
+#endif // TARGET_XARCH
+                {
+                    return op1;
+                }
+
+                case NI_VectorT128_WidenLower:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_WidenLower:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdWidenLowerNode(retType, op1, simdBaseJitType, simdSize,
+                                                   /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_VectorT128_WidenUpper:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_WidenUpper:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdWidenUpperNode(retType, op1, simdBaseJitType, simdSize,
+                                                   /* isSimdAsHWIntrinsic */ true);
+                }
+
+#if defined(TARGET_XARCH)
                 case NI_VectorT128_ConvertToInt32:
                 case NI_VectorT256_ConvertToInt32:
                 {
@@ -983,67 +1061,12 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                                                     /* isSimdAsHWIntrinsic */ true);
                 }
 
-                case NI_VectorT128_Negate:
-                case NI_VectorT256_Negate:
-                case NI_VectorT128_op_UnaryNegation:
-                case NI_VectorT256_op_UnaryNegation:
-                {
-                    return gtNewSimdUnOpNode(GT_NEG, retType, op1, simdBaseJitType, simdSize,
-                                             /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_OnesComplement:
-                case NI_VectorT256_OnesComplement:
-                case NI_VectorT128_op_OnesComplement:
-                case NI_VectorT256_op_OnesComplement:
-                {
-                    return gtNewSimdUnOpNode(GT_NOT, retType, op1, simdBaseJitType, simdSize,
-                                             /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_op_UnaryPlus:
-                case NI_VectorT256_op_UnaryPlus:
-                {
-                    return op1;
-                }
-
-                case NI_VectorT128_Sum:
-                case NI_VectorT256_Sum:
-                {
-                    return gtNewSimdSumNode(retType, op1, simdBaseJitType, simdSize, /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_ToScalar:
-                {
-                    return gtNewSimdHWIntrinsicNode(retType, op1, NI_Vector128_ToScalar, simdBaseJitType, simdSize,
-                                                    /* isSimdAsHWIntrinsic */ true);
-                }
-
                 case NI_VectorT256_ToScalar:
                 {
                     return gtNewSimdHWIntrinsicNode(retType, op1, NI_Vector256_ToScalar, simdBaseJitType, simdSize,
                                                     /* isSimdAsHWIntrinsic */ true);
                 }
-
-                case NI_VectorT128_WidenLower:
-                case NI_VectorT256_WidenLower:
-                {
-                    return gtNewSimdWidenLowerNode(retType, op1, simdBaseJitType, simdSize,
-                                                   /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_WidenUpper:
-                case NI_VectorT256_WidenUpper:
-                {
-                    return gtNewSimdWidenUpperNode(retType, op1, simdBaseJitType, simdSize,
-                                                   /* isSimdAsHWIntrinsic */ true);
-                }
 #elif defined(TARGET_ARM64)
-                case NI_VectorT128_Abs:
-                {
-                    return gtNewSimdAbsNode(retType, op1, simdBaseJitType, simdSize, /* isSimdAsHWIntrinsic */ true);
-                }
-
                 case NI_VectorT128_ConvertToDouble:
                 {
                     assert((simdBaseType == TYP_LONG) || (simdBaseType == TYP_ULONG));
@@ -1125,48 +1148,6 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                     return gtNewSimdHWIntrinsicNode(retType, op1, NI_AdvSimd_LoadVector128, simdBaseJitType, simdSize,
                                                     /* isSimdAsHWIntrinsic */ true);
                 }
-
-                case NI_VectorT128_Negate:
-                case NI_VectorT128_op_UnaryNegation:
-                {
-                    return gtNewSimdUnOpNode(GT_NEG, retType, op1, simdBaseJitType, simdSize,
-                                             /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_OnesComplement:
-                case NI_VectorT128_op_OnesComplement:
-                {
-                    return gtNewSimdUnOpNode(GT_NOT, retType, op1, simdBaseJitType, simdSize,
-                                             /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_op_UnaryPlus:
-                {
-                    return op1;
-                }
-
-                case NI_VectorT128_Sum:
-                {
-                    return gtNewSimdSumNode(retType, op1, simdBaseJitType, simdSize, /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_ToScalar:
-                {
-                    return gtNewSimdHWIntrinsicNode(retType, op1, NI_Vector128_ToScalar, simdBaseJitType, simdSize,
-                                                    /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_WidenLower:
-                {
-                    return gtNewSimdWidenLowerNode(retType, op1, simdBaseJitType, simdSize,
-                                                   /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_WidenUpper:
-                {
-                    return gtNewSimdWidenUpperNode(retType, op1, simdBaseJitType, simdSize,
-                                                   /* isSimdAsHWIntrinsic */ true);
-                }
 #else
 #error Unsupported platform
 #endif // !TARGET_XARCH && !TARGET_ARM64
@@ -1209,280 +1190,403 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                                            newobjThis);
             }
 
-            assert(!SimdAsHWIntrinsicInfo::NeedsOperandsSwapped(intrinsic));
-
             switch (intrinsic)
             {
+                case NI_Vector2_op_Addition:
+                case NI_Vector3_op_Addition:
+                case NI_Vector4_op_Addition:
+                case NI_VectorT128_Add:
+                case NI_VectorT128_op_Addition:
 #if defined(TARGET_XARCH)
-                case NI_Vector2_CreateBroadcast:
-                case NI_Vector3_CreateBroadcast:
-                case NI_Vector4_CreateBroadcast:
-                case NI_VectorT128_CreateBroadcast:
-                case NI_VectorT256_CreateBroadcast:
+                case NI_VectorT256_Add:
+                case NI_VectorT256_op_Addition:
+#endif // TARGET_XARCH
                 {
-                    assert(retType == TYP_VOID);
-
-                    copyBlkDst = op1;
-                    copyBlkSrc = gtNewSimdCreateBroadcastNode(simdType, op2, simdBaseJitType, simdSize,
-                                                              /* isSimdAsHWIntrinsic */ true);
-                    break;
+                    return gtNewSimdBinOpNode(GT_ADD, retType, op1, op2, simdBaseJitType, simdSize,
+                                              /* isSimdAsHWIntrinsic */ true);
                 }
 
-                case NI_VectorT128_Divide:
-                case NI_VectorT256_Divide:
-                case NI_VectorT128_op_Division:
+                case NI_VectorT128_AndNot:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_AndNot:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdBinOpNode(GT_AND_NOT, retType, op1, op2, simdBaseJitType, simdSize,
+                                              /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_VectorT128_BitwiseAnd:
+                case NI_VectorT128_op_BitwiseAnd:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_BitwiseAnd:
+                case NI_VectorT256_op_BitwiseAnd:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdBinOpNode(GT_AND, retType, op1, op2, simdBaseJitType, simdSize,
+                                              /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_VectorT128_BitwiseOr:
+                case NI_VectorT128_op_BitwiseOr:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_BitwiseOr:
+                case NI_VectorT256_op_BitwiseOr:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdBinOpNode(GT_OR, retType, op1, op2, simdBaseJitType, simdSize,
+                                              /* isSimdAsHWIntrinsic */ true);
+                }
+
+                case NI_Vector2_CreateBroadcast:
+                case NI_Vector3_CreateBroadcast:
+                case NI_Vector4_CreateBroadcast:
+                case NI_VectorT128_CreateBroadcast:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_CreateBroadcast:
+#endif // TARGET_XARCH
+                {
+                    assert(retType == TYP_VOID);
+
+                    copyBlkDst = op1;
+                    copyBlkSrc = gtNewSimdCreateBroadcastNode(simdType, op2, simdBaseJitType, simdSize,
+                                                              /* isSimdAsHWIntrinsic */ true);
+                    break;
+                }
+
+                case NI_Vector2_op_Division:
+                case NI_Vector3_op_Division:
+                case NI_Vector4_op_Division:
+                case NI_VectorT128_Divide:
+                case NI_VectorT128_op_Division:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Divide:
                 case NI_VectorT256_op_Division:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdBinOpNode(GT_DIV, retType, op1, op2, simdBaseJitType, simdSize,
                                               /* isSimdAsHWIntrinsic */ true);
                 }
 
+                case NI_Vector2_Dot:
+                case NI_Vector3_Dot:
+                case NI_Vector4_Dot:
                 case NI_VectorT128_Dot:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Dot:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdDotProdNode(retType, op1, op2, simdBaseJitType, simdSize,
                                                 /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_Equals:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Equals:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpNode(GT_EQ, retType, op1, op2, simdBaseJitType, simdSize,
                                               /* isSimdAsHWIntrinsic */ true);
                 }
 
+                case NI_Vector2_op_Equality:
+                case NI_Vector3_op_Equality:
+                case NI_Vector4_op_Equality:
                 case NI_VectorT128_EqualsAll:
-                case NI_VectorT256_EqualsAll:
                 case NI_VectorT128_op_Equality:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_EqualsAll:
                 case NI_VectorT256_op_Equality:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpAllNode(GT_EQ, retType, op1, op2, simdBaseJitType, simdSize,
                                                  /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_EqualsAny:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_EqualsAny:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpAnyNode(GT_EQ, retType, op1, op2, simdBaseJitType, simdSize,
                                                  /* isSimdAsHWIntrinsic */ true);
                 }
 
+                case NI_VectorT128_Xor:
+                case NI_VectorT128_op_ExclusiveOr:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Xor:
+                case NI_VectorT256_op_ExclusiveOr:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdBinOpNode(GT_XOR, retType, op1, op2, simdBaseJitType, simdSize,
+                                              /* isSimdAsHWIntrinsic */ true);
+                }
+
                 case NI_VectorT128_get_Item:
-                case NI_VectorT256_get_Item:
                 case NI_VectorT128_GetElement:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_get_Item:
                 case NI_VectorT256_GetElement:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdGetElementNode(retType, op1, op2, simdBaseJitType, simdSize,
                                                    /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_GreaterThan:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_GreaterThan:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpNode(GT_GT, retType, op1, op2, simdBaseJitType, simdSize,
                                               /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_GreaterThanAll:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_GreaterThanAll:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpAllNode(GT_GT, retType, op1, op2, simdBaseJitType, simdSize,
                                                  /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_GreaterThanAny:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_GreaterThanAny:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpAnyNode(GT_GT, retType, op1, op2, simdBaseJitType, simdSize,
                                                  /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_GreaterThanOrEqual:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_GreaterThanOrEqual:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpNode(GT_GE, retType, op1, op2, simdBaseJitType, simdSize,
                                               /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_GreaterThanOrEqualAll:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_GreaterThanOrEqualAll:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpAllNode(GT_GE, retType, op1, op2, simdBaseJitType, simdSize,
                                                  /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_GreaterThanOrEqualAny:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_GreaterThanOrEqualAny:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpAnyNode(GT_GE, retType, op1, op2, simdBaseJitType, simdSize,
                                                  /* isSimdAsHWIntrinsic */ true);
                 }
 
+                case NI_Vector2_op_Inequality:
+                case NI_Vector3_op_Inequality:
+                case NI_Vector4_op_Inequality:
+                case NI_VectorT128_op_Inequality:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_op_Inequality:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdCmpOpAnyNode(GT_NE, retType, op1, op2, simdBaseJitType, simdSize,
+                                                 /* isSimdAsHWIntrinsic */ true);
+                }
+
                 case NI_VectorT128_LessThan:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_LessThan:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpNode(GT_LT, retType, op1, op2, simdBaseJitType, simdSize,
                                               /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_LessThanAll:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_LessThanAll:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpAllNode(GT_LT, retType, op1, op2, simdBaseJitType, simdSize,
                                                  /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_LessThanAny:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_LessThanAny:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpAnyNode(GT_LT, retType, op1, op2, simdBaseJitType, simdSize,
                                                  /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_LessThanOrEqual:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_LessThanOrEqual:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpNode(GT_LE, retType, op1, op2, simdBaseJitType, simdSize,
                                               /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_LessThanOrEqualAll:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_LessThanOrEqualAll:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpAllNode(GT_LE, retType, op1, op2, simdBaseJitType, simdSize,
                                                  /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_LessThanOrEqualAny:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_LessThanOrEqualAny:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCmpOpAnyNode(GT_LE, retType, op1, op2, simdBaseJitType, simdSize,
                                                  /* isSimdAsHWIntrinsic */ true);
                 }
 
-                case NI_VectorT128_LoadUnsafeIndex:
-                case NI_VectorT256_LoadUnsafeIndex:
-                {
-                    GenTree* tmp;
-
-                    if (op1->OperIs(GT_CAST))
-                    {
-                        // Although the API specifies a pointer, if what we have is a BYREF, that's what
-                        // we really want, so throw away the cast.
-                        if (op1->gtGetOp1()->TypeGet() == TYP_BYREF)
-                        {
-                            op1 = op1->gtGetOp1();
-                        }
-                    }
-
-                    tmp = gtNewIconNode(genTypeSize(simdBaseType), op2->TypeGet());
-                    op2 = gtNewOperNode(GT_MUL, op2->TypeGet(), op2, tmp);
-                    op1 = gtNewOperNode(GT_ADD, op1->TypeGet(), op1, op2);
-
-                    NamedIntrinsic loadIntrinsic = NI_Illegal;
-
-                    if (simdSize == 32)
-                    {
-                        loadIntrinsic = NI_AVX_LoadVector256;
-                    }
-                    else if (simdBaseType != TYP_FLOAT)
-                    {
-                        loadIntrinsic = NI_SSE2_LoadVector128;
-                    }
-                    else
-                    {
-                        loadIntrinsic = NI_SSE_LoadVector128;
-                    }
-
-                    return gtNewSimdHWIntrinsicNode(retType, op1, loadIntrinsic, simdBaseJitType, simdSize,
-                                                    /* isSimdAsHWIntrinsic */ true);
-                }
-
+                case NI_Vector2_Max:
+                case NI_Vector3_Max:
+                case NI_Vector4_Max:
                 case NI_VectorT128_Max:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_Max:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdMaxNode(retType, op1, op2, simdBaseJitType, simdSize,
                                             /* isSimdAsHWIntrinsic */ true);
                 }
 
+                case NI_Vector2_Min:
+                case NI_Vector3_Min:
+                case NI_Vector4_Min:
                 case NI_VectorT128_Min:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_Min:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdMinNode(retType, op1, op2, simdBaseJitType, simdSize,
                                             /* isSimdAsHWIntrinsic */ true);
                 }
 
+                case NI_Vector2_op_Multiply:
+                case NI_Vector3_op_Multiply:
+                case NI_Vector4_op_Multiply:
                 case NI_VectorT128_Multiply:
-                case NI_VectorT256_Multiply:
                 case NI_VectorT128_op_Multiply:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Multiply:
                 case NI_VectorT256_op_Multiply:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdBinOpNode(GT_MUL, retType, op1, op2, simdBaseJitType, simdSize,
                                               /* isSimdAsHWIntrinsic */ true);
                 }
 
                 case NI_VectorT128_Narrow:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_Narrow:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdNarrowNode(retType, op1, op2, simdBaseJitType, simdSize,
                                                /* isSimdAsHWIntrinsic */ true);
                 }
 
-                case NI_Vector2_op_Division:
-                case NI_Vector3_op_Division:
-                {
-                    // Vector2/3 div: since the top-most elements will be zero, we end up
-                    // performing 0/0 which is a NAN. Therefore, post division we need to set the
-                    // top-most elements to zero. This is achieved by left logical shift followed
-                    // by right logical shift of the result.
-
-                    // These are 16 byte operations, so we subtract from 16 bytes, not the vector register length.
-                    unsigned shiftCount = 16 - simdSize;
-                    assert((shiftCount > 0) && (shiftCount <= 16));
-
-                    // retNode = Sse.Divide(op1, op2);
-                    GenTree* retNode =
-                        gtNewSimdAsHWIntrinsicNode(retType, op1, op2, NI_SSE_Divide, simdBaseJitType, simdSize);
-
-                    // retNode = Sse.ShiftLeftLogical128BitLane(retNode.AsInt32(), shiftCount).AsSingle()
-                    retNode =
-                        gtNewSimdAsHWIntrinsicNode(retType, retNode, gtNewIconNode(shiftCount, TYP_INT),
-                                                   NI_SSE2_ShiftLeftLogical128BitLane, CORINFO_TYPE_INT, simdSize);
-
-                    // retNode = Sse.ShiftRightLogical128BitLane(retNode.AsInt32(), shiftCount).AsSingle()
-                    retNode =
-                        gtNewSimdAsHWIntrinsicNode(retType, retNode, gtNewIconNode(shiftCount, TYP_INT),
-                                                   NI_SSE2_ShiftRightLogical128BitLane, CORINFO_TYPE_INT, simdSize);
-
-                    return retNode;
-                }
-
-                case NI_VectorT128_op_LeftShift:
-                case NI_VectorT256_op_LeftShift:
                 case NI_VectorT128_ShiftLeft:
+                case NI_VectorT128_op_LeftShift:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_ShiftLeft:
+                case NI_VectorT256_op_LeftShift:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdBinOpNode(GT_LSH, retType, op1, op2, simdBaseJitType, simdSize,
                                               /* isSimdAsHWIntrinsic */ true);
                 }
 
-                case NI_VectorT128_op_RightShift:
-                case NI_VectorT256_op_RightShift:
                 case NI_VectorT128_ShiftRightArithmetic:
+                case NI_VectorT128_op_RightShift:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_ShiftRightArithmetic:
+                case NI_VectorT256_op_RightShift:
+#endif // TARGET_XARCH
                 {
                     genTreeOps op = varTypeIsUnsigned(simdBaseType) ? GT_RSZ : GT_RSH;
                     return gtNewSimdBinOpNode(op, retType, op1, op2, simdBaseJitType, simdSize,
                                               /* isSimdAsHWIntrinsic */ true);
                 }
 
-                case NI_VectorT128_op_UnsignedRightShift:
-                case NI_VectorT256_op_UnsignedRightShift:
                 case NI_VectorT128_ShiftRightLogical:
+                case NI_VectorT128_op_UnsignedRightShift:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_ShiftRightLogical:
+                case NI_VectorT256_op_UnsignedRightShift:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdBinOpNode(GT_RSZ, retType, op1, op2, simdBaseJitType, simdSize,
                                               /* isSimdAsHWIntrinsic */ true);
                 }
 
+                case NI_Vector2_op_Subtraction:
+                case NI_Vector3_op_Subtraction:
+                case NI_Vector4_op_Subtraction:
+                case NI_VectorT128_Subtract:
+                case NI_VectorT128_op_Subtraction:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_Subtract:
+                case NI_VectorT256_op_Subtraction:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdBinOpNode(GT_SUB, retType, op1, op2, simdBaseJitType, simdSize,
+                                              /* isSimdAsHWIntrinsic */ true);
+                }
+
+#if defined(TARGET_XARCH)
+                case NI_VectorT128_LoadUnsafeIndex:
+                case NI_VectorT256_LoadUnsafeIndex:
+                {
+                    GenTree* tmp;
+
+                    if (op1->OperIs(GT_CAST))
+                    {
+                        // Although the API specifies a pointer, if what we have is a BYREF, that's what
+                        // we really want, so throw away the cast.
+                        if (op1->gtGetOp1()->TypeGet() == TYP_BYREF)
+                        {
+                            op1 = op1->gtGetOp1();
+                        }
+                    }
+
+                    tmp = gtNewIconNode(genTypeSize(simdBaseType), op2->TypeGet());
+                    op2 = gtNewOperNode(GT_MUL, op2->TypeGet(), op2, tmp);
+                    op1 = gtNewOperNode(GT_ADD, op1->TypeGet(), op1, op2);
+
+                    NamedIntrinsic loadIntrinsic = NI_Illegal;
+
+                    if (simdSize == 32)
+                    {
+                        loadIntrinsic = NI_AVX_LoadVector256;
+                    }
+                    else if (simdBaseType != TYP_FLOAT)
+                    {
+                        loadIntrinsic = NI_SSE2_LoadVector128;
+                    }
+                    else
+                    {
+                        loadIntrinsic = NI_SSE_LoadVector128;
+                    }
+
+                    return gtNewSimdHWIntrinsicNode(retType, op1, loadIntrinsic, simdBaseJitType, simdSize,
+                                                    /* isSimdAsHWIntrinsic */ true);
+                }
+
                 case NI_VectorT128_Store:
                 case NI_VectorT256_Store:
                 case NI_VectorT128_StoreUnsafe:
@@ -1551,94 +1655,6 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                                                     /* isSimdAsHWIntrinsic */ true);
                 }
 #elif defined(TARGET_ARM64)
-                case NI_Vector2_CreateBroadcast:
-                case NI_Vector3_CreateBroadcast:
-                case NI_Vector4_CreateBroadcast:
-                case NI_VectorT128_CreateBroadcast:
-                {
-                    assert(retType == TYP_VOID);
-
-                    copyBlkDst = op1;
-                    copyBlkSrc = gtNewSimdCreateBroadcastNode(simdType, op2, simdBaseJitType, simdSize,
-                                                              /* isSimdAsHWIntrinsic */ true);
-                    break;
-                }
-
-                case NI_VectorT128_Divide:
-                case NI_VectorT128_op_Division:
-                {
-                    return gtNewSimdBinOpNode(GT_DIV, retType, op1, op2, simdBaseJitType, simdSize,
-                                              /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_EqualsAll:
-                case NI_VectorT128_op_Equality:
-                {
-                    return gtNewSimdCmpOpAllNode(GT_EQ, retType, op1, op2, simdBaseJitType, simdSize,
-                                                 /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_EqualsAny:
-                {
-                    return gtNewSimdCmpOpAnyNode(GT_EQ, retType, op1, op2, simdBaseJitType, simdSize,
-                                                 /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_get_Item:
-                case NI_VectorT128_GetElement:
-                {
-                    return gtNewSimdGetElementNode(retType, op1, op2, simdBaseJitType, simdSize,
-                                                   /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_GreaterThanAll:
-                {
-                    return gtNewSimdCmpOpAllNode(GT_GT, retType, op1, op2, simdBaseJitType, simdSize,
-                                                 /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_GreaterThanAny:
-                {
-                    return gtNewSimdCmpOpAnyNode(GT_GT, retType, op1, op2, simdBaseJitType, simdSize,
-                                                 /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_GreaterThanOrEqualAll:
-                {
-                    return gtNewSimdCmpOpAllNode(GT_GE, retType, op1, op2, simdBaseJitType, simdSize,
-                                                 /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_GreaterThanOrEqualAny:
-                {
-                    return gtNewSimdCmpOpAnyNode(GT_GE, retType, op1, op2, simdBaseJitType, simdSize,
-                                                 /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_LessThanAll:
-                {
-                    return gtNewSimdCmpOpAllNode(GT_LT, retType, op1, op2, simdBaseJitType, simdSize,
-                                                 /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_LessThanAny:
-                {
-                    return gtNewSimdCmpOpAnyNode(GT_LT, retType, op1, op2, simdBaseJitType, simdSize,
-                                                 /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_LessThanOrEqualAll:
-                {
-                    return gtNewSimdCmpOpAllNode(GT_LE, retType, op1, op2, simdBaseJitType, simdSize,
-                                                 /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_LessThanOrEqualAny:
-                {
-                    return gtNewSimdCmpOpAnyNode(GT_LE, retType, op1, op2, simdBaseJitType, simdSize,
-                                                 /* isSimdAsHWIntrinsic */ true);
-                }
-
                 case NI_VectorT128_LoadUnsafeIndex:
                 {
                     GenTree* tmp;
@@ -1661,53 +1677,6 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                                                     /* isSimdAsHWIntrinsic */ true);
                 }
 
-                case NI_VectorT128_Max:
-                {
-                    return gtNewSimdMaxNode(retType, op1, op2, simdBaseJitType, simdSize,
-                                            /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_Min:
-                {
-                    return gtNewSimdMinNode(retType, op1, op2, simdBaseJitType, simdSize,
-                                            /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_Multiply:
-                case NI_VectorT128_op_Multiply:
-                {
-                    return gtNewSimdBinOpNode(GT_MUL, retType, op1, op2, simdBaseJitType, simdSize,
-                                              /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_Narrow:
-                {
-                    return gtNewSimdNarrowNode(retType, op1, op2, simdBaseJitType, simdSize,
-                                               /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_op_LeftShift:
-                case NI_VectorT128_ShiftLeft:
-                {
-                    return gtNewSimdBinOpNode(GT_LSH, retType, op1, op2, simdBaseJitType, simdSize,
-                                              /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_op_RightShift:
-                case NI_VectorT128_ShiftRightArithmetic:
-                {
-                    genTreeOps op = varTypeIsUnsigned(simdBaseType) ? GT_RSZ : GT_RSH;
-                    return gtNewSimdBinOpNode(op, retType, op1, op2, simdBaseJitType, simdSize,
-                                              /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_op_UnsignedRightShift:
-                case NI_VectorT128_ShiftRightLogical:
-                {
-                    return gtNewSimdBinOpNode(GT_RSZ, retType, op1, op2, simdBaseJitType, simdSize,
-                                              /* isSimdAsHWIntrinsic */ true);
-                }
-
                 case NI_VectorT128_Store:
                 case NI_VectorT128_StoreUnsafe:
                 case NI_VectorT128_StoreAligned:
@@ -1781,80 +1750,17 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                                            newobjThis);
             }
 
-            assert(!SimdAsHWIntrinsicInfo::NeedsOperandsSwapped(intrinsic));
-
             switch (intrinsic)
             {
-#if defined(TARGET_XARCH)
                 case NI_VectorT128_ConditionalSelect:
+#if defined(TARGET_XARCH)
                 case NI_VectorT256_ConditionalSelect:
+#endif // TARGET_XARCH
                 {
                     return gtNewSimdCndSelNode(retType, op1, op2, op3, simdBaseJitType, simdSize,
                                                /* isSimdAsHWIntrinsic */ true);
                 }
 
-                case NI_VectorT128_StoreUnsafeIndex:
-                case NI_VectorT256_StoreUnsafeIndex:
-                {
-                    GenTree* tmp;
-
-                    tmp = gtNewIconNode(genTypeSize(simdBaseType), op3->TypeGet());
-                    op3 = gtNewOperNode(GT_MUL, op3->TypeGet(), op3, tmp);
-                    op2 = gtNewOperNode(GT_ADD, op2->TypeGet(), op2, op3);
-
-                    NamedIntrinsic storeIntrinsic = NI_Illegal;
-
-                    if (simdSize == 32)
-                    {
-                        storeIntrinsic = NI_AVX_Store;
-                    }
-                    else if (simdBaseType != TYP_FLOAT)
-                    {
-                        storeIntrinsic = NI_SSE2_Store;
-                    }
-                    else
-                    {
-                        storeIntrinsic = NI_SSE_Store;
-                    }
-
-                    return gtNewSimdHWIntrinsicNode(retType, op2, op1, storeIntrinsic, simdBaseJitType, simdSize,
-                                                    /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_WithElement:
-                case NI_VectorT256_WithElement:
-                {
-                    return gtNewSimdWithElementNode(retType, op1, op2, op3, simdBaseJitType, simdSize,
-                                                    /* isSimdAsHWIntrinsic */ true);
-                }
-#elif defined(TARGET_ARM64)
-                case NI_VectorT128_ConditionalSelect:
-                {
-                    return gtNewSimdCndSelNode(retType, op1, op2, op3, simdBaseJitType, simdSize,
-                                               /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_StoreUnsafeIndex:
-                {
-                    GenTree* tmp;
-
-                    tmp = gtNewIconNode(genTypeSize(simdBaseType), op3->TypeGet());
-                    op3 = gtNewOperNode(GT_MUL, op3->TypeGet(), op3, tmp);
-                    op2 = gtNewOperNode(GT_ADD, op2->TypeGet(), op2, op3);
-
-                    return gtNewSimdHWIntrinsicNode(retType, op2, op1, NI_AdvSimd_Store, simdBaseJitType, simdSize,
-                                                    /* isSimdAsHWIntrinsic */ true);
-                }
-
-                case NI_VectorT128_WithElement:
-                {
-                    return gtNewSimdWithElementNode(retType, op1, op2, op3, simdBaseJitType, simdSize,
-                                                    /* isSimdAsHWIntrinsic */ true);
-                }
-#else
-#error Unsupported platform
-#endif // !TARGET_XARCH && !TARGET_ARM64
-
                 case NI_Vector2_Create:
                 {
                     assert(retType == TYP_VOID);
@@ -1930,7 +1836,7 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                     else
                     {
                         GenTree* idx = gtNewIconNode((simdSize == 12) ? 2 : 3, TYP_INT);
-                        copyBlkSrc   = gtNewSimdWithElementNode(simdType, op2, op3, idx, simdBaseJitType, simdSize,
+                        copyBlkSrc   = gtNewSimdWithElementNode(simdType, op2, idx, op3, simdBaseJitType, simdSize,
                                                               /* isSimdAsHWIntrinsic */ true);
                     }
 
@@ -1938,6 +1844,58 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                     break;
                 }
 
+                case NI_VectorT128_WithElement:
+#if defined(TARGET_XARCH)
+                case NI_VectorT256_WithElement:
+#endif // TARGET_XARCH
+                {
+                    return gtNewSimdWithElementNode(retType, op1, op2, op3, simdBaseJitType, simdSize,
+                                                    /* isSimdAsHWIntrinsic */ true);
+                }
+
+#if defined(TARGET_XARCH)
+                case NI_VectorT128_StoreUnsafeIndex:
+                case NI_VectorT256_StoreUnsafeIndex:
+                {
+                    GenTree* tmp;
+
+                    tmp = gtNewIconNode(genTypeSize(simdBaseType), op3->TypeGet());
+                    op3 = gtNewOperNode(GT_MUL, op3->TypeGet(), op3, tmp);
+                    op2 = gtNewOperNode(GT_ADD, op2->TypeGet(), op2, op3);
+
+                    NamedIntrinsic storeIntrinsic = NI_Illegal;
+
+                    if (simdSize == 32)
+                    {
+                        storeIntrinsic = NI_AVX_Store;
+                    }
+                    else if (simdBaseType != TYP_FLOAT)
+                    {
+                        storeIntrinsic = NI_SSE2_Store;
+                    }
+                    else
+                    {
+                        storeIntrinsic = NI_SSE_Store;
+                    }
+
+                    return gtNewSimdHWIntrinsicNode(retType, op2, op1, storeIntrinsic, simdBaseJitType, simdSize,
+                                                    /* isSimdAsHWIntrinsic */ true);
+                }
+#elif defined(TARGET_ARM64)
+                case NI_VectorT128_StoreUnsafeIndex:
+                {
+                    GenTree* tmp;
+
+                    tmp = gtNewIconNode(genTypeSize(simdBaseType), op3->TypeGet());
+                    op3 = gtNewOperNode(GT_MUL, op3->TypeGet(), op3, tmp);
+                    op2 = gtNewOperNode(GT_ADD, op2->TypeGet(), op2, op3);
+
+                    return gtNewSimdHWIntrinsicNode(retType, op2, op1, NI_AdvSimd_Store, simdBaseJitType, simdSize,
+                                                    /* isSimdAsHWIntrinsic */ true);
+                }
+#else
+#error Unsupported platform
+#endif // !TARGET_XARCH && !TARGET_ARM64
                 default:
                 {
                     // Some platforms warn about unhandled switch cases
@@ -1984,8 +1942,6 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                                            newobjThis);
             }
 
-            assert(!SimdAsHWIntrinsicInfo::NeedsOperandsSwapped(intrinsic));
-
             switch (intrinsic)
             {
                 case NI_Vector3_Create:
@@ -2050,11 +2006,11 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                     else
                     {
                         GenTree* idx = gtNewIconNode(2, TYP_INT);
-                        op2          = gtNewSimdWithElementNode(simdType, op2, op3, idx, simdBaseJitType, simdSize,
+                        op2          = gtNewSimdWithElementNode(simdType, op2, idx, op3, simdBaseJitType, simdSize,
                                                        /* isSimdAsHWIntrinsic */ true);
 
                         idx        = gtNewIconNode(3, TYP_INT);
-                        copyBlkSrc = gtNewSimdWithElementNode(simdType, op2, op4, idx, simdBaseJitType, simdSize,
+                        copyBlkSrc = gtNewSimdWithElementNode(simdType, op2, idx, op4, simdBaseJitType, simdSize,
                                                               /* isSimdAsHWIntrinsic */ true);
                     }
 
@@ -2112,8 +2068,6 @@ GenTree* Compiler::impSimdAsHWIntrinsicSpecial(NamedIntrinsic       intrinsic,
                                            newobjThis);
             }
 
-            assert(!SimdAsHWIntrinsicInfo::NeedsOperandsSwapped(intrinsic));
-
             switch (intrinsic)
             {
                 case NI_Vector4_Create:
index d30dff5..42b551a 100644 (file)
@@ -24,8 +24,7 @@ enum class SimdAsHWIntrinsicFlag : unsigned int
     // Indicates the intrinsic is for an instance method.
     InstanceMethod = 0x02,
 
-    // Indicates the operands should be swapped in importation.
-    NeedsOperandsSwapped = 0x04,
+    /* UnusedFlag = 0x04, */
 
     // Base type should come from the this argument
     BaseTypeFromThisArg = 0x08,
@@ -132,12 +131,6 @@ struct SimdAsHWIntrinsicInfo
         return (flags & SimdAsHWIntrinsicFlag::InstanceMethod) == SimdAsHWIntrinsicFlag::InstanceMethod;
     }
 
-    static bool NeedsOperandsSwapped(NamedIntrinsic id)
-    {
-        SimdAsHWIntrinsicFlag flags = lookupFlags(id);
-        return (flags & SimdAsHWIntrinsicFlag::NeedsOperandsSwapped) == SimdAsHWIntrinsicFlag::NeedsOperandsSwapped;
-    }
-
     static bool BaseTypeFromThisArg(NamedIntrinsic id)
     {
         SimdAsHWIntrinsicFlag flags = lookupFlags(id);
index 405923b..1400eee 100644 (file)
 //                                                                                                     {TYP_BYTE,                                      TYP_UBYTE,                                      TYP_SHORT,                                      TYP_USHORT,                                     TYP_INT,                                        TYP_UINT,                                       TYP_LONG,                                       TYP_ULONG,                                      TYP_FLOAT,                                      TYP_DOUBLE}
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //  Vector2 Intrinsics
-SIMD_AS_HWINTRINSIC_ID(Vector2,     Abs,                                                    1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Abs,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     Abs,                                                    1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_Abs,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_NM(Vector2,     Create,                     ".ctor",                    3,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_Create,                              NI_Illegal},                                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector2,     CreateBroadcast,            ".ctor",                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_CreateBroadcast,                     NI_Illegal},                                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     Dot,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector64_Dot,                                NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     Dot,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_Dot,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector2,     get_One,                                                0,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_get_One,                             NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector2,     get_Zero,                                               0,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_get_Zero,                            NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     Max,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Max,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     Min,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Min,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Addition,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Add,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Division,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Arm64_Divide,                        NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Equality,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector64_op_Equality,                        NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Inequality,                                          2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector64_op_Inequality,                      NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Multiply,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Multiply,                            NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Subtraction,                                         2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Subtract,                            NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     SquareRoot,                                             1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Arm64_Sqrt,                          NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     Max,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_Max,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     Min,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_Min,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Addition,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_op_Addition,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Division,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_op_Division,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Equality,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_op_Equality,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Inequality,                                          2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_op_Inequality,                       NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Multiply,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_op_Multiply,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Subtraction,                                         2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_op_Subtraction,                      NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_UnaryNegation,                                       1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_op_UnaryNegation,                    NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_NM(Vector2,     Sqrt,                       "SquareRoot",               1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector2_Sqrt,                                NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //                     ISA          ID                          Name                        NumArg                                                                                                                                                                                                                      Instructions                                                                                                                                                                                                                                                                   Flags
 //                                                                                                     {TYP_BYTE,                                      TYP_UBYTE,                                      TYP_SHORT,                                      TYP_USHORT,                                     TYP_INT,                                        TYP_UINT,                                       TYP_LONG,                                       TYP_ULONG,                                      TYP_FLOAT,                                      TYP_DOUBLE}
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //  Vector3 Intrinsics
-SIMD_AS_HWINTRINSIC_ID(Vector3,     Abs,                                                    1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Abs,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     Abs,                                                    1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_Abs,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_NM(Vector3,     Create,                     ".ctor",                    4,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_Create,                              NI_Illegal},                                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector3,     CreateBroadcast,            ".ctor",                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_CreateBroadcast,                     NI_Illegal},                                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector3,     CreateFromVector2,          ".ctor",                    3,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_CreateFromVector2,                   NI_Illegal},                                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     Dot,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector128_Dot,                               NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     Dot,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_Dot,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector3,     get_One,                                                0,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_get_One,                             NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector3,     get_Zero,                                               0,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_get_Zero  ,                          NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     Max,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Max,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     Min,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Min,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Addition,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Add,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Division,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Arm64_Divide,                        NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Equality,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector128_op_Equality,                       NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Inequality,                                          2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector128_op_Inequality,                     NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Multiply,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Multiply,                            NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Subtraction,                                         2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Subtract,                            NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     SquareRoot,                                             1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Arm64_Sqrt,                          NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     Max,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_Max,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     Min,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_Min,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Addition,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_op_Addition,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Division,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_op_Division,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Equality,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_op_Equality,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Inequality,                                          2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_op_Inequality,                       NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Multiply,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_op_Multiply,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Subtraction,                                         2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_op_Subtraction,                      NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_UnaryNegation,                                       1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_op_UnaryNegation,                    NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_NM(Vector3,     Sqrt,                       "SquareRoot",               1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector3_Sqrt,                                NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //                     ISA          ID                          Name                        NumArg                                                                                                                                                                                                                      Instructions                                                                                                                                                                                                                                                                   Flags
 //                                                                                                     {TYP_BYTE,                                      TYP_UBYTE,                                      TYP_SHORT,                                      TYP_USHORT,                                     TYP_INT,                                        TYP_UINT,                                       TYP_LONG,                                       TYP_ULONG,                                      TYP_FLOAT,                                      TYP_DOUBLE}
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //  Vector4 Intrinsics
-SIMD_AS_HWINTRINSIC_ID(Vector4,     Abs,                                                    1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Abs,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     Abs,                                                    1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_Abs,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_NM(Vector4,     Create,                     ".ctor",                    5,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_Create,                              NI_Illegal},                                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector4,     CreateBroadcast,            ".ctor",                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_CreateBroadcast,                     NI_Illegal},                                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector4,     CreateFromVector2,          ".ctor",                    4,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_CreateFromVector2,                   NI_Illegal},                                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector4,     CreateFromVector3,          ".ctor",                    3,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_CreateFromVector3,                   NI_Illegal},                                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     Dot,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector128_Dot,                               NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     Dot,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_Dot,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector4,     get_One,                                                0,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_get_One,                             NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector4,     get_Zero,                                               0,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_get_Zero,                            NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     Max,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Max,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     Min,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Min,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Addition,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Add,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Division,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Arm64_Divide,                        NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Equality,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector128_op_Equality,                       NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Inequality,                                          2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector128_op_Inequality,                     NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Multiply,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Multiply,                            NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Subtraction,                                         2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Subtract,                            NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     SquareRoot,                                             1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Arm64_Sqrt,                          NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     Max,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_Max,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     Min,                                                    2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_Min,                                 NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Addition,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_op_Addition,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Division,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_op_Division,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Equality,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_op_Equality,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Inequality,                                          2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_op_Inequality,                       NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Multiply,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_op_Multiply,                         NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Subtraction,                                         2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_op_Subtraction,                      NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_UnaryNegation,                                       1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_op_UnaryNegation,                    NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_NM(Vector4,     Sqrt,                       "SquareRoot",               1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Vector4_Sqrt,                                NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //                     ISA          ID                          Name                        NumArg                                                                                                                                                                                                                      Instructions                                                                                                                                                                                                                                                                   Flags
 //                                                                                                     {TYP_BYTE,                                      TYP_UBYTE,                                      TYP_SHORT,                                      TYP_USHORT,                                     TYP_INT,                                        TYP_UINT,                                       TYP_LONG,                                       TYP_ULONG,                                      TYP_FLOAT,                                      TYP_DOUBLE}
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //  Vector<T> Intrinsics
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Abs,                                                    1,         {NI_AdvSimd_Abs,                                NI_VectorT128_Abs,                              NI_AdvSimd_Abs,                                 NI_VectorT128_Abs,                              NI_AdvSimd_Abs,                                 NI_VectorT128_Abs,                              NI_AdvSimd_Arm64_Abs,                           NI_VectorT128_Abs,                              NI_AdvSimd_Abs,                                 NI_AdvSimd_Arm64_Abs},                          SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Add,                                                    2,         {NI_AdvSimd_Add,                                NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Arm64_Add},                          SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  AndNot,                                                 2,         {NI_AdvSimd_BitwiseClear,                       NI_AdvSimd_BitwiseClear,                        NI_AdvSimd_BitwiseClear,                        NI_AdvSimd_BitwiseClear,                        NI_AdvSimd_BitwiseClear,                        NI_AdvSimd_BitwiseClear,                        NI_AdvSimd_BitwiseClear,                        NI_AdvSimd_BitwiseClear,                        NI_AdvSimd_BitwiseClear,                        NI_AdvSimd_BitwiseClear},                       SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Abs,                                                    1,         {NI_VectorT128_Abs,                             NI_VectorT128_Abs,                              NI_VectorT128_Abs,                              NI_VectorT128_Abs,                              NI_VectorT128_Abs,                              NI_VectorT128_Abs,                              NI_VectorT128_Abs,                              NI_VectorT128_Abs,                              NI_VectorT128_Abs,                              NI_VectorT128_Abs},                             SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Add,                                                    2,         {NI_VectorT128_Add,                             NI_VectorT128_Add,                              NI_VectorT128_Add,                              NI_VectorT128_Add,                              NI_VectorT128_Add,                              NI_VectorT128_Add,                              NI_VectorT128_Add,                              NI_VectorT128_Add,                              NI_VectorT128_Add,                              NI_VectorT128_Add},                             SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  AndNot,                                                 2,         {NI_VectorT128_AndNot,                          NI_VectorT128_AndNot,                           NI_VectorT128_AndNot,                           NI_VectorT128_AndNot,                           NI_VectorT128_AndNot,                           NI_VectorT128_AndNot,                           NI_VectorT128_AndNot,                           NI_VectorT128_AndNot,                           NI_VectorT128_AndNot,                           NI_VectorT128_AndNot},                          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  As,                                                     1,         {NI_VectorT128_As,                              NI_VectorT128_As,                               NI_VectorT128_As,                               NI_VectorT128_As,                               NI_VectorT128_As,                               NI_VectorT128_As,                               NI_VectorT128_As,                               NI_VectorT128_As,                               NI_VectorT128_As,                               NI_VectorT128_As},                              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorByte,                                           1,         {NI_VectorT128_AsVectorByte,                    NI_VectorT128_AsVectorByte,                     NI_VectorT128_AsVectorByte,                     NI_VectorT128_AsVectorByte,                     NI_VectorT128_AsVectorByte,                     NI_VectorT128_AsVectorByte,                     NI_VectorT128_AsVectorByte,                     NI_VectorT128_AsVectorByte,                     NI_VectorT128_AsVectorByte,                     NI_VectorT128_AsVectorByte},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorDouble,                                         1,         {NI_VectorT128_AsVectorDouble,                  NI_VectorT128_AsVectorDouble,                   NI_VectorT128_AsVectorDouble,                   NI_VectorT128_AsVectorDouble,                   NI_VectorT128_AsVectorDouble,                   NI_VectorT128_AsVectorDouble,                   NI_VectorT128_AsVectorDouble,                   NI_VectorT128_AsVectorDouble,                   NI_VectorT128_AsVectorDouble,                   NI_VectorT128_AsVectorDouble},                  SimdAsHWIntrinsicFlag::None)
@@ -119,9 +122,9 @@ SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorSingle,
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorUInt16,                                         1,         {NI_VectorT128_AsVectorUInt16,                  NI_VectorT128_AsVectorUInt16,                   NI_VectorT128_AsVectorUInt16,                   NI_VectorT128_AsVectorUInt16,                   NI_VectorT128_AsVectorUInt16,                   NI_VectorT128_AsVectorUInt16,                   NI_VectorT128_AsVectorUInt16,                   NI_VectorT128_AsVectorUInt16,                   NI_VectorT128_AsVectorUInt16,                   NI_VectorT128_AsVectorUInt16},                  SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorUInt32,                                         1,         {NI_VectorT128_AsVectorUInt32,                  NI_VectorT128_AsVectorUInt32,                   NI_VectorT128_AsVectorUInt32,                   NI_VectorT128_AsVectorUInt32,                   NI_VectorT128_AsVectorUInt32,                   NI_VectorT128_AsVectorUInt32,                   NI_VectorT128_AsVectorUInt32,                   NI_VectorT128_AsVectorUInt32,                   NI_VectorT128_AsVectorUInt32,                   NI_VectorT128_AsVectorUInt32},                  SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorUInt64,                                         1,         {NI_VectorT128_AsVectorUInt64,                  NI_VectorT128_AsVectorUInt64,                   NI_VectorT128_AsVectorUInt64,                   NI_VectorT128_AsVectorUInt64,                   NI_VectorT128_AsVectorUInt64,                   NI_VectorT128_AsVectorUInt64,                   NI_VectorT128_AsVectorUInt64,                   NI_VectorT128_AsVectorUInt64,                   NI_VectorT128_AsVectorUInt64,                   NI_VectorT128_AsVectorUInt64},                  SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  BitwiseAnd,                                             2,         {NI_AdvSimd_And,                                NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  BitwiseOr,                                              2,         {NI_AdvSimd_Or,                                 NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or},                                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Ceiling,                                                1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Ceiling,                             NI_AdvSimd_Arm64_Ceiling},                      SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  BitwiseAnd,                                             2,         {NI_VectorT128_BitwiseAnd,                      NI_VectorT128_BitwiseAnd,                       NI_VectorT128_BitwiseAnd,                       NI_VectorT128_BitwiseAnd,                       NI_VectorT128_BitwiseAnd,                       NI_VectorT128_BitwiseAnd,                       NI_VectorT128_BitwiseAnd,                       NI_VectorT128_BitwiseAnd,                       NI_VectorT128_BitwiseAnd,                       NI_VectorT128_BitwiseAnd},                      SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  BitwiseOr,                                              2,         {NI_VectorT128_BitwiseOr,                       NI_VectorT128_BitwiseOr,                        NI_VectorT128_BitwiseOr,                        NI_VectorT128_BitwiseOr,                        NI_VectorT128_BitwiseOr,                        NI_VectorT128_BitwiseOr,                        NI_VectorT128_BitwiseOr,                        NI_VectorT128_BitwiseOr,                        NI_VectorT128_BitwiseOr,                        NI_VectorT128_BitwiseOr},                       SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Ceiling,                                                1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_Ceiling,                          NI_VectorT128_Ceiling},                         SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ConditionalSelect,                                      3,         {NI_VectorT128_ConditionalSelect,               NI_VectorT128_ConditionalSelect,                NI_VectorT128_ConditionalSelect,                NI_VectorT128_ConditionalSelect,                NI_VectorT128_ConditionalSelect,                NI_VectorT128_ConditionalSelect,                NI_VectorT128_ConditionalSelect,                NI_VectorT128_ConditionalSelect,                NI_VectorT128_ConditionalSelect,                NI_VectorT128_ConditionalSelect},               SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ConvertToDouble,                                        1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_ConvertToDouble,                  NI_VectorT128_ConvertToDouble,                  NI_Illegal,                                     NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ConvertToInt32,                                         1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_ConvertToInt32,                   NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
@@ -131,27 +134,27 @@ SIMD_AS_HWINTRINSIC_ID(VectorT128,  ConvertToUInt32,
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ConvertToUInt64,                                        1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_ConvertToUInt64},                 SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_NM(VectorT128,  CreateBroadcast,            ".ctor",                    2,         {NI_VectorT128_CreateBroadcast,                 NI_VectorT128_CreateBroadcast,                  NI_VectorT128_CreateBroadcast,                  NI_VectorT128_CreateBroadcast,                  NI_VectorT128_CreateBroadcast,                  NI_VectorT128_CreateBroadcast,                  NI_VectorT128_CreateBroadcast,                  NI_VectorT128_CreateBroadcast,                  NI_VectorT128_CreateBroadcast,                  NI_VectorT128_CreateBroadcast},                 SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Divide,                                                 2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_Divide,                           NI_VectorT128_Divide},                          SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Dot,                                                    2,         {NI_Vector128_Dot,                              NI_Vector128_Dot,                               NI_Vector128_Dot,                               NI_Vector128_Dot,                               NI_Vector128_Dot,                               NI_Vector128_Dot,                               NI_Illegal,                                     NI_Illegal,                                     NI_Vector128_Dot,                               NI_Vector128_Dot},                              SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Equals,                                                 2,         {NI_AdvSimd_CompareEqual,                       NI_AdvSimd_CompareEqual,                        NI_AdvSimd_CompareEqual,                        NI_AdvSimd_CompareEqual,                        NI_AdvSimd_CompareEqual,                        NI_AdvSimd_CompareEqual,                        NI_AdvSimd_Arm64_CompareEqual,                  NI_AdvSimd_Arm64_CompareEqual,                  NI_AdvSimd_CompareEqual,                        NI_AdvSimd_Arm64_CompareEqual},                 SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Dot,                                                    2,         {NI_VectorT128_Dot,                             NI_VectorT128_Dot,                              NI_VectorT128_Dot,                              NI_VectorT128_Dot,                              NI_VectorT128_Dot,                              NI_VectorT128_Dot,                              NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_Dot,                              NI_VectorT128_Dot},                             SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Equals,                                                 2,         {NI_VectorT128_Equals,                          NI_VectorT128_Equals,                           NI_VectorT128_Equals,                           NI_VectorT128_Equals,                           NI_VectorT128_Equals,                           NI_VectorT128_Equals,                           NI_VectorT128_Equals,                           NI_VectorT128_Equals,                           NI_VectorT128_Equals,                           NI_VectorT128_Equals},                          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  EqualsAll,                                              2,         {NI_VectorT128_EqualsAll,                       NI_VectorT128_EqualsAll,                        NI_VectorT128_EqualsAll,                        NI_VectorT128_EqualsAll,                        NI_VectorT128_EqualsAll,                        NI_VectorT128_EqualsAll,                        NI_VectorT128_EqualsAll,                        NI_VectorT128_EqualsAll,                        NI_VectorT128_EqualsAll,                        NI_VectorT128_EqualsAll},                       SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  EqualsAny,                                              2,         {NI_VectorT128_EqualsAny,                       NI_VectorT128_EqualsAny,                        NI_VectorT128_EqualsAny,                        NI_VectorT128_EqualsAny,                        NI_VectorT128_EqualsAny,                        NI_VectorT128_EqualsAny,                        NI_VectorT128_EqualsAny,                        NI_VectorT128_EqualsAny,                        NI_VectorT128_EqualsAny,                        NI_VectorT128_EqualsAny},                       SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Floor,                                                  1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Floor,                               NI_AdvSimd_Arm64_Floor},                        SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Floor,                                                  1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_Floor,                            NI_VectorT128_Floor},                           SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  get_AllBitsSet,                                         0,         {NI_VectorT128_get_AllBitsSet,                  NI_VectorT128_get_AllBitsSet,                   NI_VectorT128_get_AllBitsSet,                   NI_VectorT128_get_AllBitsSet,                   NI_VectorT128_get_AllBitsSet,                   NI_VectorT128_get_AllBitsSet,                   NI_VectorT128_get_AllBitsSet,                   NI_VectorT128_get_AllBitsSet,                   NI_VectorT128_get_AllBitsSet,                   NI_VectorT128_get_AllBitsSet},                  SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  get_Count,                                              0,         {NI_VectorT128_get_Count,                       NI_VectorT128_get_Count,                        NI_VectorT128_get_Count,                        NI_VectorT128_get_Count,                        NI_VectorT128_get_Count,                        NI_VectorT128_get_Count,                        NI_VectorT128_get_Count,                        NI_VectorT128_get_Count,                        NI_VectorT128_get_Count,                        NI_VectorT128_get_Count},                       SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  get_Item,                                               2,         {NI_VectorT128_get_Item,                        NI_VectorT128_get_Item,                         NI_VectorT128_get_Item,                         NI_VectorT128_get_Item,                         NI_VectorT128_get_Item,                         NI_VectorT128_get_Item,                         NI_VectorT128_get_Item,                         NI_VectorT128_get_Item,                         NI_VectorT128_get_Item,                         NI_VectorT128_get_Item},                        SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::BaseTypeFromThisArg)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  get_One,                                                0,         {NI_VectorT128_get_One,                         NI_VectorT128_get_One,                          NI_VectorT128_get_One,                          NI_VectorT128_get_One,                          NI_VectorT128_get_One,                          NI_VectorT128_get_One,                          NI_VectorT128_get_One,                          NI_VectorT128_get_One,                          NI_VectorT128_get_One,                          NI_VectorT128_get_One},                         SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  get_Zero,                                               0,         {NI_VectorT128_get_Zero,                        NI_VectorT128_get_Zero,                         NI_VectorT128_get_Zero,                         NI_VectorT128_get_Zero,                         NI_VectorT128_get_Zero,                         NI_VectorT128_get_Zero,                         NI_VectorT128_get_Zero,                         NI_VectorT128_get_Zero,                         NI_VectorT128_get_Zero,                         NI_VectorT128_get_Zero},                        SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  GetElement,                                             2,         {NI_VectorT128_GetElement,                      NI_VectorT128_GetElement,                       NI_VectorT128_GetElement,                       NI_VectorT128_GetElement,                       NI_VectorT128_GetElement,                       NI_VectorT128_GetElement,                       NI_VectorT128_GetElement,                       NI_VectorT128_GetElement,                       NI_VectorT128_GetElement,                       NI_VectorT128_GetElement},                      SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThan,                                            2,         {NI_AdvSimd_CompareGreaterThan,                 NI_AdvSimd_CompareGreaterThan,                  NI_AdvSimd_CompareGreaterThan,                  NI_AdvSimd_CompareGreaterThan,                  NI_AdvSimd_CompareGreaterThan,                  NI_AdvSimd_CompareGreaterThan,                  NI_AdvSimd_Arm64_CompareGreaterThan,            NI_AdvSimd_Arm64_CompareGreaterThan,            NI_AdvSimd_CompareGreaterThan,                  NI_AdvSimd_Arm64_CompareGreaterThan},           SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThan,                                            2,         {NI_VectorT128_GreaterThan,                     NI_VectorT128_GreaterThan,                      NI_VectorT128_GreaterThan,                      NI_VectorT128_GreaterThan,                      NI_VectorT128_GreaterThan,                      NI_VectorT128_GreaterThan,                      NI_VectorT128_GreaterThan,                      NI_VectorT128_GreaterThan,                      NI_VectorT128_GreaterThan,                      NI_VectorT128_GreaterThan},                     SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanAll,                                         2,         {NI_VectorT128_GreaterThanAll,                  NI_VectorT128_GreaterThanAll,                   NI_VectorT128_GreaterThanAll,                   NI_VectorT128_GreaterThanAll,                   NI_VectorT128_GreaterThanAll,                   NI_VectorT128_GreaterThanAll,                   NI_VectorT128_GreaterThanAll,                   NI_VectorT128_GreaterThanAll,                   NI_VectorT128_GreaterThanAll,                   NI_VectorT128_GreaterThanAll},                  SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanAny,                                         2,         {NI_VectorT128_GreaterThanAny,                  NI_VectorT128_GreaterThanAny,                   NI_VectorT128_GreaterThanAny,                   NI_VectorT128_GreaterThanAny,                   NI_VectorT128_GreaterThanAny,                   NI_VectorT128_GreaterThanAny,                   NI_VectorT128_GreaterThanAny,                   NI_VectorT128_GreaterThanAny,                   NI_VectorT128_GreaterThanAny,                   NI_VectorT128_GreaterThanAny},                  SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanOrEqual,                                     2,         {NI_AdvSimd_CompareGreaterThanOrEqual,          NI_AdvSimd_CompareGreaterThanOrEqual,           NI_AdvSimd_CompareGreaterThanOrEqual,           NI_AdvSimd_CompareGreaterThanOrEqual,           NI_AdvSimd_CompareGreaterThanOrEqual,           NI_AdvSimd_CompareGreaterThanOrEqual,           NI_AdvSimd_Arm64_CompareGreaterThanOrEqual,     NI_AdvSimd_Arm64_CompareGreaterThanOrEqual,     NI_AdvSimd_CompareGreaterThanOrEqual,           NI_AdvSimd_Arm64_CompareGreaterThanOrEqual},    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanOrEqual,                                     2,         {NI_VectorT128_GreaterThanOrEqual,              NI_VectorT128_GreaterThanOrEqual,               NI_VectorT128_GreaterThanOrEqual,               NI_VectorT128_GreaterThanOrEqual,               NI_VectorT128_GreaterThanOrEqual,               NI_VectorT128_GreaterThanOrEqual,               NI_VectorT128_GreaterThanOrEqual,               NI_VectorT128_GreaterThanOrEqual,               NI_VectorT128_GreaterThanOrEqual,               NI_VectorT128_GreaterThanOrEqual},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanOrEqualAll,                                  2,         {NI_VectorT128_GreaterThanOrEqualAll,           NI_VectorT128_GreaterThanOrEqualAll,            NI_VectorT128_GreaterThanOrEqualAll,            NI_VectorT128_GreaterThanOrEqualAll,            NI_VectorT128_GreaterThanOrEqualAll,            NI_VectorT128_GreaterThanOrEqualAll,            NI_VectorT128_GreaterThanOrEqualAll,            NI_VectorT128_GreaterThanOrEqualAll,            NI_VectorT128_GreaterThanOrEqualAll,            NI_VectorT128_GreaterThanOrEqualAll},           SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanOrEqualAny,                                  2,         {NI_VectorT128_GreaterThanOrEqualAny,           NI_VectorT128_GreaterThanOrEqualAny,            NI_VectorT128_GreaterThanOrEqualAny,            NI_VectorT128_GreaterThanOrEqualAny,            NI_VectorT128_GreaterThanOrEqualAny,            NI_VectorT128_GreaterThanOrEqualAny,            NI_VectorT128_GreaterThanOrEqualAny,            NI_VectorT128_GreaterThanOrEqualAny,            NI_VectorT128_GreaterThanOrEqualAny,            NI_VectorT128_GreaterThanOrEqualAny},           SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThan,                                               2,         {NI_AdvSimd_CompareLessThan,                    NI_AdvSimd_CompareLessThan,                     NI_AdvSimd_CompareLessThan,                     NI_AdvSimd_CompareLessThan,                     NI_AdvSimd_CompareLessThan,                     NI_AdvSimd_CompareLessThan,                     NI_AdvSimd_Arm64_CompareLessThan,               NI_AdvSimd_Arm64_CompareLessThan,               NI_AdvSimd_CompareLessThan,                     NI_AdvSimd_Arm64_CompareLessThan},              SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThan,                                               2,         {NI_VectorT128_LessThan,                        NI_VectorT128_LessThan,                         NI_VectorT128_LessThan,                         NI_VectorT128_LessThan,                         NI_VectorT128_LessThan,                         NI_VectorT128_LessThan,                         NI_VectorT128_LessThan,                         NI_VectorT128_LessThan,                         NI_VectorT128_LessThan,                         NI_VectorT128_LessThan},                        SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanAll,                                            2,         {NI_VectorT128_LessThanAll,                     NI_VectorT128_LessThanAll,                      NI_VectorT128_LessThanAll,                      NI_VectorT128_LessThanAll,                      NI_VectorT128_LessThanAll,                      NI_VectorT128_LessThanAll,                      NI_VectorT128_LessThanAll,                      NI_VectorT128_LessThanAll,                      NI_VectorT128_LessThanAll,                      NI_VectorT128_LessThanAll},                     SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanAny,                                            2,         {NI_VectorT128_LessThanAny,                     NI_VectorT128_LessThanAny,                      NI_VectorT128_LessThanAny,                      NI_VectorT128_LessThanAny,                      NI_VectorT128_LessThanAny,                      NI_VectorT128_LessThanAny,                      NI_VectorT128_LessThanAny,                      NI_VectorT128_LessThanAny,                      NI_VectorT128_LessThanAny,                      NI_VectorT128_LessThanAny},                     SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanOrEqual,                                        2,         {NI_AdvSimd_CompareLessThanOrEqual,             NI_AdvSimd_CompareLessThanOrEqual,              NI_AdvSimd_CompareLessThanOrEqual,              NI_AdvSimd_CompareLessThanOrEqual,              NI_AdvSimd_CompareLessThanOrEqual,              NI_AdvSimd_CompareLessThanOrEqual,              NI_AdvSimd_Arm64_CompareLessThanOrEqual,        NI_AdvSimd_Arm64_CompareLessThanOrEqual,        NI_AdvSimd_CompareLessThanOrEqual,              NI_AdvSimd_Arm64_CompareLessThanOrEqual},       SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanOrEqual,                                        2,         {NI_VectorT128_LessThanOrEqual,                 NI_VectorT128_LessThanOrEqual,                  NI_VectorT128_LessThanOrEqual,                  NI_VectorT128_LessThanOrEqual,                  NI_VectorT128_LessThanOrEqual,                  NI_VectorT128_LessThanOrEqual,                  NI_VectorT128_LessThanOrEqual,                  NI_VectorT128_LessThanOrEqual,                  NI_VectorT128_LessThanOrEqual,                  NI_VectorT128_LessThanOrEqual},                 SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanOrEqualAll,                                     2,         {NI_VectorT128_LessThanOrEqualAll,              NI_VectorT128_LessThanOrEqualAll,               NI_VectorT128_LessThanOrEqualAll,               NI_VectorT128_LessThanOrEqualAll,               NI_VectorT128_LessThanOrEqualAll,               NI_VectorT128_LessThanOrEqualAll,               NI_VectorT128_LessThanOrEqualAll,               NI_VectorT128_LessThanOrEqualAll,               NI_VectorT128_LessThanOrEqualAll,               NI_VectorT128_LessThanOrEqualAll},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanOrEqualAny,                                     2,         {NI_VectorT128_LessThanOrEqualAny,              NI_VectorT128_LessThanOrEqualAny,               NI_VectorT128_LessThanOrEqualAny,               NI_VectorT128_LessThanOrEqualAny,               NI_VectorT128_LessThanOrEqualAny,               NI_VectorT128_LessThanOrEqualAny,               NI_VectorT128_LessThanOrEqualAny,               NI_VectorT128_LessThanOrEqualAny,               NI_VectorT128_LessThanOrEqualAny,               NI_VectorT128_LessThanOrEqualAny},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Load,                                                   1,         {NI_VectorT128_Load,                            NI_VectorT128_Load,                             NI_VectorT128_Load,                             NI_VectorT128_Load,                             NI_VectorT128_Load,                             NI_VectorT128_Load,                             NI_VectorT128_Load,                             NI_VectorT128_Load,                             NI_VectorT128_Load,                             NI_VectorT128_Load},                            SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
@@ -159,44 +162,44 @@ SIMD_AS_HWINTRINSIC_ID(VectorT128,  LoadAligned,
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LoadAlignedNonTemporal,                                 1,         {NI_VectorT128_LoadAlignedNonTemporal,          NI_VectorT128_LoadAlignedNonTemporal,           NI_VectorT128_LoadAlignedNonTemporal,           NI_VectorT128_LoadAlignedNonTemporal,           NI_VectorT128_LoadAlignedNonTemporal,           NI_VectorT128_LoadAlignedNonTemporal,           NI_VectorT128_LoadAlignedNonTemporal,           NI_VectorT128_LoadAlignedNonTemporal,           NI_VectorT128_LoadAlignedNonTemporal,           NI_VectorT128_LoadAlignedNonTemporal},          SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LoadUnsafe,                                             1,         {NI_VectorT128_LoadUnsafe,                      NI_VectorT128_LoadUnsafe,                       NI_VectorT128_LoadUnsafe,                       NI_VectorT128_LoadUnsafe,                       NI_VectorT128_LoadUnsafe,                       NI_VectorT128_LoadUnsafe,                       NI_VectorT128_LoadUnsafe,                       NI_VectorT128_LoadUnsafe,                       NI_VectorT128_LoadUnsafe,                       NI_VectorT128_LoadUnsafe},                      SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
 SIMD_AS_HWINTRINSIC_NM(VectorT128,  LoadUnsafeIndex,            "LoadUnsafe",               2,         {NI_VectorT128_LoadUnsafeIndex,                 NI_VectorT128_LoadUnsafeIndex,                  NI_VectorT128_LoadUnsafeIndex,                  NI_VectorT128_LoadUnsafeIndex,                  NI_VectorT128_LoadUnsafeIndex,                  NI_VectorT128_LoadUnsafeIndex,                  NI_VectorT128_LoadUnsafeIndex,                  NI_VectorT128_LoadUnsafeIndex,                  NI_VectorT128_LoadUnsafeIndex,                  NI_VectorT128_LoadUnsafeIndex},                 SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Max,                                                    2,         {NI_AdvSimd_Max,                                NI_AdvSimd_Max,                                 NI_AdvSimd_Max,                                 NI_AdvSimd_Max,                                 NI_AdvSimd_Max,                                 NI_AdvSimd_Max,                                 NI_VectorT128_Max,                              NI_VectorT128_Max,                              NI_AdvSimd_Max,                                 NI_AdvSimd_Arm64_Max},                          SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Min,                                                    2,         {NI_AdvSimd_Min,                                NI_AdvSimd_Min,                                 NI_AdvSimd_Min,                                 NI_AdvSimd_Min,                                 NI_AdvSimd_Min,                                 NI_AdvSimd_Min,                                 NI_VectorT128_Min,                              NI_VectorT128_Min,                              NI_AdvSimd_Min,                                 NI_AdvSimd_Arm64_Min},                          SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Max,                                                    2,         {NI_VectorT128_Max,                             NI_VectorT128_Max,                              NI_VectorT128_Max,                              NI_VectorT128_Max,                              NI_VectorT128_Max,                              NI_VectorT128_Max,                              NI_VectorT128_Max,                              NI_VectorT128_Max,                              NI_VectorT128_Max,                              NI_VectorT128_Max},                             SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Min,                                                    2,         {NI_VectorT128_Min,                             NI_VectorT128_Min,                              NI_VectorT128_Min,                              NI_VectorT128_Min,                              NI_VectorT128_Min,                              NI_VectorT128_Min,                              NI_VectorT128_Min,                              NI_VectorT128_Min,                              NI_VectorT128_Min,                              NI_VectorT128_Min},                             SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Multiply,                                               2,         {NI_VectorT128_Multiply,                        NI_VectorT128_Multiply,                         NI_VectorT128_Multiply,                         NI_VectorT128_Multiply,                         NI_VectorT128_Multiply,                         NI_VectorT128_Multiply,                         NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_Multiply,                         NI_VectorT128_Multiply},                        SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Narrow,                                                 2,         {NI_VectorT128_Narrow,                          NI_VectorT128_Narrow,                           NI_VectorT128_Narrow,                           NI_VectorT128_Narrow,                           NI_VectorT128_Narrow,                           NI_VectorT128_Narrow,                           NI_VectorT128_Narrow,                           NI_VectorT128_Narrow,                           NI_VectorT128_Narrow,                           NI_VectorT128_Narrow},                          SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Negate,                                                 2,         {NI_VectorT128_Negate,                          NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate},                          SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Negate,                                                 1,         {NI_VectorT128_Negate,                          NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate,                           NI_VectorT128_Negate},                          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  OnesComplement,                                         2,         {NI_VectorT128_OnesComplement,                  NI_VectorT128_OnesComplement,                   NI_VectorT128_OnesComplement,                   NI_VectorT128_OnesComplement,                   NI_VectorT128_OnesComplement,                   NI_VectorT128_OnesComplement,                   NI_VectorT128_OnesComplement,                   NI_VectorT128_OnesComplement,                   NI_VectorT128_OnesComplement,                   NI_VectorT128_OnesComplement},                  SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Addition,                                            2,         {NI_AdvSimd_Add,                                NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Add,                                 NI_AdvSimd_Arm64_Add},                          SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_BitwiseAnd,                                          2,         {NI_AdvSimd_And,                                NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And,                                 NI_AdvSimd_And},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_BitwiseOr,                                           2,         {NI_AdvSimd_Or,                                 NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or,                                  NI_AdvSimd_Or},                                 SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Addition,                                            2,         {NI_VectorT128_op_Addition,                     NI_VectorT128_op_Addition,                      NI_VectorT128_op_Addition,                      NI_VectorT128_op_Addition,                      NI_VectorT128_op_Addition,                      NI_VectorT128_op_Addition,                      NI_VectorT128_op_Addition,                      NI_VectorT128_op_Addition,                      NI_VectorT128_op_Addition,                      NI_VectorT128_op_Addition},                     SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_BitwiseAnd,                                          2,         {NI_VectorT128_op_BitwiseAnd,                   NI_VectorT128_op_BitwiseAnd,                    NI_VectorT128_op_BitwiseAnd,                    NI_VectorT128_op_BitwiseAnd,                    NI_VectorT128_op_BitwiseAnd,                    NI_VectorT128_op_BitwiseAnd,                    NI_VectorT128_op_BitwiseAnd,                    NI_VectorT128_op_BitwiseAnd,                    NI_VectorT128_op_BitwiseAnd,                    NI_VectorT128_op_BitwiseAnd},                   SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_BitwiseOr,                                           2,         {NI_VectorT128_op_BitwiseOr,                    NI_VectorT128_op_BitwiseOr,                     NI_VectorT128_op_BitwiseOr,                     NI_VectorT128_op_BitwiseOr,                     NI_VectorT128_op_BitwiseOr,                     NI_VectorT128_op_BitwiseOr,                     NI_VectorT128_op_BitwiseOr,                     NI_VectorT128_op_BitwiseOr,                     NI_VectorT128_op_BitwiseOr,                     NI_VectorT128_op_BitwiseOr},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Division,                                            2,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_op_Division,                      NI_VectorT128_op_Division},                     SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Equality,                                            2,         {NI_Vector128_op_Equality,                      NI_Vector128_op_Equality,                       NI_Vector128_op_Equality,                       NI_Vector128_op_Equality,                       NI_Vector128_op_Equality,                       NI_Vector128_op_Equality,                       NI_Vector128_op_Equality,                       NI_Vector128_op_Equality,                       NI_Vector128_op_Equality,                       NI_Vector128_op_Equality},                      SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_ExclusiveOr,                                         2,         {NI_AdvSimd_Xor,                                NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Equality,                                            2,         {NI_VectorT128_op_Equality,                     NI_VectorT128_op_Equality,                      NI_VectorT128_op_Equality,                      NI_VectorT128_op_Equality,                      NI_VectorT128_op_Equality,                      NI_VectorT128_op_Equality,                      NI_VectorT128_op_Equality,                      NI_VectorT128_op_Equality,                      NI_VectorT128_op_Equality,                      NI_VectorT128_op_Equality},                     SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_ExclusiveOr,                                         2,         {NI_VectorT128_op_ExclusiveOr,                  NI_VectorT128_op_ExclusiveOr,                   NI_VectorT128_op_ExclusiveOr,                   NI_VectorT128_op_ExclusiveOr,                   NI_VectorT128_op_ExclusiveOr,                   NI_VectorT128_op_ExclusiveOr,                   NI_VectorT128_op_ExclusiveOr,                   NI_VectorT128_op_ExclusiveOr,                   NI_VectorT128_op_ExclusiveOr,                   NI_VectorT128_op_ExclusiveOr},                  SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Explicit,                                            1,         {NI_VectorT128_op_Explicit,                     NI_VectorT128_op_Explicit,                      NI_VectorT128_op_Explicit,                      NI_VectorT128_op_Explicit,                      NI_VectorT128_op_Explicit,                      NI_VectorT128_op_Explicit,                      NI_VectorT128_op_Explicit,                      NI_VectorT128_op_Explicit,                      NI_VectorT128_op_Explicit,                      NI_VectorT128_op_Explicit},                     SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Inequality,                                          2,         {NI_Vector128_op_Inequality,                    NI_Vector128_op_Inequality,                     NI_Vector128_op_Inequality,                     NI_Vector128_op_Inequality,                     NI_Vector128_op_Inequality,                     NI_Vector128_op_Inequality,                     NI_Vector128_op_Inequality,                     NI_Vector128_op_Inequality,                     NI_Vector128_op_Inequality,                     NI_Vector128_op_Inequality},                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Inequality,                                          2,         {NI_VectorT128_op_Inequality,                   NI_VectorT128_op_Inequality,                    NI_VectorT128_op_Inequality,                    NI_VectorT128_op_Inequality,                    NI_VectorT128_op_Inequality,                    NI_VectorT128_op_Inequality,                    NI_VectorT128_op_Inequality,                    NI_VectorT128_op_Inequality,                    NI_VectorT128_op_Inequality,                    NI_VectorT128_op_Inequality},                   SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_LeftShift,                                           2,         {NI_VectorT128_op_LeftShift,                    NI_VectorT128_op_LeftShift,                     NI_VectorT128_op_LeftShift,                     NI_VectorT128_op_LeftShift,                     NI_VectorT128_op_LeftShift,                     NI_VectorT128_op_LeftShift,                     NI_VectorT128_op_LeftShift,                     NI_VectorT128_op_LeftShift,                     NI_VectorT128_op_LeftShift,                     NI_VectorT128_op_LeftShift},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Multiply,                                            2,         {NI_VectorT128_op_Multiply,                     NI_VectorT128_op_Multiply,                      NI_VectorT128_op_Multiply,                      NI_VectorT128_op_Multiply,                      NI_VectorT128_op_Multiply,                      NI_VectorT128_op_Multiply,                      NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_op_Multiply,                      NI_VectorT128_op_Multiply},                     SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_OnesComplement,                                      2,         {NI_VectorT128_op_OnesComplement,               NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement},               SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_OnesComplement,                                      1,         {NI_VectorT128_op_OnesComplement,               NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement,                NI_VectorT128_op_OnesComplement},               SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_RightShift,                                          2,         {NI_VectorT128_op_RightShift,                   NI_VectorT128_op_RightShift,                    NI_VectorT128_op_RightShift,                    NI_VectorT128_op_RightShift,                    NI_VectorT128_op_RightShift,                    NI_VectorT128_op_RightShift,                    NI_VectorT128_op_RightShift,                    NI_VectorT128_op_RightShift,                    NI_VectorT128_op_RightShift,                    NI_VectorT128_op_RightShift},                   SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Subtraction,                                         2,         {NI_AdvSimd_Subtract,                           NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Arm64_Subtract},                     SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_UnaryNegation,                                       2,         {NI_VectorT128_op_UnaryNegation,                NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation},                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_UnaryPlus,                                           2,         {NI_VectorT128_op_UnaryPlus,                    NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus},                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Subtraction,                                         2,         {NI_VectorT128_op_Subtraction,                  NI_VectorT128_op_Subtraction,                   NI_VectorT128_op_Subtraction,                   NI_VectorT128_op_Subtraction,                   NI_VectorT128_op_Subtraction,                   NI_VectorT128_op_Subtraction,                   NI_VectorT128_op_Subtraction,                   NI_VectorT128_op_Subtraction,                   NI_VectorT128_op_Subtraction,                   NI_VectorT128_op_Subtraction},                  SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_UnaryNegation,                                       1,         {NI_VectorT128_op_UnaryNegation,                NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation,                 NI_VectorT128_op_UnaryNegation},                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_UnaryPlus,                                           1,         {NI_VectorT128_op_UnaryPlus,                    NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus,                     NI_VectorT128_op_UnaryPlus},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_UnsignedRightShift,                                  2,         {NI_VectorT128_op_UnsignedRightShift,           NI_VectorT128_op_UnsignedRightShift,            NI_VectorT128_op_UnsignedRightShift,            NI_VectorT128_op_UnsignedRightShift,            NI_VectorT128_op_UnsignedRightShift,            NI_VectorT128_op_UnsignedRightShift,            NI_VectorT128_op_UnsignedRightShift,            NI_VectorT128_op_UnsignedRightShift,            NI_VectorT128_op_UnsignedRightShift,            NI_VectorT128_op_UnsignedRightShift},           SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ShiftLeft,                                              2,         {NI_VectorT128_ShiftLeft,                       NI_VectorT128_ShiftLeft,                        NI_VectorT128_ShiftLeft,                        NI_VectorT128_ShiftLeft,                        NI_VectorT128_ShiftLeft,                        NI_VectorT128_ShiftLeft,                        NI_VectorT128_ShiftLeft,                        NI_VectorT128_ShiftLeft,                        NI_Illegal,                                     NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ShiftRightArithmetic,                                   2,         {NI_VectorT128_ShiftRightArithmetic,            NI_Illegal,                                     NI_VectorT128_ShiftRightArithmetic,             NI_Illegal,                                     NI_VectorT128_ShiftRightArithmetic,             NI_Illegal,                                     NI_VectorT128_ShiftRightArithmetic,             NI_Illegal,                                     NI_Illegal,                                     NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ShiftRightLogical,                                      2,         {NI_VectorT128_ShiftRightLogical,               NI_VectorT128_ShiftRightLogical,                NI_VectorT128_ShiftRightLogical,                NI_VectorT128_ShiftRightLogical,                NI_VectorT128_ShiftRightLogical,                NI_VectorT128_ShiftRightLogical,                NI_VectorT128_ShiftRightLogical,                NI_VectorT128_ShiftRightLogical,                NI_Illegal,                                     NI_Illegal},                                    SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  SquareRoot,                                             1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_AdvSimd_Arm64_Sqrt,                          NI_AdvSimd_Arm64_Sqrt},                         SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_NM(VectorT128,  Sqrt,                       "SquareRoot",               1,         {NI_Illegal,                                    NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_Illegal,                                     NI_VectorT128_Sqrt,                             NI_VectorT128_Sqrt},                            SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Store,                                                  2,         {NI_VectorT128_Store,                           NI_VectorT128_Store,                            NI_VectorT128_Store,                            NI_VectorT128_Store,                            NI_VectorT128_Store,                            NI_VectorT128_Store,                            NI_VectorT128_Store,                            NI_VectorT128_Store,                            NI_VectorT128_Store,                            NI_VectorT128_Store},                           SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  StoreAligned,                                           2,         {NI_VectorT128_StoreAligned,                    NI_VectorT128_StoreAligned,                     NI_VectorT128_StoreAligned,                     NI_VectorT128_StoreAligned,                     NI_VectorT128_StoreAligned,                     NI_VectorT128_StoreAligned,                     NI_VectorT128_StoreAligned,                     NI_VectorT128_StoreAligned,                     NI_VectorT128_StoreAligned,                     NI_VectorT128_StoreAligned},                    SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  StoreAlignedNonTemporal,                                2,         {NI_VectorT128_StoreAlignedNonTemporal,         NI_VectorT128_StoreAlignedNonTemporal,          NI_VectorT128_StoreAlignedNonTemporal,          NI_VectorT128_StoreAlignedNonTemporal,          NI_VectorT128_StoreAlignedNonTemporal,          NI_VectorT128_StoreAlignedNonTemporal,          NI_VectorT128_StoreAlignedNonTemporal,          NI_VectorT128_StoreAlignedNonTemporal,          NI_VectorT128_StoreAlignedNonTemporal,          NI_VectorT128_StoreAlignedNonTemporal},         SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  StoreUnsafe,                                            2,         {NI_VectorT128_StoreUnsafe,                     NI_VectorT128_StoreUnsafe,                      NI_VectorT128_StoreUnsafe,                      NI_VectorT128_StoreUnsafe,                      NI_VectorT128_StoreUnsafe,                      NI_VectorT128_StoreUnsafe,                      NI_VectorT128_StoreUnsafe,                      NI_VectorT128_StoreUnsafe,                      NI_VectorT128_StoreUnsafe,                      NI_VectorT128_StoreUnsafe},                     SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(VectorT128,  StoreUnsafeIndex,           "StoreUnsafe",              3,         {NI_VectorT128_StoreUnsafeIndex,                NI_VectorT128_StoreUnsafeIndex,                 NI_VectorT128_StoreUnsafeIndex,                 NI_VectorT128_StoreUnsafeIndex,                 NI_VectorT128_StoreUnsafeIndex,                 NI_VectorT128_StoreUnsafeIndex,                 NI_VectorT128_StoreUnsafeIndex,                 NI_VectorT128_StoreUnsafeIndex,                 NI_VectorT128_StoreUnsafeIndex,                 NI_VectorT128_StoreUnsafeIndex},                SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Subtract,                                               2,         {NI_AdvSimd_Subtract,                           NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Subtract,                            NI_AdvSimd_Arm64_Subtract},                     SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Subtract,                                               2,         {NI_VectorT128_Subtract,                        NI_VectorT128_Subtract,                         NI_VectorT128_Subtract,                         NI_VectorT128_Subtract,                         NI_VectorT128_Subtract,                         NI_VectorT128_Subtract,                         NI_VectorT128_Subtract,                         NI_VectorT128_Subtract,                         NI_VectorT128_Subtract,                         NI_VectorT128_Subtract},                        SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Sum,                                                    1,         {NI_VectorT128_Sum,                             NI_VectorT128_Sum,                              NI_VectorT128_Sum,                              NI_VectorT128_Sum,                              NI_VectorT128_Sum,                              NI_VectorT128_Sum,                              NI_VectorT128_Sum,                              NI_VectorT128_Sum,                              NI_VectorT128_Sum,                              NI_VectorT128_Sum},                             SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ToScalar,                                               1,         {NI_VectorT128_ToScalar,                        NI_VectorT128_ToScalar,                         NI_VectorT128_ToScalar,                         NI_VectorT128_ToScalar,                         NI_VectorT128_ToScalar,                         NI_VectorT128_ToScalar,                         NI_VectorT128_ToScalar,                         NI_VectorT128_ToScalar,                         NI_VectorT128_ToScalar,                         NI_VectorT128_ToScalar},                        SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  WidenLower,                                             1,         {NI_VectorT128_WidenLower,                      NI_VectorT128_WidenLower,                       NI_VectorT128_WidenLower,                       NI_VectorT128_WidenLower,                       NI_VectorT128_WidenLower,                       NI_VectorT128_WidenLower,                       NI_VectorT128_WidenLower,                       NI_VectorT128_WidenLower,                       NI_VectorT128_WidenLower,                       NI_VectorT128_WidenLower},                      SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  WidenUpper,                                             1,         {NI_VectorT128_WidenUpper,                      NI_VectorT128_WidenUpper,                       NI_VectorT128_WidenUpper,                       NI_VectorT128_WidenUpper,                       NI_VectorT128_WidenUpper,                       NI_VectorT128_WidenUpper,                       NI_VectorT128_WidenUpper,                       NI_VectorT128_WidenUpper,                       NI_VectorT128_WidenUpper,                       NI_VectorT128_WidenUpper},                      SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  WithElement,                                            3,         {NI_VectorT128_WithElement,                     NI_VectorT128_WithElement,                      NI_VectorT128_WithElement,                      NI_VectorT128_WithElement,                      NI_VectorT128_WithElement,                      NI_VectorT128_WithElement,                      NI_VectorT128_WithElement,                      NI_VectorT128_WithElement,                      NI_VectorT128_WithElement,                      NI_VectorT128_WithElement},                     SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Xor,                                                    2,         {NI_AdvSimd_Xor,                                NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor,                                 NI_AdvSimd_Xor},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Xor,                                                    2,         {NI_VectorT128_Xor,                             NI_VectorT128_Xor,                              NI_VectorT128_Xor,                              NI_VectorT128_Xor,                              NI_VectorT128_Xor,                              NI_VectorT128_Xor,                              NI_VectorT128_Xor,                              NI_VectorT128_Xor,                              NI_VectorT128_Xor,                              NI_VectorT128_Xor},                             SimdAsHWIntrinsicFlag::None)
 
 #undef SIMD_AS_HWINTRINSIC_NM
 #undef SIMD_AS_HWINTRINSIC_ID
index 3fd2f87..acc43bd 100644 (file)
 SIMD_AS_HWINTRINSIC_ID(Vector2,     Abs,                                                    1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_Abs,                             NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_NM(Vector2,     Create,                     ".ctor",                    3,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_Create,                          NI_Illegal},                                SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector2,     CreateBroadcast,            ".ctor",                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_CreateBroadcast,                 NI_Illegal},                                SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     Dot,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector128_Dot,                           NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     Dot,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_Dot,                             NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector2,     get_One,                                                0,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_get_One,                         NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector2,     get_Zero,                                               0,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_get_Zero,                        NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     Max,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Max,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     Min,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Min,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Addition,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Add,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     Max,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_Max,                             NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     Min,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_Min,                             NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Addition,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_op_Addition,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Division,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_op_Division,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Equality,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector128_op_Equality,                   NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Inequality,                                          2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector128_op_Inequality,                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Multiply,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Multiply,                            NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Subtraction,                                         2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Subtract,                            NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector2,     SquareRoot,                                             1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Sqrt,                                NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Equality,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_op_Equality,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Inequality,                                          2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_op_Inequality,                   NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Multiply,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_op_Multiply,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_Subtraction,                                         2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_op_Subtraction,                  NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector2,     op_UnaryNegation,                                       1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_op_UnaryNegation,                NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_NM(Vector2,     Sqrt,                       "SquareRoot",               1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector2_Sqrt,                            NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //                     ISA          ID                          Name                        NumArg                                                                                                                                                                                                      Instructions                                                                                                                                                                                                                                           Flags
@@ -62,18 +63,19 @@ SIMD_AS_HWINTRINSIC_ID(Vector3,     Abs,
 SIMD_AS_HWINTRINSIC_NM(Vector3,     Create,                     ".ctor",                    4,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_Create,                          NI_Illegal},                                SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector3,     CreateBroadcast,            ".ctor",                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_CreateBroadcast,                 NI_Illegal},                                SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector3,     CreateFromVector2,          ".ctor",                    3,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_CreateFromVector2,               NI_Illegal},                                SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     Dot,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector128_Dot,                           NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     Dot,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_Dot,                             NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector3,     get_One,                                                0,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_get_One,                         NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector3,     get_Zero,                                               0,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_get_Zero,                        NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     Max,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Max,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     Min,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Min,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Addition,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Add,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     Max,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_Max,                             NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     Min,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_Min,                             NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Addition,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_op_Addition,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Division,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_op_Division,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Equality,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector128_op_Equality,                   NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Inequality,                                          2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector128_op_Inequality,                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Multiply,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Multiply,                            NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Subtraction,                                         2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Subtract,                            NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector3,     SquareRoot,                                             1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Sqrt,                                NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Equality,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_op_Equality,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Inequality,                                          2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_op_Inequality,                   NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Multiply,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_op_Multiply,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_Subtraction,                                         2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_op_Subtraction,                  NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector3,     op_UnaryNegation,                                       1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_op_UnaryNegation,                NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_NM(Vector3,     Sqrt,                       "SquareRoot",               1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector3_Sqrt,                            NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //                     ISA          ID                          Name                        NumArg                                                                                                                                                                                                      Instructions                                                                                                                                                                                                                                           Flags
@@ -85,18 +87,19 @@ SIMD_AS_HWINTRINSIC_NM(Vector4,     Create,                     ".ctor",
 SIMD_AS_HWINTRINSIC_NM(Vector4,     CreateBroadcast,            ".ctor",                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_CreateBroadcast,                 NI_Illegal},                                SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector4,     CreateFromVector2,          ".ctor",                    4,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_CreateFromVector2,               NI_Illegal},                                SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(Vector4,     CreateFromVector3,          ".ctor",                    3,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_CreateFromVector3,               NI_Illegal},                                SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     Dot,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector128_Dot,                           NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     Dot,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_Dot,                             NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector4,     get_One,                                                0,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_get_One,                         NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(Vector4,     get_Zero,                                               0,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_get_Zero,                        NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     Max,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Max,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     Min,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Min,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Addition,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Add,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Division,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Divide,                              NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Equality,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector128_op_Equality,                   NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Inequality,                                          2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector128_op_Inequality,                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Multiply,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Multiply,                            NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Subtraction,                                         2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Subtract,                            NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(Vector4,     SquareRoot,                                             1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Sqrt,                                NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     Max,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_Max,                             NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     Min,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_Min,                             NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Addition,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_op_Addition,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Division,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_op_Division,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Equality,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_op_Equality,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Inequality,                                          2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_op_Inequality,                   NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Multiply,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_op_Multiply,                     NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_Subtraction,                                         2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_op_Subtraction,                  NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(Vector4,     op_UnaryNegation,                                       1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_op_UnaryNegation,                NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_NM(Vector4,     Sqrt,                       "SquareRoot",               1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Vector4_Sqrt,                            NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //                     ISA          ID                          Name                        NumArg                                                                                                                                                                                                      Instructions                                                                                                                                                                                                                                           Flags
@@ -104,8 +107,8 @@ SIMD_AS_HWINTRINSIC_ID(Vector4,     SquareRoot,
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //  Vector<T> Intrinsics
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Abs,                                                    1,         {NI_VectorT128_Abs,                         NI_VectorT128_Abs,                          NI_VectorT128_Abs,                          NI_VectorT128_Abs,                          NI_VectorT128_Abs,                          NI_VectorT128_Abs,                          NI_VectorT128_Abs,                          NI_VectorT128_Abs,                          NI_VectorT128_Abs,                          NI_VectorT128_Abs},                         SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Add,                                                    2,         {NI_SSE2_Add,                               NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE_Add,                                 NI_SSE2_Add},                               SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  AndNot,                                                 2,         {NI_SSE2_AndNot,                            NI_SSE2_AndNot,                             NI_SSE2_AndNot,                             NI_SSE2_AndNot,                             NI_SSE2_AndNot,                             NI_SSE2_AndNot,                             NI_SSE2_AndNot,                             NI_SSE2_AndNot,                             NI_SSE_AndNot,                              NI_SSE2_AndNot},                            SimdAsHWIntrinsicFlag::NeedsOperandsSwapped | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Add,                                                    2,         {NI_VectorT128_Add,                         NI_VectorT128_Add,                          NI_VectorT128_Add,                          NI_VectorT128_Add,                          NI_VectorT128_Add,                          NI_VectorT128_Add,                          NI_VectorT128_Add,                          NI_VectorT128_Add,                          NI_VectorT128_Add,                          NI_VectorT128_Add},                         SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  AndNot,                                                 2,         {NI_VectorT128_AndNot,                      NI_VectorT128_AndNot,                       NI_VectorT128_AndNot,                       NI_VectorT128_AndNot,                       NI_VectorT128_AndNot,                       NI_VectorT128_AndNot,                       NI_VectorT128_AndNot,                       NI_VectorT128_AndNot,                       NI_VectorT128_AndNot,                       NI_VectorT128_AndNot},                      SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  As,                                                     1,         {NI_VectorT128_As,                          NI_VectorT128_As,                           NI_VectorT128_As,                           NI_VectorT128_As,                           NI_VectorT128_As,                           NI_VectorT128_As,                           NI_VectorT128_As,                           NI_VectorT128_As,                           NI_VectorT128_As,                           NI_VectorT128_As},                          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorByte,                                           1,         {NI_VectorT128_AsVectorByte,                NI_VectorT128_AsVectorByte,                 NI_VectorT128_AsVectorByte,                 NI_VectorT128_AsVectorByte,                 NI_VectorT128_AsVectorByte,                 NI_VectorT128_AsVectorByte,                 NI_VectorT128_AsVectorByte,                 NI_VectorT128_AsVectorByte,                 NI_VectorT128_AsVectorByte,                 NI_VectorT128_AsVectorByte},                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorDouble,                                         1,         {NI_VectorT128_AsVectorDouble,              NI_VectorT128_AsVectorDouble,               NI_VectorT128_AsVectorDouble,               NI_VectorT128_AsVectorDouble,               NI_VectorT128_AsVectorDouble,               NI_VectorT128_AsVectorDouble,               NI_VectorT128_AsVectorDouble,               NI_VectorT128_AsVectorDouble,               NI_VectorT128_AsVectorDouble,               NI_VectorT128_AsVectorDouble},              SimdAsHWIntrinsicFlag::None)
@@ -119,9 +122,9 @@ SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorSingle,
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorUInt16,                                         1,         {NI_VectorT128_AsVectorUInt16,              NI_VectorT128_AsVectorUInt16,               NI_VectorT128_AsVectorUInt16,               NI_VectorT128_AsVectorUInt16,               NI_VectorT128_AsVectorUInt16,               NI_VectorT128_AsVectorUInt16,               NI_VectorT128_AsVectorUInt16,               NI_VectorT128_AsVectorUInt16,               NI_VectorT128_AsVectorUInt16,               NI_VectorT128_AsVectorUInt16},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorUInt32,                                         1,         {NI_VectorT128_AsVectorUInt32,              NI_VectorT128_AsVectorUInt32,               NI_VectorT128_AsVectorUInt32,               NI_VectorT128_AsVectorUInt32,               NI_VectorT128_AsVectorUInt32,               NI_VectorT128_AsVectorUInt32,               NI_VectorT128_AsVectorUInt32,               NI_VectorT128_AsVectorUInt32,               NI_VectorT128_AsVectorUInt32,               NI_VectorT128_AsVectorUInt32},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  AsVectorUInt64,                                         1,         {NI_VectorT128_AsVectorUInt64,              NI_VectorT128_AsVectorUInt64,               NI_VectorT128_AsVectorUInt64,               NI_VectorT128_AsVectorUInt64,               NI_VectorT128_AsVectorUInt64,               NI_VectorT128_AsVectorUInt64,               NI_VectorT128_AsVectorUInt64,               NI_VectorT128_AsVectorUInt64,               NI_VectorT128_AsVectorUInt64,               NI_VectorT128_AsVectorUInt64},              SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  BitwiseAnd,                                             2,         {NI_SSE2_And,                               NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE_And,                                 NI_SSE2_And},                               SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  BitwiseOr,                                              2,         {NI_SSE2_Or,                                NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE_Or,                                  NI_SSE2_Or},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Ceiling,                                                1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE41_Ceiling,                           NI_SSE41_Ceiling},                          SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  BitwiseAnd,                                             2,         {NI_VectorT128_BitwiseAnd,                  NI_VectorT128_BitwiseAnd,                   NI_VectorT128_BitwiseAnd,                   NI_VectorT128_BitwiseAnd,                   NI_VectorT128_BitwiseAnd,                   NI_VectorT128_BitwiseAnd,                   NI_VectorT128_BitwiseAnd,                   NI_VectorT128_BitwiseAnd,                   NI_VectorT128_BitwiseAnd,                   NI_VectorT128_BitwiseAnd},                  SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  BitwiseOr,                                              2,         {NI_VectorT128_BitwiseOr,                   NI_VectorT128_BitwiseOr,                    NI_VectorT128_BitwiseOr,                    NI_VectorT128_BitwiseOr,                    NI_VectorT128_BitwiseOr,                    NI_VectorT128_BitwiseOr,                    NI_VectorT128_BitwiseOr,                    NI_VectorT128_BitwiseOr,                    NI_VectorT128_BitwiseOr,                    NI_VectorT128_BitwiseOr},                   SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Ceiling,                                                1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_Ceiling,                      NI_VectorT128_Ceiling},                     SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ConditionalSelect,                                      3,         {NI_VectorT128_ConditionalSelect,           NI_VectorT128_ConditionalSelect,            NI_VectorT128_ConditionalSelect,            NI_VectorT128_ConditionalSelect,            NI_VectorT128_ConditionalSelect,            NI_VectorT128_ConditionalSelect,            NI_VectorT128_ConditionalSelect,            NI_VectorT128_ConditionalSelect,            NI_VectorT128_ConditionalSelect,            NI_VectorT128_ConditionalSelect},           SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ConvertToDouble,                                        1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_ConvertToDouble,              NI_VectorT128_ConvertToDouble,              NI_Illegal,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ConvertToInt32,                                         1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_ConvertToInt32,               NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
@@ -131,27 +134,27 @@ SIMD_AS_HWINTRINSIC_ID(VectorT128,  ConvertToUInt32,
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ConvertToUInt64,                                        1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_ConvertToUInt64},             SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_NM(VectorT128,  CreateBroadcast,            ".ctor",                    2,         {NI_VectorT128_CreateBroadcast,             NI_VectorT128_CreateBroadcast,              NI_VectorT128_CreateBroadcast,              NI_VectorT128_CreateBroadcast,              NI_VectorT128_CreateBroadcast,              NI_VectorT128_CreateBroadcast,              NI_VectorT128_CreateBroadcast,              NI_VectorT128_CreateBroadcast,              NI_VectorT128_CreateBroadcast,              NI_VectorT128_CreateBroadcast},             SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Divide,                                                 2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_Divide,                       NI_VectorT128_Divide},                      SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Dot,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Vector128_Dot,                           NI_Vector128_Dot,                           NI_VectorT128_Dot,                          NI_VectorT128_Dot,                          NI_Illegal,                                 NI_Illegal,                                 NI_Vector128_Dot,                           NI_Vector128_Dot},                          SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Equals,                                                 2,         {NI_SSE2_CompareEqual,                      NI_SSE2_CompareEqual,                       NI_SSE2_CompareEqual,                       NI_SSE2_CompareEqual,                       NI_SSE2_CompareEqual,                       NI_SSE2_CompareEqual,                       NI_VectorT128_Equals,                       NI_VectorT128_Equals,                       NI_SSE_CompareEqual,                        NI_SSE2_CompareEqual},                      SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Dot,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT128_Dot,                          NI_VectorT128_Dot,                          NI_VectorT128_Dot,                          NI_VectorT128_Dot,                          NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_Dot,                          NI_VectorT128_Dot},                         SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Equals,                                                 2,         {NI_VectorT128_Equals,                      NI_VectorT128_Equals,                       NI_VectorT128_Equals,                       NI_VectorT128_Equals,                       NI_VectorT128_Equals,                       NI_VectorT128_Equals,                       NI_VectorT128_Equals,                       NI_VectorT128_Equals,                       NI_VectorT128_Equals,                       NI_VectorT128_Equals},                      SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  EqualsAll,                                              2,         {NI_VectorT128_EqualsAll,                   NI_VectorT128_EqualsAll,                    NI_VectorT128_EqualsAll,                    NI_VectorT128_EqualsAll,                    NI_VectorT128_EqualsAll,                    NI_VectorT128_EqualsAll,                    NI_VectorT128_EqualsAll,                    NI_VectorT128_EqualsAll,                    NI_VectorT128_EqualsAll,                    NI_VectorT128_EqualsAll},                   SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  EqualsAny,                                              2,         {NI_VectorT128_EqualsAny,                   NI_VectorT128_EqualsAny,                    NI_VectorT128_EqualsAny,                    NI_VectorT128_EqualsAny,                    NI_VectorT128_EqualsAny,                    NI_VectorT128_EqualsAny,                    NI_VectorT128_EqualsAny,                    NI_VectorT128_EqualsAny,                    NI_VectorT128_EqualsAny,                    NI_VectorT128_EqualsAny},                   SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Floor,                                                  1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE41_Floor,                             NI_SSE41_Floor},                            SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Floor,                                                  1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_Floor,                        NI_VectorT128_Floor},                       SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  get_AllBitsSet,                                         0,         {NI_VectorT128_get_AllBitsSet,              NI_VectorT128_get_AllBitsSet,               NI_VectorT128_get_AllBitsSet,               NI_VectorT128_get_AllBitsSet,               NI_VectorT128_get_AllBitsSet,               NI_VectorT128_get_AllBitsSet,               NI_VectorT128_get_AllBitsSet,               NI_VectorT128_get_AllBitsSet,               NI_VectorT128_get_AllBitsSet,               NI_VectorT128_get_AllBitsSet},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  get_Count,                                              0,         {NI_VectorT128_get_Count,                   NI_VectorT128_get_Count,                    NI_VectorT128_get_Count,                    NI_VectorT128_get_Count,                    NI_VectorT128_get_Count,                    NI_VectorT128_get_Count,                    NI_VectorT128_get_Count,                    NI_VectorT128_get_Count,                    NI_VectorT128_get_Count,                    NI_VectorT128_get_Count},                   SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  get_Item,                                               2,         {NI_VectorT128_get_Item,                    NI_VectorT128_get_Item,                     NI_VectorT128_get_Item,                     NI_VectorT128_get_Item,                     NI_VectorT128_get_Item,                     NI_VectorT128_get_Item,                     NI_VectorT128_get_Item,                     NI_VectorT128_get_Item,                     NI_VectorT128_get_Item,                     NI_VectorT128_get_Item},                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::BaseTypeFromThisArg)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  get_One,                                                0,         {NI_VectorT128_get_One,                     NI_VectorT128_get_One,                      NI_VectorT128_get_One,                      NI_VectorT128_get_One,                      NI_VectorT128_get_One,                      NI_VectorT128_get_One,                      NI_VectorT128_get_One,                      NI_VectorT128_get_One,                      NI_VectorT128_get_One,                      NI_VectorT128_get_One},                     SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  get_Zero,                                               0,         {NI_VectorT128_get_Zero,                    NI_VectorT128_get_Zero,                     NI_VectorT128_get_Zero,                     NI_VectorT128_get_Zero,                     NI_VectorT128_get_Zero,                     NI_VectorT128_get_Zero,                     NI_VectorT128_get_Zero,                     NI_VectorT128_get_Zero,                     NI_VectorT128_get_Zero,                     NI_VectorT128_get_Zero},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  GetElement,                                             2,         {NI_VectorT128_GetElement,                  NI_VectorT128_GetElement,                   NI_VectorT128_GetElement,                   NI_VectorT128_GetElement,                   NI_VectorT128_GetElement,                   NI_VectorT128_GetElement,                   NI_VectorT128_GetElement,                   NI_VectorT128_GetElement,                   NI_VectorT128_GetElement,                   NI_VectorT128_GetElement},                  SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThan,                                            2,         {NI_SSE2_CompareGreaterThan,                NI_VectorT128_GreaterThan,                  NI_SSE2_CompareGreaterThan,                 NI_VectorT128_GreaterThan,                  NI_SSE2_CompareGreaterThan,                 NI_VectorT128_GreaterThan,                  NI_VectorT128_GreaterThan,                  NI_VectorT128_GreaterThan,                  NI_SSE_CompareGreaterThan,                  NI_SSE2_CompareGreaterThan},                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThan,                                            2,         {NI_VectorT128_GreaterThan,                 NI_VectorT128_GreaterThan,                  NI_VectorT128_GreaterThan,                  NI_VectorT128_GreaterThan,                  NI_VectorT128_GreaterThan,                  NI_VectorT128_GreaterThan,                  NI_VectorT128_GreaterThan,                  NI_VectorT128_GreaterThan,                  NI_VectorT128_GreaterThan,                  NI_VectorT128_GreaterThan},                 SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanAll,                                         2,         {NI_VectorT128_GreaterThanAll,              NI_VectorT128_GreaterThanAll,               NI_VectorT128_GreaterThanAll,               NI_VectorT128_GreaterThanAll,               NI_VectorT128_GreaterThanAll,               NI_VectorT128_GreaterThanAll,               NI_VectorT128_GreaterThanAll,               NI_VectorT128_GreaterThanAll,               NI_VectorT128_GreaterThanAll,               NI_VectorT128_GreaterThanAll},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanAny,                                         2,         {NI_VectorT128_GreaterThanAny,              NI_VectorT128_GreaterThanAny,               NI_VectorT128_GreaterThanAny,               NI_VectorT128_GreaterThanAny,               NI_VectorT128_GreaterThanAny,               NI_VectorT128_GreaterThanAny,               NI_VectorT128_GreaterThanAny,               NI_VectorT128_GreaterThanAny,               NI_VectorT128_GreaterThanAny,               NI_VectorT128_GreaterThanAny},              SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanOrEqual,                                     2,         {NI_VectorT128_GreaterThanOrEqual,          NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_SSE_CompareGreaterThanOrEqual,           NI_SSE2_CompareGreaterThanOrEqual},         SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanOrEqual,                                     2,         {NI_VectorT128_GreaterThanOrEqual,          NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual,           NI_VectorT128_GreaterThanOrEqual},          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanOrEqualAll,                                  2,         {NI_VectorT128_GreaterThanOrEqualAll,       NI_VectorT128_GreaterThanOrEqualAll,        NI_VectorT128_GreaterThanOrEqualAll,        NI_VectorT128_GreaterThanOrEqualAll,        NI_VectorT128_GreaterThanOrEqualAll,        NI_VectorT128_GreaterThanOrEqualAll,        NI_VectorT128_GreaterThanOrEqualAll,        NI_VectorT128_GreaterThanOrEqualAll,        NI_VectorT128_GreaterThanOrEqualAll,        NI_VectorT128_GreaterThanOrEqualAll},       SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  GreaterThanOrEqualAny,                                  2,         {NI_VectorT128_GreaterThanOrEqualAny,       NI_VectorT128_GreaterThanOrEqualAny,        NI_VectorT128_GreaterThanOrEqualAny,        NI_VectorT128_GreaterThanOrEqualAny,        NI_VectorT128_GreaterThanOrEqualAny,        NI_VectorT128_GreaterThanOrEqualAny,        NI_VectorT128_GreaterThanOrEqualAny,        NI_VectorT128_GreaterThanOrEqualAny,        NI_VectorT128_GreaterThanOrEqualAny,        NI_VectorT128_GreaterThanOrEqualAny},       SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThan,                                               2,         {NI_SSE2_CompareLessThan,                   NI_VectorT128_LessThan,                     NI_SSE2_CompareLessThan,                    NI_VectorT128_LessThan,                     NI_SSE2_CompareLessThan,                    NI_VectorT128_LessThan,                     NI_VectorT128_LessThan,                     NI_VectorT128_LessThan,                     NI_SSE_CompareLessThan,                     NI_SSE2_CompareLessThan},                   SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThan,                                               2,         {NI_VectorT128_LessThan,                    NI_VectorT128_LessThan,                     NI_VectorT128_LessThan,                     NI_VectorT128_LessThan,                     NI_VectorT128_LessThan,                     NI_VectorT128_LessThan,                     NI_VectorT128_LessThan,                     NI_VectorT128_LessThan,                     NI_VectorT128_LessThan,                     NI_VectorT128_LessThan},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanAll,                                            2,         {NI_VectorT128_LessThanAll,                 NI_VectorT128_LessThanAll,                  NI_VectorT128_LessThanAll,                  NI_VectorT128_LessThanAll,                  NI_VectorT128_LessThanAll,                  NI_VectorT128_LessThanAll,                  NI_VectorT128_LessThanAll,                  NI_VectorT128_LessThanAll,                  NI_VectorT128_LessThanAll,                  NI_VectorT128_LessThanAll},                 SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanAny,                                            2,         {NI_VectorT128_LessThanAny,                 NI_VectorT128_LessThanAny,                  NI_VectorT128_LessThanAny,                  NI_VectorT128_LessThanAny,                  NI_VectorT128_LessThanAny,                  NI_VectorT128_LessThanAny,                  NI_VectorT128_LessThanAny,                  NI_VectorT128_LessThanAny,                  NI_VectorT128_LessThanAny,                  NI_VectorT128_LessThanAny},                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanOrEqual,                                        2,         {NI_VectorT128_LessThanOrEqual,             NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_SSE_CompareLessThanOrEqual,              NI_SSE2_CompareLessThanOrEqual},            SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanOrEqual,                                        2,         {NI_VectorT128_LessThanOrEqual,             NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual,              NI_VectorT128_LessThanOrEqual},             SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanOrEqualAll,                                     2,         {NI_VectorT128_LessThanOrEqualAll,          NI_VectorT128_LessThanOrEqualAll,           NI_VectorT128_LessThanOrEqualAll,           NI_VectorT128_LessThanOrEqualAll,           NI_VectorT128_LessThanOrEqualAll,           NI_VectorT128_LessThanOrEqualAll,           NI_VectorT128_LessThanOrEqualAll,           NI_VectorT128_LessThanOrEqualAll,           NI_VectorT128_LessThanOrEqualAll,           NI_VectorT128_LessThanOrEqualAll},          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LessThanOrEqualAny,                                     2,         {NI_VectorT128_LessThanOrEqualAny,          NI_VectorT128_LessThanOrEqualAny,           NI_VectorT128_LessThanOrEqualAny,           NI_VectorT128_LessThanOrEqualAny,           NI_VectorT128_LessThanOrEqualAny,           NI_VectorT128_LessThanOrEqualAny,           NI_VectorT128_LessThanOrEqualAny,           NI_VectorT128_LessThanOrEqualAny,           NI_VectorT128_LessThanOrEqualAny,           NI_VectorT128_LessThanOrEqualAny},          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Load,                                                   1,         {NI_VectorT128_Load,                        NI_VectorT128_Load,                         NI_VectorT128_Load,                         NI_VectorT128_Load,                         NI_VectorT128_Load,                         NI_VectorT128_Load,                         NI_VectorT128_Load,                         NI_VectorT128_Load,                         NI_VectorT128_Load,                         NI_VectorT128_Load},                        SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
@@ -159,53 +162,53 @@ SIMD_AS_HWINTRINSIC_ID(VectorT128,  LoadAligned,
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LoadAlignedNonTemporal,                                 1,         {NI_VectorT128_LoadAlignedNonTemporal,      NI_VectorT128_LoadAlignedNonTemporal,       NI_VectorT128_LoadAlignedNonTemporal,       NI_VectorT128_LoadAlignedNonTemporal,       NI_VectorT128_LoadAlignedNonTemporal,       NI_VectorT128_LoadAlignedNonTemporal,       NI_VectorT128_LoadAlignedNonTemporal,       NI_VectorT128_LoadAlignedNonTemporal,       NI_VectorT128_LoadAlignedNonTemporal,       NI_VectorT128_LoadAlignedNonTemporal},      SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  LoadUnsafe,                                             1,         {NI_VectorT128_LoadUnsafe,                  NI_VectorT128_LoadUnsafe,                   NI_VectorT128_LoadUnsafe,                   NI_VectorT128_LoadUnsafe,                   NI_VectorT128_LoadUnsafe,                   NI_VectorT128_LoadUnsafe,                   NI_VectorT128_LoadUnsafe,                   NI_VectorT128_LoadUnsafe,                   NI_VectorT128_LoadUnsafe,                   NI_VectorT128_LoadUnsafe},                  SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
 SIMD_AS_HWINTRINSIC_NM(VectorT128,  LoadUnsafeIndex,            "LoadUnsafe",               2,         {NI_VectorT128_LoadUnsafeIndex,             NI_VectorT128_LoadUnsafeIndex,              NI_VectorT128_LoadUnsafeIndex,              NI_VectorT128_LoadUnsafeIndex,              NI_VectorT128_LoadUnsafeIndex,              NI_VectorT128_LoadUnsafeIndex,              NI_VectorT128_LoadUnsafeIndex,              NI_VectorT128_LoadUnsafeIndex,              NI_VectorT128_LoadUnsafeIndex,              NI_VectorT128_LoadUnsafeIndex},             SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Max,                                                    2,         {NI_VectorT128_Max,                         NI_SSE2_Max,                                NI_SSE2_Max,                                NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_SSE_Max,                                 NI_SSE2_Max},                               SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Min,                                                    2,         {NI_VectorT128_Min,                         NI_SSE2_Min,                                NI_SSE2_Min,                                NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_SSE_Min,                                 NI_SSE2_Min},                               SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Max,                                                    2,         {NI_VectorT128_Max,                         NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_VectorT128_Max,                          NI_VectorT128_Max},                         SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Min,                                                    2,         {NI_VectorT128_Min,                         NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_VectorT128_Min,                          NI_VectorT128_Min},                         SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Multiply,                                               2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT128_Multiply,                     NI_VectorT128_Multiply,                     NI_VectorT128_Multiply,                     NI_VectorT128_Multiply,                     NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_Multiply,                     NI_VectorT128_Multiply},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Narrow,                                                 2,         {NI_VectorT128_Narrow,                      NI_VectorT128_Narrow,                       NI_VectorT128_Narrow,                       NI_VectorT128_Narrow,                       NI_VectorT128_Narrow,                       NI_VectorT128_Narrow,                       NI_VectorT128_Narrow,                       NI_VectorT128_Narrow,                       NI_VectorT128_Narrow,                       NI_VectorT128_Narrow},                      SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Negate,                                                 2,         {NI_VectorT128_Negate,                      NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate},                      SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  OnesComplement,                                         2,         {NI_VectorT128_OnesComplement,              NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement},              SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Addition,                                            2,         {NI_SSE2_Add,                               NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE2_Add,                                NI_SSE_Add,                                 NI_SSE2_Add},                               SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_BitwiseAnd,                                          2,         {NI_SSE2_And,                               NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE2_And,                                NI_SSE_And,                                 NI_SSE2_And},                               SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_BitwiseOr,                                           2,         {NI_SSE2_Or,                                NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE2_Or,                                 NI_SSE_Or,                                  NI_SSE2_Or},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Negate,                                                 1,         {NI_VectorT128_Negate,                      NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate,                       NI_VectorT128_Negate},                      SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  OnesComplement,                                         1,         {NI_VectorT128_OnesComplement,              NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement,               NI_VectorT128_OnesComplement},              SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Addition,                                            2,         {NI_VectorT128_op_Addition,                 NI_VectorT128_op_Addition,                  NI_VectorT128_op_Addition,                  NI_VectorT128_op_Addition,                  NI_VectorT128_op_Addition,                  NI_VectorT128_op_Addition,                  NI_VectorT128_op_Addition,                  NI_VectorT128_op_Addition,                  NI_VectorT128_op_Addition,                  NI_VectorT128_op_Addition},                 SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_BitwiseAnd,                                          2,         {NI_VectorT128_op_BitwiseAnd,               NI_VectorT128_op_BitwiseAnd,                NI_VectorT128_op_BitwiseAnd,                NI_VectorT128_op_BitwiseAnd,                NI_VectorT128_op_BitwiseAnd,                NI_VectorT128_op_BitwiseAnd,                NI_VectorT128_op_BitwiseAnd,                NI_VectorT128_op_BitwiseAnd,                NI_VectorT128_op_BitwiseAnd,                NI_VectorT128_op_BitwiseAnd},               SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_BitwiseOr,                                           2,         {NI_VectorT128_op_BitwiseOr,                NI_VectorT128_op_BitwiseOr,                 NI_VectorT128_op_BitwiseOr,                 NI_VectorT128_op_BitwiseOr,                 NI_VectorT128_op_BitwiseOr,                 NI_VectorT128_op_BitwiseOr,                 NI_VectorT128_op_BitwiseOr,                 NI_VectorT128_op_BitwiseOr,                 NI_VectorT128_op_BitwiseOr,                 NI_VectorT128_op_BitwiseOr},                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Division,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_op_Division,                  NI_VectorT128_op_Division},                 SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Equality,                                            2,         {NI_VectorT128_op_Equality,                 NI_VectorT128_op_Equality,                  NI_VectorT128_op_Equality,                  NI_VectorT128_op_Equality,                  NI_VectorT128_op_Equality,                  NI_VectorT128_op_Equality,                  NI_VectorT128_op_Equality,                  NI_VectorT128_op_Equality,                  NI_VectorT128_op_Equality,                  NI_VectorT128_op_Equality},                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_ExclusiveOr,                                         2,         {NI_SSE2_Xor,                               NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE_Xor,                                 NI_SSE2_Xor},                               SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_ExclusiveOr,                                         2,         {NI_VectorT128_op_ExclusiveOr,              NI_VectorT128_op_ExclusiveOr,               NI_VectorT128_op_ExclusiveOr,               NI_VectorT128_op_ExclusiveOr,               NI_VectorT128_op_ExclusiveOr,               NI_VectorT128_op_ExclusiveOr,               NI_VectorT128_op_ExclusiveOr,               NI_VectorT128_op_ExclusiveOr,               NI_VectorT128_op_ExclusiveOr,               NI_VectorT128_op_ExclusiveOr},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Explicit,                                            1,         {NI_VectorT128_op_Explicit,                 NI_VectorT128_op_Explicit,                  NI_VectorT128_op_Explicit,                  NI_VectorT128_op_Explicit,                  NI_VectorT128_op_Explicit,                  NI_VectorT128_op_Explicit,                  NI_VectorT128_op_Explicit,                  NI_VectorT128_op_Explicit,                  NI_VectorT128_op_Explicit,                  NI_VectorT128_op_Explicit},                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Inequality,                                          2,         {NI_Vector128_op_Inequality,                NI_Vector128_op_Inequality,                 NI_Vector128_op_Inequality,                 NI_Vector128_op_Inequality,                 NI_Vector128_op_Inequality,                 NI_Vector128_op_Inequality,                 NI_Vector128_op_Inequality,                 NI_Vector128_op_Inequality,                 NI_Vector128_op_Inequality,                 NI_Vector128_op_Inequality},                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Inequality,                                          2,         {NI_VectorT128_op_Inequality,               NI_VectorT128_op_Inequality,                NI_VectorT128_op_Inequality,                NI_VectorT128_op_Inequality,                NI_VectorT128_op_Inequality,                NI_VectorT128_op_Inequality,                NI_VectorT128_op_Inequality,                NI_VectorT128_op_Inequality,                NI_VectorT128_op_Inequality,                NI_VectorT128_op_Inequality},               SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_LeftShift,                                           2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT128_op_LeftShift,                 NI_VectorT128_op_LeftShift,                 NI_VectorT128_op_LeftShift,                 NI_VectorT128_op_LeftShift,                 NI_VectorT128_op_LeftShift,                 NI_VectorT128_op_LeftShift,                 NI_VectorT128_op_LeftShift,                 NI_VectorT128_op_LeftShift},                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Multiply,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT128_op_Multiply,                  NI_VectorT128_op_Multiply,                  NI_VectorT128_op_Multiply,                  NI_VectorT128_op_Multiply,                  NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_op_Multiply,                  NI_VectorT128_op_Multiply},                 SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_OnesComplement,                                      2,         {NI_VectorT128_op_OnesComplement,           NI_VectorT128_op_OnesComplement,            NI_VectorT128_op_OnesComplement,            NI_VectorT128_op_OnesComplement,            NI_VectorT128_op_OnesComplement,            NI_VectorT128_op_OnesComplement,            NI_VectorT128_op_OnesComplement,            NI_VectorT128_op_OnesComplement,            NI_VectorT128_op_OnesComplement,            NI_VectorT128_op_OnesComplement},           SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_RightShift,                                          2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT128_op_RightShift,                NI_VectorT128_op_RightShift,                NI_VectorT128_op_RightShift,                NI_VectorT128_op_RightShift,                NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_op_RightShift,                NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Subtraction,                                         2,         {NI_SSE2_Subtract,                          NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE_Subtract,                            NI_SSE2_Subtract},                          SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_UnaryNegation,                                       2,         {NI_VectorT128_op_UnaryNegation,            NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation},            SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_UnaryPlus,                                           2,         {NI_VectorT128_op_UnaryPlus,                NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus},                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_Subtraction,                                         2,         {NI_VectorT128_op_Subtraction,              NI_VectorT128_op_Subtraction,               NI_VectorT128_op_Subtraction,               NI_VectorT128_op_Subtraction,               NI_VectorT128_op_Subtraction,               NI_VectorT128_op_Subtraction,               NI_VectorT128_op_Subtraction,               NI_VectorT128_op_Subtraction,               NI_VectorT128_op_Subtraction,               NI_VectorT128_op_Subtraction},              SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_UnaryNegation,                                       1,         {NI_VectorT128_op_UnaryNegation,            NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation,             NI_VectorT128_op_UnaryNegation},            SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_UnaryPlus,                                           1,         {NI_VectorT128_op_UnaryPlus,                NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus,                 NI_VectorT128_op_UnaryPlus},                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  op_UnsignedRightShift,                                  2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT128_op_UnsignedRightShift,        NI_VectorT128_op_UnsignedRightShift,        NI_VectorT128_op_UnsignedRightShift,        NI_VectorT128_op_UnsignedRightShift,        NI_VectorT128_op_UnsignedRightShift,        NI_VectorT128_op_UnsignedRightShift,        NI_VectorT128_op_UnsignedRightShift,        NI_VectorT128_op_UnsignedRightShift},       SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ShiftLeft,                                              2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT128_ShiftLeft,                    NI_VectorT128_ShiftLeft,                    NI_VectorT128_ShiftLeft,                    NI_VectorT128_ShiftLeft,                    NI_VectorT128_ShiftLeft,                    NI_VectorT128_ShiftLeft,                    NI_Illegal,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ShiftRightArithmetic,                                   2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT128_ShiftRightArithmetic,         NI_Illegal,                                 NI_VectorT128_ShiftRightArithmetic,         NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ShiftRightLogical,                                      2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT128_ShiftRightLogical,            NI_VectorT128_ShiftRightLogical,            NI_VectorT128_ShiftRightLogical,            NI_VectorT128_ShiftRightLogical,            NI_VectorT128_ShiftRightLogical,            NI_VectorT128_ShiftRightLogical,            NI_Illegal,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  SquareRoot,                                             1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_SSE_Sqrt,                                NI_SSE2_Sqrt},                              SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_NM(VectorT128,  Sqrt,                       "SquareRoot",               1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_Sqrt,                         NI_VectorT128_Sqrt},                        SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Store,                                                  2,         {NI_VectorT128_Store,                       NI_VectorT128_Store,                        NI_VectorT128_Store,                        NI_VectorT128_Store,                        NI_VectorT128_Store,                        NI_VectorT128_Store,                        NI_VectorT128_Store,                        NI_VectorT128_Store,                        NI_VectorT128_Store,                        NI_VectorT128_Store},                       SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  StoreAligned,                                           2,         {NI_VectorT128_StoreAligned,                NI_VectorT128_StoreAligned,                 NI_VectorT128_StoreAligned,                 NI_VectorT128_StoreAligned,                 NI_VectorT128_StoreAligned,                 NI_VectorT128_StoreAligned,                 NI_VectorT128_StoreAligned,                 NI_VectorT128_StoreAligned,                 NI_VectorT128_StoreAligned,                 NI_VectorT128_StoreAligned},                SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  StoreAlignedNonTemporal,                                2,         {NI_VectorT128_StoreAlignedNonTemporal,     NI_VectorT128_StoreAlignedNonTemporal,      NI_VectorT128_StoreAlignedNonTemporal,      NI_VectorT128_StoreAlignedNonTemporal,      NI_VectorT128_StoreAlignedNonTemporal,      NI_VectorT128_StoreAlignedNonTemporal,      NI_VectorT128_StoreAlignedNonTemporal,      NI_VectorT128_StoreAlignedNonTemporal,      NI_VectorT128_StoreAlignedNonTemporal,      NI_VectorT128_StoreAlignedNonTemporal},     SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  StoreUnsafe,                                           -1,         {NI_VectorT128_StoreUnsafe,                 NI_VectorT128_StoreUnsafe,                  NI_VectorT128_StoreUnsafe,                  NI_VectorT128_StoreUnsafe,                  NI_VectorT128_StoreUnsafe,                  NI_VectorT128_StoreUnsafe,                  NI_VectorT128_StoreUnsafe,                  NI_VectorT128_StoreUnsafe,                  NI_VectorT128_StoreUnsafe,                  NI_VectorT128_StoreUnsafe},                 SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_NM(VectorT128,  StoreUnsafeIndex,           "StoreUnsafe",              3,         {NI_VectorT128_StoreUnsafeIndex,            NI_VectorT128_StoreUnsafeIndex,             NI_VectorT128_StoreUnsafeIndex,             NI_VectorT128_StoreUnsafeIndex,             NI_VectorT128_StoreUnsafeIndex,             NI_VectorT128_StoreUnsafeIndex,             NI_VectorT128_StoreUnsafeIndex,             NI_VectorT128_StoreUnsafeIndex,             NI_VectorT128_StoreUnsafeIndex,             NI_VectorT128_StoreUnsafeIndex},            SimdAsHWIntrinsicFlag::SpillSideEffectsOp1 | SimdAsHWIntrinsicFlag::SpillSideEffectsOp2)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Subtract,                                               2,         {NI_SSE2_Subtract,                          NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE2_Subtract,                           NI_SSE_Subtract,                            NI_SSE2_Subtract},                          SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Subtract,                                               2,         {NI_VectorT128_Subtract,                    NI_VectorT128_Subtract,                     NI_VectorT128_Subtract,                     NI_VectorT128_Subtract,                     NI_VectorT128_Subtract,                     NI_VectorT128_Subtract,                     NI_VectorT128_Subtract,                     NI_VectorT128_Subtract,                     NI_VectorT128_Subtract,                     NI_VectorT128_Subtract},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  Sum,                                                    1,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT128_Sum,                          NI_VectorT128_Sum,                          NI_VectorT128_Sum,                          NI_VectorT128_Sum,                          NI_Illegal,                                 NI_Illegal,                                 NI_VectorT128_Sum,                          NI_VectorT128_Sum},                         SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  ToScalar,                                               1,         {NI_VectorT128_ToScalar,                    NI_VectorT128_ToScalar,                     NI_VectorT128_ToScalar,                     NI_VectorT128_ToScalar,                     NI_VectorT128_ToScalar,                     NI_VectorT128_ToScalar,                     NI_VectorT128_ToScalar,                     NI_VectorT128_ToScalar,                     NI_VectorT128_ToScalar,                     NI_VectorT128_ToScalar},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  WidenLower,                                             1,         {NI_VectorT128_WidenLower,                  NI_VectorT128_WidenLower,                   NI_VectorT128_WidenLower,                   NI_VectorT128_WidenLower,                   NI_VectorT128_WidenLower,                   NI_VectorT128_WidenLower,                   NI_VectorT128_WidenLower,                   NI_VectorT128_WidenLower,                   NI_VectorT128_WidenLower,                   NI_VectorT128_WidenLower},                  SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  WidenUpper,                                             1,         {NI_VectorT128_WidenUpper,                  NI_VectorT128_WidenUpper,                   NI_VectorT128_WidenUpper,                   NI_VectorT128_WidenUpper,                   NI_VectorT128_WidenUpper,                   NI_VectorT128_WidenUpper,                   NI_VectorT128_WidenUpper,                   NI_VectorT128_WidenUpper,                   NI_VectorT128_WidenUpper,                   NI_VectorT128_WidenUpper},                  SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT128,  WithElement,                                            3,         {NI_VectorT128_WithElement,                 NI_VectorT128_WithElement,                  NI_VectorT128_WithElement,                  NI_VectorT128_WithElement,                  NI_VectorT128_WithElement,                  NI_VectorT128_WithElement,                  NI_VectorT128_WithElement,                  NI_VectorT128_WithElement,                  NI_VectorT128_WithElement,                  NI_VectorT128_WithElement},                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT128,  Xor,                                                    2,         {NI_SSE2_Xor,                               NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE2_Xor,                                NI_SSE_Xor,                                 NI_SSE2_Xor},                               SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT128,  Xor,                                                    2,         {NI_VectorT128_Xor,                         NI_VectorT128_Xor,                          NI_VectorT128_Xor,                          NI_VectorT128_Xor,                          NI_VectorT128_Xor,                          NI_VectorT128_Xor,                          NI_VectorT128_Xor,                          NI_VectorT128_Xor,                          NI_VectorT128_Xor,                          NI_VectorT128_Xor},                         SimdAsHWIntrinsicFlag::None)
 
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //                     ISA          ID                          Name                        NumArg                                                                                                                                                                                                      Instructions                                                                                                                                                                                                                                           Flags
 //                                                                                                     {TYP_BYTE,                                  TYP_UBYTE,                                  TYP_SHORT,                                  TYP_USHORT,                                 TYP_INT,                                    TYP_UINT,                                   TYP_LONG,                                   TYP_ULONG,                                  TYP_FLOAT,                                  TYP_DOUBLE}
 // *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
 //  Vector<T> Intrinsics
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Abs,                                                    1,         {NI_AVX2_Abs,                               NI_VectorT256_Abs,                          NI_AVX2_Abs,                                NI_VectorT256_Abs,                          NI_AVX2_Abs,                                NI_VectorT256_Abs,                          NI_VectorT256_Abs,                          NI_VectorT256_Abs,                          NI_VectorT256_Abs,                          NI_VectorT256_Abs},                         SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Add,                                                    2,         {NI_AVX2_Add,                               NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX_Add,                                 NI_AVX_Add},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  AndNot,                                                 2,         {NI_AVX2_AndNot,                            NI_AVX2_AndNot,                             NI_AVX2_AndNot,                             NI_AVX2_AndNot,                             NI_AVX2_AndNot,                             NI_AVX2_AndNot,                             NI_AVX2_AndNot,                             NI_AVX2_AndNot,                             NI_AVX_AndNot,                              NI_AVX_AndNot},                             SimdAsHWIntrinsicFlag::NeedsOperandsSwapped | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Abs,                                                    1,         {NI_VectorT256_Abs,                         NI_VectorT256_Abs,                          NI_VectorT256_Abs,                          NI_VectorT256_Abs,                          NI_VectorT256_Abs,                          NI_VectorT256_Abs,                          NI_VectorT256_Abs,                          NI_VectorT256_Abs,                          NI_VectorT256_Abs,                          NI_VectorT256_Abs},                         SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Add,                                                    2,         {NI_VectorT256_Add,                         NI_VectorT256_Add,                          NI_VectorT256_Add,                          NI_VectorT256_Add,                          NI_VectorT256_Add,                          NI_VectorT256_Add,                          NI_VectorT256_Add,                          NI_VectorT256_Add,                          NI_VectorT256_Add,                          NI_VectorT256_Add},                         SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  AndNot,                                                 2,         {NI_VectorT256_AndNot,                      NI_VectorT256_AndNot,                       NI_VectorT256_AndNot,                       NI_VectorT256_AndNot,                       NI_VectorT256_AndNot,                       NI_VectorT256_AndNot,                       NI_VectorT256_AndNot,                       NI_VectorT256_AndNot,                       NI_VectorT256_AndNot,                       NI_VectorT256_AndNot},                      SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  As,                                                     1,         {NI_VectorT256_As,                          NI_VectorT256_As,                           NI_VectorT256_As,                           NI_VectorT256_As,                           NI_VectorT256_As,                           NI_VectorT256_As,                           NI_VectorT256_As,                           NI_VectorT256_As,                           NI_VectorT256_As,                           NI_VectorT256_As},                          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  AsVectorByte,                                           1,         {NI_VectorT256_AsVectorByte,                NI_VectorT256_AsVectorByte,                 NI_VectorT256_AsVectorByte,                 NI_VectorT256_AsVectorByte,                 NI_VectorT256_AsVectorByte,                 NI_VectorT256_AsVectorByte,                 NI_VectorT256_AsVectorByte,                 NI_VectorT256_AsVectorByte,                 NI_VectorT256_AsVectorByte,                 NI_VectorT256_AsVectorByte},                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  AsVectorDouble,                                         1,         {NI_VectorT256_AsVectorDouble,              NI_VectorT256_AsVectorDouble,               NI_VectorT256_AsVectorDouble,               NI_VectorT256_AsVectorDouble,               NI_VectorT256_AsVectorDouble,               NI_VectorT256_AsVectorDouble,               NI_VectorT256_AsVectorDouble,               NI_VectorT256_AsVectorDouble,               NI_VectorT256_AsVectorDouble,               NI_VectorT256_AsVectorDouble},              SimdAsHWIntrinsicFlag::None)
@@ -219,9 +222,9 @@ SIMD_AS_HWINTRINSIC_ID(VectorT256,  AsVectorSingle,
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  AsVectorUInt16,                                         1,         {NI_VectorT256_AsVectorUInt16,              NI_VectorT256_AsVectorUInt16,               NI_VectorT256_AsVectorUInt16,               NI_VectorT256_AsVectorUInt16,               NI_VectorT256_AsVectorUInt16,               NI_VectorT256_AsVectorUInt16,               NI_VectorT256_AsVectorUInt16,               NI_VectorT256_AsVectorUInt16,               NI_VectorT256_AsVectorUInt16,               NI_VectorT256_AsVectorUInt16},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  AsVectorUInt32,                                         1,         {NI_VectorT256_AsVectorUInt32,              NI_VectorT256_AsVectorUInt32,               NI_VectorT256_AsVectorUInt32,               NI_VectorT256_AsVectorUInt32,               NI_VectorT256_AsVectorUInt32,               NI_VectorT256_AsVectorUInt32,               NI_VectorT256_AsVectorUInt32,               NI_VectorT256_AsVectorUInt32,               NI_VectorT256_AsVectorUInt32,               NI_VectorT256_AsVectorUInt32},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  AsVectorUInt64,                                         1,         {NI_VectorT256_AsVectorUInt64,              NI_VectorT256_AsVectorUInt64,               NI_VectorT256_AsVectorUInt64,               NI_VectorT256_AsVectorUInt64,               NI_VectorT256_AsVectorUInt64,               NI_VectorT256_AsVectorUInt64,               NI_VectorT256_AsVectorUInt64,               NI_VectorT256_AsVectorUInt64,               NI_VectorT256_AsVectorUInt64,               NI_VectorT256_AsVectorUInt64},              SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  BitwiseAnd,                                             2,         {NI_AVX2_And,                               NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX_And,                                 NI_AVX_And},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  BitwiseOr,                                              2,         {NI_AVX2_Or,                                NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX_Or,                                  NI_AVX_Or},                                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Ceiling,                                                1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_AVX_Ceiling,                             NI_AVX_Ceiling},                            SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  BitwiseAnd,                                             2,         {NI_VectorT256_BitwiseAnd,                  NI_VectorT256_BitwiseAnd,                   NI_VectorT256_BitwiseAnd,                   NI_VectorT256_BitwiseAnd,                   NI_VectorT256_BitwiseAnd,                   NI_VectorT256_BitwiseAnd,                   NI_VectorT256_BitwiseAnd,                   NI_VectorT256_BitwiseAnd,                   NI_VectorT256_BitwiseAnd,                   NI_VectorT256_BitwiseAnd},                  SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  BitwiseOr,                                              2,         {NI_VectorT256_BitwiseOr,                   NI_VectorT256_BitwiseOr,                    NI_VectorT256_BitwiseOr,                    NI_VectorT256_BitwiseOr,                    NI_VectorT256_BitwiseOr,                    NI_VectorT256_BitwiseOr,                    NI_VectorT256_BitwiseOr,                    NI_VectorT256_BitwiseOr,                    NI_VectorT256_BitwiseOr,                    NI_VectorT256_BitwiseOr},                   SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Ceiling,                                                1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_Ceiling,                      NI_VectorT256_Ceiling},                     SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  ConditionalSelect,                                      3,         {NI_VectorT256_ConditionalSelect,           NI_VectorT256_ConditionalSelect,            NI_VectorT256_ConditionalSelect,            NI_VectorT256_ConditionalSelect,            NI_VectorT256_ConditionalSelect,            NI_VectorT256_ConditionalSelect,            NI_VectorT256_ConditionalSelect,            NI_VectorT256_ConditionalSelect,            NI_VectorT256_ConditionalSelect,            NI_VectorT256_ConditionalSelect},           SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  ConvertToDouble,                                        1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_ConvertToDouble,              NI_VectorT256_ConvertToDouble,              NI_Illegal,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  ConvertToInt32,                                         1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_ConvertToInt32,               NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
@@ -231,27 +234,27 @@ SIMD_AS_HWINTRINSIC_ID(VectorT256,  ConvertToUInt32,
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  ConvertToUInt64,                                        1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_ConvertToUInt64},             SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_NM(VectorT256,  CreateBroadcast,            ".ctor",                    2,         {NI_VectorT256_CreateBroadcast,             NI_VectorT256_CreateBroadcast,              NI_VectorT256_CreateBroadcast,              NI_VectorT256_CreateBroadcast,              NI_VectorT256_CreateBroadcast,              NI_VectorT256_CreateBroadcast,              NI_VectorT256_CreateBroadcast,              NI_VectorT256_CreateBroadcast,              NI_VectorT256_CreateBroadcast,              NI_VectorT256_CreateBroadcast},             SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  Divide,                                                 2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_Divide,                       NI_VectorT256_Divide},                      SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Dot,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_Vector256_Dot,                           NI_Vector256_Dot,                           NI_Vector256_Dot,                           NI_Vector256_Dot,                           NI_Illegal,                                 NI_Illegal,                                 NI_Vector256_Dot,                           NI_Vector256_Dot},                          SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Equals,                                                 2,         {NI_AVX2_CompareEqual,                      NI_AVX2_CompareEqual,                       NI_AVX2_CompareEqual,                       NI_AVX2_CompareEqual,                       NI_AVX2_CompareEqual,                       NI_AVX2_CompareEqual,                       NI_AVX2_CompareEqual,                       NI_AVX2_CompareEqual,                       NI_AVX_CompareEqual,                        NI_AVX_CompareEqual},                       SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Dot,                                                    2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT256_Dot,                          NI_VectorT256_Dot,                          NI_VectorT256_Dot,                          NI_VectorT256_Dot,                          NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_Dot,                          NI_VectorT256_Dot},                         SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Equals,                                                 2,         {NI_VectorT256_Equals,                      NI_VectorT256_Equals,                       NI_VectorT256_Equals,                       NI_VectorT256_Equals,                       NI_VectorT256_Equals,                       NI_VectorT256_Equals,                       NI_VectorT256_Equals,                       NI_VectorT256_Equals,                       NI_VectorT256_Equals,                       NI_VectorT256_Equals},                      SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  EqualsAll,                                              2,         {NI_VectorT256_EqualsAll,                   NI_VectorT256_EqualsAll,                    NI_VectorT256_EqualsAll,                    NI_VectorT256_EqualsAll,                    NI_VectorT256_EqualsAll,                    NI_VectorT256_EqualsAll,                    NI_VectorT256_EqualsAll,                    NI_VectorT256_EqualsAll,                    NI_VectorT256_EqualsAll,                    NI_VectorT256_EqualsAll},                   SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  EqualsAny,                                              2,         {NI_VectorT256_EqualsAny,                   NI_VectorT256_EqualsAny,                    NI_VectorT256_EqualsAny,                    NI_VectorT256_EqualsAny,                    NI_VectorT256_EqualsAny,                    NI_VectorT256_EqualsAny,                    NI_VectorT256_EqualsAny,                    NI_VectorT256_EqualsAny,                    NI_VectorT256_EqualsAny,                    NI_VectorT256_EqualsAny},                   SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Floor,                                                  1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_AVX_Floor,                               NI_AVX_Floor},                              SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Floor,                                                  1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_Floor,                        NI_VectorT256_Floor},                       SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  get_AllBitsSet,                                         0,         {NI_VectorT256_get_AllBitsSet,              NI_VectorT256_get_AllBitsSet,               NI_VectorT256_get_AllBitsSet,               NI_VectorT256_get_AllBitsSet,               NI_VectorT256_get_AllBitsSet,               NI_VectorT256_get_AllBitsSet,               NI_VectorT256_get_AllBitsSet,               NI_VectorT256_get_AllBitsSet,               NI_VectorT256_get_AllBitsSet,               NI_VectorT256_get_AllBitsSet},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  get_Count,                                              0,         {NI_VectorT256_get_Count,                   NI_VectorT256_get_Count,                    NI_VectorT256_get_Count,                    NI_VectorT256_get_Count,                    NI_VectorT256_get_Count,                    NI_VectorT256_get_Count,                    NI_VectorT256_get_Count,                    NI_VectorT256_get_Count,                    NI_VectorT256_get_Count,                    NI_VectorT256_get_Count},                   SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  get_Item,                                               2,         {NI_VectorT256_get_Item,                    NI_VectorT256_get_Item,                     NI_VectorT256_get_Item,                     NI_VectorT256_get_Item,                     NI_VectorT256_get_Item,                     NI_VectorT256_get_Item,                     NI_VectorT256_get_Item,                     NI_VectorT256_get_Item,                     NI_VectorT256_get_Item,                     NI_VectorT256_get_Item},                    SimdAsHWIntrinsicFlag::InstanceMethod | SimdAsHWIntrinsicFlag::BaseTypeFromThisArg)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  get_One,                                                0,         {NI_VectorT256_get_One,                     NI_VectorT256_get_One,                      NI_VectorT256_get_One,                      NI_VectorT256_get_One,                      NI_VectorT256_get_One,                      NI_VectorT256_get_One,                      NI_VectorT256_get_One,                      NI_VectorT256_get_One,                      NI_VectorT256_get_One,                      NI_VectorT256_get_One},                     SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  get_Zero,                                               0,         {NI_VectorT256_get_Zero,                    NI_VectorT256_get_Zero,                     NI_VectorT256_get_Zero,                     NI_VectorT256_get_Zero,                     NI_VectorT256_get_Zero,                     NI_VectorT256_get_Zero,                     NI_VectorT256_get_Zero,                     NI_VectorT256_get_Zero,                     NI_VectorT256_get_Zero,                     NI_VectorT256_get_Zero},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  GetElement,                                             2,         {NI_VectorT256_GetElement,                  NI_VectorT256_GetElement,                   NI_VectorT256_GetElement,                   NI_VectorT256_GetElement,                   NI_VectorT256_GetElement,                   NI_VectorT256_GetElement,                   NI_VectorT256_GetElement,                   NI_VectorT256_GetElement,                   NI_VectorT256_GetElement,                   NI_VectorT256_GetElement},                  SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  GreaterThan,                                            2,         {NI_AVX2_CompareGreaterThan,                NI_VectorT256_GreaterThan,                  NI_AVX2_CompareGreaterThan,                 NI_VectorT256_GreaterThan,                  NI_AVX2_CompareGreaterThan,                 NI_VectorT256_GreaterThan,                  NI_AVX2_CompareGreaterThan,                 NI_VectorT256_GreaterThan,                  NI_AVX_CompareGreaterThan,                  NI_AVX_CompareGreaterThan},                 SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  GreaterThan,                                            2,         {NI_VectorT256_GreaterThan,                 NI_VectorT256_GreaterThan,                  NI_VectorT256_GreaterThan,                  NI_VectorT256_GreaterThan,                  NI_VectorT256_GreaterThan,                  NI_VectorT256_GreaterThan,                  NI_VectorT256_GreaterThan,                  NI_VectorT256_GreaterThan,                  NI_VectorT256_GreaterThan,                  NI_VectorT256_GreaterThan},                 SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  GreaterThanAll,                                         2,         {NI_VectorT256_GreaterThanAll,              NI_VectorT256_GreaterThanAll,               NI_VectorT256_GreaterThanAll,               NI_VectorT256_GreaterThanAll,               NI_VectorT256_GreaterThanAll,               NI_VectorT256_GreaterThanAll,               NI_VectorT256_GreaterThanAll,               NI_VectorT256_GreaterThanAll,               NI_VectorT256_GreaterThanAll,               NI_VectorT256_GreaterThanAll},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  GreaterThanAny,                                         2,         {NI_VectorT256_GreaterThanAny,              NI_VectorT256_GreaterThanAny,               NI_VectorT256_GreaterThanAny,               NI_VectorT256_GreaterThanAny,               NI_VectorT256_GreaterThanAny,               NI_VectorT256_GreaterThanAny,               NI_VectorT256_GreaterThanAny,               NI_VectorT256_GreaterThanAny,               NI_VectorT256_GreaterThanAny,               NI_VectorT256_GreaterThanAny},              SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  GreaterThanOrEqual,                                     2,         {NI_VectorT256_GreaterThanOrEqual,          NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_AVX_CompareGreaterThanOrEqual,           NI_AVX_CompareGreaterThanOrEqual},          SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  GreaterThanOrEqual,                                     2,         {NI_VectorT256_GreaterThanOrEqual,          NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual,           NI_VectorT256_GreaterThanOrEqual},          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  GreaterThanOrEqualAll,                                  2,         {NI_VectorT256_GreaterThanOrEqualAll,       NI_VectorT256_GreaterThanOrEqualAll,        NI_VectorT256_GreaterThanOrEqualAll,        NI_VectorT256_GreaterThanOrEqualAll,        NI_VectorT256_GreaterThanOrEqualAll,        NI_VectorT256_GreaterThanOrEqualAll,        NI_VectorT256_GreaterThanOrEqualAll,        NI_VectorT256_GreaterThanOrEqualAll,        NI_VectorT256_GreaterThanOrEqualAll,        NI_VectorT256_GreaterThanOrEqualAll},       SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  GreaterThanOrEqualAny,                                  2,         {NI_VectorT256_GreaterThanOrEqualAny,       NI_VectorT256_GreaterThanOrEqualAny,        NI_VectorT256_GreaterThanOrEqualAny,        NI_VectorT256_GreaterThanOrEqualAny,        NI_VectorT256_GreaterThanOrEqualAny,        NI_VectorT256_GreaterThanOrEqualAny,        NI_VectorT256_GreaterThanOrEqualAny,        NI_VectorT256_GreaterThanOrEqualAny,        NI_VectorT256_GreaterThanOrEqualAny,        NI_VectorT256_GreaterThanOrEqualAny},       SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  LessThan,                                               2,         {NI_AVX2_CompareLessThan,                   NI_VectorT256_LessThan,                     NI_AVX2_CompareLessThan,                    NI_VectorT256_LessThan,                     NI_AVX2_CompareLessThan,                    NI_VectorT256_LessThan,                     NI_AVX2_CompareLessThan,                    NI_VectorT256_LessThan,                     NI_AVX_CompareLessThan,                     NI_AVX_CompareLessThan},                    SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  LessThan,                                               2,         {NI_VectorT256_LessThan,                    NI_VectorT256_LessThan,                     NI_VectorT256_LessThan,                     NI_VectorT256_LessThan,                     NI_VectorT256_LessThan,                     NI_VectorT256_LessThan,                     NI_VectorT256_LessThan,                     NI_VectorT256_LessThan,                     NI_VectorT256_LessThan,                     NI_VectorT256_LessThan},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  LessThanAll,                                            2,         {NI_VectorT256_LessThanAll,                 NI_VectorT256_LessThanAll,                  NI_VectorT256_LessThanAll,                  NI_VectorT256_LessThanAll,                  NI_VectorT256_LessThanAll,                  NI_VectorT256_LessThanAll,                  NI_VectorT256_LessThanAll,                  NI_VectorT256_LessThanAll,                  NI_VectorT256_LessThanAll,                  NI_VectorT256_LessThanAll},                 SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  LessThanAny,                                            2,         {NI_VectorT256_LessThanAny,                 NI_VectorT256_LessThanAny,                  NI_VectorT256_LessThanAny,                  NI_VectorT256_LessThanAny,                  NI_VectorT256_LessThanAny,                  NI_VectorT256_LessThanAny,                  NI_VectorT256_LessThanAny,                  NI_VectorT256_LessThanAny,                  NI_VectorT256_LessThanAny,                  NI_VectorT256_LessThanAny},                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  LessThanOrEqual,                                        2,         {NI_VectorT256_LessThanOrEqual,             NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_AVX_CompareLessThanOrEqual,              NI_AVX_CompareLessThanOrEqual},             SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  LessThanOrEqual,                                        2,         {NI_VectorT256_LessThanOrEqual,             NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual,              NI_VectorT256_LessThanOrEqual},             SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  LessThanOrEqualAll,                                     2,         {NI_VectorT256_LessThanOrEqualAll,          NI_VectorT256_LessThanOrEqualAll,           NI_VectorT256_LessThanOrEqualAll,           NI_VectorT256_LessThanOrEqualAll,           NI_VectorT256_LessThanOrEqualAll,           NI_VectorT256_LessThanOrEqualAll,           NI_VectorT256_LessThanOrEqualAll,           NI_VectorT256_LessThanOrEqualAll,           NI_VectorT256_LessThanOrEqualAll,           NI_VectorT256_LessThanOrEqualAll},          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  LessThanOrEqualAny,                                     2,         {NI_VectorT256_LessThanOrEqualAny,          NI_VectorT256_LessThanOrEqualAny,           NI_VectorT256_LessThanOrEqualAny,           NI_VectorT256_LessThanOrEqualAny,           NI_VectorT256_LessThanOrEqualAny,           NI_VectorT256_LessThanOrEqualAny,           NI_VectorT256_LessThanOrEqualAny,           NI_VectorT256_LessThanOrEqualAny,           NI_VectorT256_LessThanOrEqualAny,           NI_VectorT256_LessThanOrEqualAny},          SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  Load,                                                   1,         {NI_VectorT256_Load,                        NI_VectorT256_Load,                         NI_VectorT256_Load,                         NI_VectorT256_Load,                         NI_VectorT256_Load,                         NI_VectorT256_Load,                         NI_VectorT256_Load,                         NI_VectorT256_Load,                         NI_VectorT256_Load,                         NI_VectorT256_Load},                        SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
@@ -259,44 +262,44 @@ SIMD_AS_HWINTRINSIC_ID(VectorT256,  LoadAligned,
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  LoadAlignedNonTemporal,                                 1,         {NI_VectorT256_LoadAlignedNonTemporal,      NI_VectorT256_LoadAlignedNonTemporal,       NI_VectorT256_LoadAlignedNonTemporal,       NI_VectorT256_LoadAlignedNonTemporal,       NI_VectorT256_LoadAlignedNonTemporal,       NI_VectorT256_LoadAlignedNonTemporal,       NI_VectorT256_LoadAlignedNonTemporal,       NI_VectorT256_LoadAlignedNonTemporal,       NI_VectorT256_LoadAlignedNonTemporal,       NI_VectorT256_LoadAlignedNonTemporal},      SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  LoadUnsafe,                                             1,         {NI_VectorT256_LoadUnsafe,                  NI_VectorT256_LoadUnsafe,                   NI_VectorT256_LoadUnsafe,                   NI_VectorT256_LoadUnsafe,                   NI_VectorT256_LoadUnsafe,                   NI_VectorT256_LoadUnsafe,                   NI_VectorT256_LoadUnsafe,                   NI_VectorT256_LoadUnsafe,                   NI_VectorT256_LoadUnsafe,                   NI_VectorT256_LoadUnsafe},                  SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
 SIMD_AS_HWINTRINSIC_NM(VectorT256,  LoadUnsafeIndex,            "LoadUnsafe",               2,         {NI_VectorT256_LoadUnsafeIndex,             NI_VectorT256_LoadUnsafeIndex,              NI_VectorT256_LoadUnsafeIndex,              NI_VectorT256_LoadUnsafeIndex,              NI_VectorT256_LoadUnsafeIndex,              NI_VectorT256_LoadUnsafeIndex,              NI_VectorT256_LoadUnsafeIndex,              NI_VectorT256_LoadUnsafeIndex,              NI_VectorT256_LoadUnsafeIndex,              NI_VectorT256_LoadUnsafeIndex},             SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Max,                                                    2,         {NI_AVX2_Max,                               NI_AVX2_Max,                                NI_AVX2_Max,                                NI_AVX2_Max,                                NI_AVX2_Max,                                NI_AVX2_Max,                                NI_VectorT256_Max,                          NI_VectorT256_Max,                          NI_AVX_Max,                                 NI_AVX_Max},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Min,                                                    2,         {NI_AVX2_Min,                               NI_AVX2_Min,                                NI_AVX2_Min,                                NI_AVX2_Min,                                NI_AVX2_Min,                                NI_AVX2_Min,                                NI_VectorT256_Min,                          NI_VectorT256_Min,                          NI_AVX_Min,                                 NI_AVX_Min},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Min,                                                    2,         {NI_VectorT256_Min,                         NI_VectorT256_Min,                          NI_VectorT256_Min,                          NI_VectorT256_Min,                          NI_VectorT256_Min,                          NI_VectorT256_Min,                          NI_VectorT256_Min,                          NI_VectorT256_Min,                          NI_VectorT256_Min,                          NI_VectorT256_Min},                         SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Max,                                                    2,         {NI_VectorT256_Max,                         NI_VectorT256_Max,                          NI_VectorT256_Max,                          NI_VectorT256_Max,                          NI_VectorT256_Max,                          NI_VectorT256_Max,                          NI_VectorT256_Max,                          NI_VectorT256_Max,                          NI_VectorT256_Max,                          NI_VectorT256_Max},                         SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  Multiply,                                               2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT256_Multiply,                     NI_VectorT256_Multiply,                     NI_VectorT256_Multiply,                     NI_VectorT256_Multiply,                     NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_Multiply,                     NI_VectorT256_Multiply},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  Narrow,                                                 2,         {NI_VectorT256_Narrow,                      NI_VectorT256_Narrow,                       NI_VectorT256_Narrow,                       NI_VectorT256_Narrow,                       NI_VectorT256_Narrow,                       NI_VectorT256_Narrow,                       NI_VectorT256_Narrow,                       NI_VectorT256_Narrow,                       NI_VectorT256_Narrow,                       NI_VectorT256_Narrow},                      SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Negate,                                                 2,         {NI_VectorT256_Negate,                      NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate},                      SimdAsHWIntrinsicFlag::KeepBaseTypeFromRet)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Negate,                                                 1,         {NI_VectorT256_Negate,                      NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate,                       NI_VectorT256_Negate},                      SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  OnesComplement,                                         2,         {NI_VectorT256_OnesComplement,              NI_VectorT256_OnesComplement,               NI_VectorT256_OnesComplement,               NI_VectorT256_OnesComplement,               NI_VectorT256_OnesComplement,               NI_VectorT256_OnesComplement,               NI_VectorT256_OnesComplement,               NI_VectorT256_OnesComplement,               NI_VectorT256_OnesComplement,               NI_VectorT256_OnesComplement},              SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_Addition,                                            2,         {NI_AVX2_Add,                               NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX2_Add,                                NI_AVX_Add,                                 NI_AVX_Add},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_BitwiseAnd,                                          2,         {NI_AVX2_And,                               NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX2_And,                                NI_AVX_And,                                 NI_AVX_And},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_BitwiseOr,                                           2,         {NI_AVX2_Or,                                NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX2_Or,                                 NI_AVX_Or,                                  NI_AVX_Or},                                 SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_Addition,                                            2,         {NI_VectorT256_op_Addition,                 NI_VectorT256_op_Addition,                  NI_VectorT256_op_Addition,                  NI_VectorT256_op_Addition,                  NI_VectorT256_op_Addition,                  NI_VectorT256_op_Addition,                  NI_VectorT256_op_Addition,                  NI_VectorT256_op_Addition,                  NI_VectorT256_op_Addition,                  NI_VectorT256_op_Addition},                 SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_BitwiseAnd,                                          2,         {NI_VectorT256_op_BitwiseAnd,               NI_VectorT256_op_BitwiseAnd,                NI_VectorT256_op_BitwiseAnd,                NI_VectorT256_op_BitwiseAnd,                NI_VectorT256_op_BitwiseAnd,                NI_VectorT256_op_BitwiseAnd,                NI_VectorT256_op_BitwiseAnd,                NI_VectorT256_op_BitwiseAnd,                NI_VectorT256_op_BitwiseAnd,                NI_VectorT256_op_BitwiseAnd},               SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_BitwiseOr,                                           2,         {NI_VectorT256_op_BitwiseOr,                NI_VectorT256_op_BitwiseOr,                 NI_VectorT256_op_BitwiseOr,                 NI_VectorT256_op_BitwiseOr,                 NI_VectorT256_op_BitwiseOr,                 NI_VectorT256_op_BitwiseOr,                 NI_VectorT256_op_BitwiseOr,                 NI_VectorT256_op_BitwiseOr,                 NI_VectorT256_op_BitwiseOr,                 NI_VectorT256_op_BitwiseOr},                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_Division,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_op_Division,                  NI_VectorT256_op_Division},                 SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_Equality,                                            2,         {NI_VectorT256_op_Equality,                 NI_VectorT256_op_Equality,                  NI_VectorT256_op_Equality,                  NI_VectorT256_op_Equality,                  NI_VectorT256_op_Equality,                  NI_VectorT256_op_Equality,                  NI_VectorT256_op_Equality,                  NI_VectorT256_op_Equality,                  NI_VectorT256_op_Equality,                  NI_VectorT256_op_Equality},                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_ExclusiveOr,                                         2,         {NI_AVX2_Xor,                               NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX_Xor,                                 NI_AVX_Xor},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_ExclusiveOr,                                         2,         {NI_VectorT256_op_ExclusiveOr,              NI_VectorT256_op_ExclusiveOr,               NI_VectorT256_op_ExclusiveOr,               NI_VectorT256_op_ExclusiveOr,               NI_VectorT256_op_ExclusiveOr,               NI_VectorT256_op_ExclusiveOr,               NI_VectorT256_op_ExclusiveOr,               NI_VectorT256_op_ExclusiveOr,               NI_VectorT256_op_ExclusiveOr,               NI_VectorT256_op_ExclusiveOr},              SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_Explicit,                                            1,         {NI_VectorT256_op_Explicit,                 NI_VectorT256_op_Explicit,                  NI_VectorT256_op_Explicit,                  NI_VectorT256_op_Explicit,                  NI_VectorT256_op_Explicit,                  NI_VectorT256_op_Explicit,                  NI_VectorT256_op_Explicit,                  NI_VectorT256_op_Explicit,                  NI_VectorT256_op_Explicit,                  NI_VectorT256_op_Explicit},                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_Inequality,                                          2,         {NI_Vector256_op_Inequality,                NI_Vector256_op_Inequality,                 NI_Vector256_op_Inequality,                 NI_Vector256_op_Inequality,                 NI_Vector256_op_Inequality,                 NI_Vector256_op_Inequality,                 NI_Vector256_op_Inequality,                 NI_Vector256_op_Inequality,                 NI_Vector256_op_Inequality,                 NI_Vector256_op_Inequality},                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_Inequality,                                          2,         {NI_VectorT256_op_Inequality,               NI_VectorT256_op_Inequality,                NI_VectorT256_op_Inequality,                NI_VectorT256_op_Inequality,                NI_VectorT256_op_Inequality,                NI_VectorT256_op_Inequality,                NI_VectorT256_op_Inequality,                NI_VectorT256_op_Inequality,                NI_VectorT256_op_Inequality,                NI_VectorT256_op_Inequality},               SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_LeftShift,                                           2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT256_op_LeftShift,                 NI_VectorT256_op_LeftShift,                 NI_VectorT256_op_LeftShift,                 NI_VectorT256_op_LeftShift,                 NI_VectorT256_op_LeftShift,                 NI_VectorT256_op_LeftShift,                 NI_VectorT256_op_LeftShift,                 NI_VectorT256_op_LeftShift},                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_Multiply,                                            2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT256_op_Multiply,                  NI_VectorT256_op_Multiply,                  NI_VectorT256_op_Multiply,                  NI_VectorT256_op_Multiply,                  NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_op_Multiply,                  NI_VectorT256_op_Multiply},                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_OnesComplement,                                      2,         {NI_VectorT256_op_OnesComplement,           NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement},           SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_OnesComplement,                                      1,         {NI_VectorT256_op_OnesComplement,           NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement,            NI_VectorT256_op_OnesComplement},           SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_RightShift,                                          2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT256_op_RightShift,                NI_VectorT256_op_RightShift,                NI_VectorT256_op_RightShift,                NI_VectorT256_op_RightShift,                NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_op_RightShift,                NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_Subtraction,                                         2,         {NI_AVX2_Subtract,                          NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX_Subtract,                            NI_AVX_Subtract},                           SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_UnaryNegation,                                       2,         {NI_VectorT256_op_UnaryNegation,            NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation},            SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_UnaryPlus,                                           2,         {NI_VectorT256_op_UnaryPlus,                NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus},                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_Subtraction,                                         2,         {NI_VectorT256_op_Subtraction,              NI_VectorT256_op_Subtraction,               NI_VectorT256_op_Subtraction,               NI_VectorT256_op_Subtraction,               NI_VectorT256_op_Subtraction,               NI_VectorT256_op_Subtraction,               NI_VectorT256_op_Subtraction,               NI_VectorT256_op_Subtraction,               NI_VectorT256_op_Subtraction,               NI_VectorT256_op_Subtraction},              SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_UnaryNegation,                                       1,         {NI_VectorT256_op_UnaryNegation,            NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation,             NI_VectorT256_op_UnaryNegation},            SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_UnaryPlus,                                           1,         {NI_VectorT256_op_UnaryPlus,                NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus,                 NI_VectorT256_op_UnaryPlus},                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  op_UnsignedRightShift,                                  2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT256_op_UnsignedRightShift,        NI_VectorT256_op_UnsignedRightShift,        NI_VectorT256_op_UnsignedRightShift,        NI_VectorT256_op_UnsignedRightShift,        NI_VectorT256_op_UnsignedRightShift,        NI_VectorT256_op_UnsignedRightShift,        NI_VectorT256_op_UnsignedRightShift,        NI_VectorT256_op_UnsignedRightShift},       SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  ShiftLeft,                                              2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT256_ShiftLeft,                    NI_VectorT256_ShiftLeft,                    NI_VectorT256_ShiftLeft,                    NI_VectorT256_ShiftLeft,                    NI_VectorT256_ShiftLeft,                    NI_VectorT256_ShiftLeft,                    NI_Illegal,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  ShiftRightArithmetic,                                   2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT256_ShiftRightArithmetic,         NI_Illegal,                                 NI_VectorT256_ShiftRightArithmetic,         NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  ShiftRightLogical,                                      2,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT256_ShiftRightLogical,            NI_VectorT256_ShiftRightLogical,            NI_VectorT256_ShiftRightLogical,            NI_VectorT256_ShiftRightLogical,            NI_VectorT256_ShiftRightLogical,            NI_VectorT256_ShiftRightLogical,            NI_Illegal,                                 NI_Illegal},                                SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  SquareRoot,                                             1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_AVX_Sqrt,                                NI_AVX_Sqrt},                               SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_NM(VectorT256,  Sqrt,                       "SquareRoot",               1,         {NI_Illegal,                                NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_Sqrt,                         NI_VectorT256_Sqrt},                        SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  Store,                                                  2,         {NI_VectorT256_Store,                       NI_VectorT256_Store,                        NI_VectorT256_Store,                        NI_VectorT256_Store,                        NI_VectorT256_Store,                        NI_VectorT256_Store,                        NI_VectorT256_Store,                        NI_VectorT256_Store,                        NI_VectorT256_Store,                        NI_VectorT256_Store},                       SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  StoreAligned,                                           2,         {NI_VectorT256_StoreAligned,                NI_VectorT256_StoreAligned,                 NI_VectorT256_StoreAligned,                 NI_VectorT256_StoreAligned,                 NI_VectorT256_StoreAligned,                 NI_VectorT256_StoreAligned,                 NI_VectorT256_StoreAligned,                 NI_VectorT256_StoreAligned,                 NI_VectorT256_StoreAligned,                 NI_VectorT256_StoreAligned},                SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  StoreAlignedNonTemporal,                                2,         {NI_VectorT256_StoreAlignedNonTemporal,     NI_VectorT256_StoreAlignedNonTemporal,      NI_VectorT256_StoreAlignedNonTemporal,      NI_VectorT256_StoreAlignedNonTemporal,      NI_VectorT256_StoreAlignedNonTemporal,      NI_VectorT256_StoreAlignedNonTemporal,      NI_VectorT256_StoreAlignedNonTemporal,      NI_VectorT256_StoreAlignedNonTemporal,      NI_VectorT256_StoreAlignedNonTemporal,      NI_VectorT256_StoreAlignedNonTemporal},     SimdAsHWIntrinsicFlag::SpillSideEffectsOp1)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  StoreUnsafe,                                            2,         {NI_VectorT256_StoreUnsafe,                 NI_VectorT256_StoreUnsafe,                  NI_VectorT256_StoreUnsafe,                  NI_VectorT256_StoreUnsafe,                  NI_VectorT256_StoreUnsafe,                  NI_VectorT256_StoreUnsafe,                  NI_VectorT256_StoreUnsafe,                  NI_VectorT256_StoreUnsafe,                  NI_VectorT256_StoreUnsafe,                  NI_VectorT256_StoreUnsafe},                 SimdAsHWIntrinsicFlag::SpillSideEffectsOp1 | SimdAsHWIntrinsicFlag::SpillSideEffectsOp2)
 SIMD_AS_HWINTRINSIC_NM(VectorT256,  StoreUnsafeIndex,           "StoreUnsafe",              3,         {NI_VectorT256_StoreUnsafeIndex,            NI_VectorT256_StoreUnsafeIndex,             NI_VectorT256_StoreUnsafeIndex,             NI_VectorT256_StoreUnsafeIndex,             NI_VectorT256_StoreUnsafeIndex,             NI_VectorT256_StoreUnsafeIndex,             NI_VectorT256_StoreUnsafeIndex,             NI_VectorT256_StoreUnsafeIndex,             NI_VectorT256_StoreUnsafeIndex,             NI_VectorT256_StoreUnsafeIndex},            SimdAsHWIntrinsicFlag::SpillSideEffectsOp1 | SimdAsHWIntrinsicFlag::SpillSideEffectsOp2)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Subtract,                                               2,         {NI_AVX2_Subtract,                          NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX2_Subtract,                           NI_AVX_Subtract,                            NI_AVX_Subtract},                           SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Subtract,                                               2,         {NI_VectorT256_Subtract,                    NI_VectorT256_Subtract,                     NI_VectorT256_Subtract,                     NI_VectorT256_Subtract,                     NI_VectorT256_Subtract,                     NI_VectorT256_Subtract,                     NI_VectorT256_Subtract,                     NI_VectorT256_Subtract,                     NI_VectorT256_Subtract,                     NI_VectorT256_Subtract},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  Sum,                                                    1,         {NI_Illegal,                                NI_Illegal,                                 NI_VectorT256_Sum,                          NI_VectorT256_Sum,                          NI_VectorT256_Sum,                          NI_VectorT256_Sum,                          NI_Illegal,                                 NI_Illegal,                                 NI_VectorT256_Sum,                          NI_VectorT256_Sum},                         SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  ToScalar,                                               1,         {NI_VectorT256_ToScalar,                    NI_VectorT256_ToScalar,                     NI_VectorT256_ToScalar,                     NI_VectorT256_ToScalar,                     NI_VectorT256_ToScalar,                     NI_VectorT256_ToScalar,                     NI_VectorT256_ToScalar,                     NI_VectorT256_ToScalar,                     NI_VectorT256_ToScalar,                     NI_VectorT256_ToScalar},                    SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  WidenLower,                                             1,         {NI_VectorT256_WidenLower,                  NI_VectorT256_WidenLower,                   NI_VectorT256_WidenLower,                   NI_VectorT256_WidenLower,                   NI_VectorT256_WidenLower,                   NI_VectorT256_WidenLower,                   NI_VectorT256_WidenLower,                   NI_VectorT256_WidenLower,                   NI_VectorT256_WidenLower,                   NI_VectorT256_WidenLower},                  SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  WidenUpper,                                             1,         {NI_VectorT256_WidenUpper,                  NI_VectorT256_WidenUpper,                   NI_VectorT256_WidenUpper,                   NI_VectorT256_WidenUpper,                   NI_VectorT256_WidenUpper,                   NI_VectorT256_WidenUpper,                   NI_VectorT256_WidenUpper,                   NI_VectorT256_WidenUpper,                   NI_VectorT256_WidenUpper,                   NI_VectorT256_WidenUpper},                  SimdAsHWIntrinsicFlag::None)
 SIMD_AS_HWINTRINSIC_ID(VectorT256,  WithElement,                                            3,         {NI_VectorT256_WithElement,                 NI_VectorT256_WithElement,                  NI_VectorT256_WithElement,                  NI_VectorT256_WithElement,                  NI_VectorT256_WithElement,                  NI_VectorT256_WithElement,                  NI_VectorT256_WithElement,                  NI_VectorT256_WithElement,                  NI_VectorT256_WithElement,                  NI_VectorT256_WithElement},                 SimdAsHWIntrinsicFlag::None)
-SIMD_AS_HWINTRINSIC_ID(VectorT256,  Xor,                                                    2,         {NI_AVX2_Xor,                               NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX2_Xor,                                NI_AVX_Xor,                                 NI_AVX_Xor},                                SimdAsHWIntrinsicFlag::None)
+SIMD_AS_HWINTRINSIC_ID(VectorT256,  Xor,                                                    2,         {NI_VectorT256_Xor,                         NI_VectorT256_Xor,                          NI_VectorT256_Xor,                          NI_VectorT256_Xor,                          NI_VectorT256_Xor,                          NI_VectorT256_Xor,                          NI_VectorT256_Xor,                          NI_VectorT256_Xor,                          NI_VectorT256_Xor,                          NI_VectorT256_Xor},                         SimdAsHWIntrinsicFlag::None)
 
 #undef SIMD_AS_HWINTRINSIC_NM
 #undef SIMD_AS_HWINTRINSIC_ID
index bb6d235..6c6e054 100644 (file)
@@ -229,6 +229,7 @@ namespace System.Numerics
         /// <param name="right">The scalar value.</param>
         /// <returns>The scaled vector.</returns>
         /// <remarks>The <see cref="System.Numerics.Vector2.op_Multiply" /> method defines the multiplication operation for <see cref="System.Numerics.Vector2" /> objects.</remarks>
+        [Intrinsic]
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static Vector2 operator *(Vector2 left, float right)
         {
@@ -240,6 +241,7 @@ namespace System.Numerics
         /// <param name="right">The scalar value.</param>
         /// <returns>The scaled vector.</returns>
         /// <remarks>The <see cref="System.Numerics.Vector2.op_Multiply" /> method defines the multiplication operation for <see cref="System.Numerics.Vector2" /> objects.</remarks>
+        [Intrinsic]
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static Vector2 operator *(float left, Vector2 right)
         {
@@ -265,6 +267,7 @@ namespace System.Numerics
         /// <param name="value">The vector to negate.</param>
         /// <returns>The negated vector.</returns>
         /// <remarks>The <see cref="System.Numerics.Vector2.op_UnaryNegation" /> method defines the unary negation operation for <see cref="System.Numerics.Vector2" /> objects.</remarks>
+        [Intrinsic]
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static Vector2 operator -(Vector2 value)
         {
index e7aa695..2773bbc 100644 (file)
@@ -253,6 +253,7 @@ namespace System.Numerics
         /// <param name="right">The scalar value.</param>
         /// <returns>The scaled vector.</returns>
         /// <remarks>The <see cref="System.Numerics.Vector3.op_Multiply" /> method defines the multiplication operation for <see cref="System.Numerics.Vector3" /> objects.</remarks>
+        [Intrinsic]
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static Vector3 operator *(Vector3 left, float right)
         {
@@ -264,6 +265,7 @@ namespace System.Numerics
         /// <param name="right">The scalar value.</param>
         /// <returns>The scaled vector.</returns>
         /// <remarks>The <see cref="System.Numerics.Vector3.op_Multiply" /> method defines the multiplication operation for <see cref="System.Numerics.Vector3" /> objects.</remarks>
+        [Intrinsic]
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static Vector3 operator *(float left, Vector3 right)
         {
@@ -290,6 +292,7 @@ namespace System.Numerics
         /// <param name="value">The vector to negate.</param>
         /// <returns>The negated vector.</returns>
         /// <remarks>The <see cref="System.Numerics.Vector3.op_UnaryNegation" /> method defines the unary negation operation for <see cref="System.Numerics.Vector3" /> objects.</remarks>
+        [Intrinsic]
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static Vector3 operator -(Vector3 value)
         {
index dbb62e7..1e519b8 100644 (file)
@@ -225,6 +225,7 @@ namespace System.Numerics
         /// <param name="value2">The scalar value.</param>
         /// <returns>The result of the division.</returns>
         /// <remarks>The <see cref="System.Numerics.Vector4.op_Division" /> method defines the division operation for <see cref="System.Numerics.Vector4" /> objects.</remarks>
+        [Intrinsic]
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static Vector4 operator /(Vector4 value1, float value2)
         {
@@ -279,6 +280,7 @@ namespace System.Numerics
         /// <param name="right">The scalar value.</param>
         /// <returns>The scaled vector.</returns>
         /// <remarks>The <see cref="System.Numerics.Vector4.op_Multiply" /> method defines the multiplication operation for <see cref="System.Numerics.Vector4" /> objects.</remarks>
+        [Intrinsic]
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static Vector4 operator *(Vector4 left, float right)
         {
@@ -290,6 +292,7 @@ namespace System.Numerics
         /// <param name="right">The scalar value.</param>
         /// <returns>The scaled vector.</returns>
         /// <remarks>The <see cref="System.Numerics.Vector4.op_Multiply" /> method defines the multiplication operation for <see cref="System.Numerics.Vector4" /> objects.</remarks>
+        [Intrinsic]
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static Vector4 operator *(float left, Vector4 right)
         {
@@ -317,6 +320,7 @@ namespace System.Numerics
         /// <param name="value">The vector to negate.</param>
         /// <returns>The negated vector.</returns>
         /// <remarks>The <see cref="System.Numerics.Vector4.op_UnaryNegation" /> method defines the unary negation operation for <see cref="System.Numerics.Vector4" /> objects.</remarks>
+        [Intrinsic]
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         public static Vector4 operator -(Vector4 value)
         {
index 1ed5b6f..059e21e 100644 (file)
@@ -1852,6 +1852,7 @@ static guint16 vector2_methods[] = {
        SN_op_Inequality,
        SN_op_Multiply,
        SN_op_Subtraction,
+       SN_op_UnaryNegation,
        SN_set_Item,
 };
 
@@ -2032,6 +2033,13 @@ emit_vector_2_3_4 (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *f
                return NULL;
 #endif
        }
+       case SN_op_UnaryNegation: {
+#if defined(TARGET_ARM64) || defined(TARGET_AMD64)
+               return emit_simd_ins (cfg, klass, OP_NEGATION, args [0]->dreg, -1);
+#else
+               return NULL;
+#endif
+       }
        case SN_Abs: {
                // MAX(x,0-x)
                MonoInst *zero = emit_xzero (cfg, klass);