From: Tanner Gooding Date: Fri, 9 Feb 2018 02:05:02 +0000 (-0800) Subject: Fixing up fgValueNumberIntrinsic to use IsMathIntrinsic rather than checking individu... X-Git-Tag: accepted/tizen/unified/20190422.045933~3015 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=355b458ab9ec00245996e40d5b0898093aa7ccc2;p=platform%2Fupstream%2Fcoreclr.git Fixing up fgValueNumberIntrinsic to use IsMathIntrinsic rather than checking individual cases. --- diff --git a/src/jit/valuenum.cpp b/src/jit/valuenum.cpp index b6ff775..4948be0 100644 --- a/src/jit/valuenum.cpp +++ b/src/jit/valuenum.cpp @@ -7186,53 +7186,38 @@ void Compiler::fgValueNumberIntrinsic(GenTree* tree) vnStore->VNPUnpackExc(intrinsic->gtOp.gtOp2->gtVNPair, &arg1VNP, &arg1VNPx); } - switch (intrinsic->gtIntrinsicId) - { - case CORINFO_INTRINSIC_Sin: - case CORINFO_INTRINSIC_Sqrt: - case CORINFO_INTRINSIC_Abs: - case CORINFO_INTRINSIC_Cos: - case CORINFO_INTRINSIC_Round: - case CORINFO_INTRINSIC_Cosh: - case CORINFO_INTRINSIC_Sinh: - case CORINFO_INTRINSIC_Tan: - case CORINFO_INTRINSIC_Tanh: - case CORINFO_INTRINSIC_Asin: - case CORINFO_INTRINSIC_Acos: - case CORINFO_INTRINSIC_Atan: - case CORINFO_INTRINSIC_Atan2: - case CORINFO_INTRINSIC_Log10: - case CORINFO_INTRINSIC_Pow: - case CORINFO_INTRINSIC_Exp: - case CORINFO_INTRINSIC_Ceiling: - case CORINFO_INTRINSIC_Floor: - - // GT_INTRINSIC is a currently a subtype of binary operators. But most of - // the math intrinsics are actually unary operations. + if (IsMathIntrinsic(intrinsic->gtIntrinsicId)) + { + // GT_INTRINSIC is a currently a subtype of binary operators. But most of + // the math intrinsics are actually unary operations. - if (intrinsic->gtOp.gtOp2 == nullptr) - { + if (intrinsic->gtOp.gtOp2 == nullptr) + { + intrinsic->gtVNPair = + vnStore->VNPWithExc(vnStore->EvalMathFuncUnary(tree->TypeGet(), intrinsic->gtIntrinsicId, arg0VNP), + arg0VNPx); + } + else + { + ValueNumPair newVNP = + vnStore->EvalMathFuncBinary(tree->TypeGet(), intrinsic->gtIntrinsicId, arg0VNP, arg1VNP); + ValueNumPair excSet = vnStore->VNPExcSetUnion(arg0VNPx, arg1VNPx); + intrinsic->gtVNPair = vnStore->VNPWithExc(newVNP, excSet); + } + } + else + { + switch (intrinsic->gtIntrinsicId) + { + case CORINFO_INTRINSIC_Object_GetType: intrinsic->gtVNPair = - vnStore->VNPWithExc(vnStore->EvalMathFuncUnary(tree->TypeGet(), intrinsic->gtIntrinsicId, arg0VNP), + vnStore->VNPWithExc(vnStore->VNPairForFunc(intrinsic->TypeGet(), VNF_ObjGetType, arg0VNP), arg0VNPx); - } - else - { - ValueNumPair newVNP = - vnStore->EvalMathFuncBinary(tree->TypeGet(), intrinsic->gtIntrinsicId, arg0VNP, arg1VNP); - ValueNumPair excSet = vnStore->VNPExcSetUnion(arg0VNPx, arg1VNPx); - intrinsic->gtVNPair = vnStore->VNPWithExc(newVNP, excSet); - } - - break; - - case CORINFO_INTRINSIC_Object_GetType: - intrinsic->gtVNPair = - vnStore->VNPWithExc(vnStore->VNPairForFunc(intrinsic->TypeGet(), VNF_ObjGetType, arg0VNP), arg0VNPx); - break; + break; - default: - unreached(); + default: + unreached(); + } } }