Resolving the remaining HWIntrinsics issues blocking PMI for S.P.CoreLib
authorTanner Gooding <tagoo@outlook.com>
Thu, 2 Aug 2018 15:30:50 +0000 (08:30 -0700)
committerTanner Gooding <tagoo@outlook.com>
Thu, 2 Aug 2018 18:15:03 +0000 (11:15 -0700)
Commit migrated from https://github.com/dotnet/coreclr/commit/aff7dffc99f6bb09db8c973645a31dd120733a56

src/coreclr/src/jit/hwintrinsiccodegenxarch.cpp
src/coreclr/src/jit/hwintrinsiclistxarch.h

index dafb45a..4230284 100644 (file)
@@ -1651,7 +1651,6 @@ void CodeGen::genSSE2Intrinsic(GenTreeHWIntrinsic* node)
 
         case NI_SSE2_SetZeroVector128:
         {
-            assert(baseType != TYP_FLOAT);
             assert(baseType >= TYP_BYTE && baseType <= TYP_DOUBLE);
             assert(op1 == nullptr);
             assert(op2 == nullptr);
index bfb9cec..ff6f2ff 100644 (file)
@@ -212,7 +212,7 @@ HARDWARE_INTRINSIC(SSE2_Or,                                         "Or",
 HARDWARE_INTRINSIC(SSE2_PackSignedSaturate,                         "PackSignedSaturate",                           SSE2,         -1,              16,           2,     {INS_invalid,           INS_invalid,        INS_packsswb,       INS_invalid,        INS_packssdw,       INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid},           HW_Category_SimpleSIMD,             HW_Flag_BaseTypeFromFirstArg)
 HARDWARE_INTRINSIC(SSE2_PackUnsignedSaturate,                       "PackUnsignedSaturate",                         SSE2,         -1,              16,           2,     {INS_invalid,           INS_invalid,        INS_packuswb,       INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid},           HW_Category_SimpleSIMD,             HW_Flag_BaseTypeFromFirstArg)
 HARDWARE_INTRINSIC(SSE2_SetScalarVector128,                         "SetScalarVector128",                           SSE2,         -1,              16,           1,     {INS_invalid,           INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_movsdsse2},         HW_Category_Helper,                 HW_Flag_NoContainment|HW_Flag_MultiIns|HW_Flag_NoRMWSemantics)
-HARDWARE_INTRINSIC(SSE2_SetZeroVector128,                           "SetZeroVector128",                             SSE2,         -1,              16,           0,     {INS_pxor,              INS_pxor,           INS_pxor,           INS_pxor,           INS_pxor,           INS_pxor,           INS_pxor,           INS_pxor,           INS_invalid,        INS_xorpd},             HW_Category_Helper,                 HW_Flag_NoContainment)
+HARDWARE_INTRINSIC(SSE2_SetZeroVector128,                           "SetZeroVector128",                             SSE2,         -1,              16,           0,     {INS_pxor,              INS_pxor,           INS_pxor,           INS_pxor,           INS_pxor,           INS_pxor,           INS_pxor,           INS_pxor,           INS_xorps,          INS_xorpd},             HW_Category_Helper,                 HW_Flag_OneTypeGeneric|HW_Flag_NoContainment)
 HARDWARE_INTRINSIC(SSE2_SumAbsoluteDifferences,                     "SumAbsoluteDifferences",                       SSE2,         -1,              16,           2,     {INS_invalid,           INS_psadbw,         INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid},           HW_Category_SimpleSIMD,             HW_Flag_BaseTypeFromFirstArg)
 HARDWARE_INTRINSIC(SSE2_ShiftLeftLogical,                           "ShiftLeftLogical",                             SSE2,         -1,              16,           2,     {INS_invalid,           INS_invalid,        INS_psllw,          INS_psllw,          INS_pslld,          INS_pslld,          INS_psllq,          INS_psllq,          INS_invalid,        INS_invalid},           HW_Category_IMM,                    HW_Flag_MaybeIMM|HW_Flag_NoJmpTableIMM|HW_Flag_FullRangeIMM)
 HARDWARE_INTRINSIC(SSE2_ShiftLeftLogical128BitLane,                 "ShiftLeftLogical128BitLane",                   SSE2,         -1,              16,           2,     {INS_pslldq,            INS_pslldq,         INS_pslldq,         INS_pslldq,         INS_pslldq,         INS_pslldq,         INS_pslldq,         INS_pslldq,         INS_invalid,        INS_invalid},           HW_Category_IMM,                    HW_Flag_FullRangeIMM)
@@ -440,7 +440,7 @@ HARDWARE_INTRINSIC(AVX2_Min,                                        "Min",
 HARDWARE_INTRINSIC(AVX2_MoveMask,                                   "MoveMask",                                     AVX2,         -1,              32,           1,     {INS_pmovmskb,          INS_pmovmskb,       INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid},           HW_Category_SimpleSIMD,             HW_Flag_NoContainment|HW_Flag_BaseTypeFromFirstArg)
 HARDWARE_INTRINSIC(AVX2_Multiply,                                   "Multiply",                                     AVX2,         -1,              32,           2,     {INS_invalid,           INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_invalid,        INS_pmuldq,         INS_pmuludq,        INS_invalid,        INS_invalid},           HW_Category_SimpleSIMD,             HW_Flag_Commutative)
 HARDWARE_INTRINSIC(AVX2_Or,                                         "Or",                                           AVX2,         -1,              32,           2,     {INS_por,               INS_por,            INS_por,            INS_por,            INS_por,            INS_por,            INS_por,            INS_por,            INS_invalid,        INS_invalid},           HW_Category_SimpleSIMD,             HW_Flag_Commutative)
-HARDWARE_INTRINSIC(AVX2_Permute2x128,                               "Permute2x128",                                 AVX2,         -1,              32,           3,     {INS_vperm2i128,        INS_vperm2i128,     INS_vperm2i128,     INS_vperm2i128,     INS_vperm2i128,     INS_vperm2i128,     INS_vperm2i128,     INS_vperm2i128,     INS_invalid,        INS_invalid},           HW_Category_IMM,                    HW_Flag_OneTypeGeneric|HW_Flag_FullRangeIMM)
+HARDWARE_INTRINSIC(AVX2_Permute2x128,                               "Permute2x128",                                 AVX2,         -1,              32,           3,     {INS_vperm2i128,        INS_vperm2i128,     INS_vperm2i128,     INS_vperm2i128,     INS_vperm2i128,     INS_vperm2i128,     INS_vperm2i128,     INS_vperm2i128,     INS_invalid,        INS_invalid},           HW_Category_IMM,                    HW_Flag_FullRangeIMM)
 HARDWARE_INTRINSIC(AVX2_ShiftLeftLogical,                           "ShiftLeftLogical",                             AVX2,         -1,              32,           2,     {INS_invalid,           INS_invalid,        INS_psllw,          INS_psllw,          INS_pslld,          INS_pslld,          INS_psllq,          INS_psllq,          INS_invalid,        INS_invalid},           HW_Category_IMM,                    HW_Flag_MaybeIMM|HW_Flag_NoJmpTableIMM|HW_Flag_FullRangeIMM)
 HARDWARE_INTRINSIC(AVX2_ShiftLeftLogical128BitLane,                 "ShiftLeftLogical128BitLane",                   AVX2,         -1,              32,           2,     {INS_pslldq,            INS_pslldq,         INS_pslldq,         INS_pslldq,         INS_pslldq,         INS_pslldq,         INS_pslldq,         INS_pslldq,         INS_invalid,        INS_invalid},           HW_Category_IMM,                    HW_Flag_FullRangeIMM)
 HARDWARE_INTRINSIC(AVX2_ShiftLeftLogicalVariable,                   "ShiftLeftLogicalVariable",                     AVX2,         -1,               0,           2,     {INS_invalid,           INS_invalid,        INS_invalid,        INS_invalid,        INS_vpsllvd,        INS_vpsllvd,        INS_vpsllvq,        INS_vpsllvq,        INS_invalid,        INS_invalid},           HW_Category_SimpleSIMD,             HW_Flag_UnfixedSIMDSize)