From: Tanner Gooding Date: Mon, 11 Dec 2017 23:50:21 +0000 (-0800) Subject: Adding valuenum support for acosh, asinh, atanh, and cbrt X-Git-Tag: accepted/tizen/base/20180629.140029~332^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0eeae704447effddbfa4b06f0d591e9afc241894;p=platform%2Fupstream%2Fcoreclr.git Adding valuenum support for acosh, asinh, atanh, and cbrt --- diff --git a/src/inc/corinfo.h b/src/inc/corinfo.h index b32e187..8899a83 100644 --- a/src/inc/corinfo.h +++ b/src/inc/corinfo.h @@ -213,11 +213,11 @@ TODO: Talk about initializing strutures before use #define SELECTANY extern __declspec(selectany) #endif -SELECTANY const GUID JITEEVersionIdentifier = { /* 19258069-1777-4691-87DF-DADF8F352875 */ - 0x19258069, - 0x1777, - 0x4691, - { 0x87, 0xdf, 0xda, 0xdf, 0x8f, 0x35, 0x28, 0x75 } +SELECTANY const GUID JITEEVersionIdentifier = { /* 6C4EB5E3-7225-4E85-A6D8-D8A8B96939E5 */ + 0x6c4eb5e3, + 0x7225, + 0x4e85, + { 0xa6, 0xd8, 0xd8, 0xa8, 0xb9, 0x69, 0x39, 0xe5 } }; @@ -916,6 +916,7 @@ enum CorInfoIntrinsics { CORINFO_INTRINSIC_Sin, CORINFO_INTRINSIC_Cos, + CORINFO_INTRINSIC_Cbrt, CORINFO_INTRINSIC_Sqrt, CORINFO_INTRINSIC_Abs, CORINFO_INTRINSIC_Round, @@ -924,9 +925,12 @@ enum CorInfoIntrinsics CORINFO_INTRINSIC_Tan, CORINFO_INTRINSIC_Tanh, CORINFO_INTRINSIC_Asin, + CORINFO_INTRINSIC_Asinh, CORINFO_INTRINSIC_Acos, + CORINFO_INTRINSIC_Acosh, CORINFO_INTRINSIC_Atan, CORINFO_INTRINSIC_Atan2, + CORINFO_INTRINSIC_Atanh, CORINFO_INTRINSIC_Log10, CORINFO_INTRINSIC_Pow, CORINFO_INTRINSIC_Exp, diff --git a/src/jit/compiler.cpp b/src/jit/compiler.cpp index 347062c..d359c6f 100644 --- a/src/jit/compiler.cpp +++ b/src/jit/compiler.cpp @@ -11068,6 +11068,9 @@ void cNodeIR(Compiler* comp, GenTree* tree) case CORINFO_INTRINSIC_Cos: chars += printf("Cos"); break; + case CORINFO_INTRINSIC_Cbrt: + chars += printf("Cbrt"); + break; case CORINFO_INTRINSIC_Sqrt: chars += printf("Sqrt"); break; @@ -11086,15 +11089,24 @@ void cNodeIR(Compiler* comp, GenTree* tree) case CORINFO_INTRINSIC_Asin: chars += printf("Asin"); break; + case CORINFO_INTRINSIC_Asinh: + chars += printf("Asinh"); + break; case CORINFO_INTRINSIC_Acos: chars += printf("Acos"); break; + case CORINFO_INTRINSIC_Acosh: + chars += printf("Acosh"); + break; case CORINFO_INTRINSIC_Atan: chars += printf("Atan"); break; case CORINFO_INTRINSIC_Atan2: chars += printf("Atan2"); break; + case CORINFO_INTRINSIC_Atanh: + chars += printf("Atanh"); + break; case CORINFO_INTRINSIC_Log10: chars += printf("Log10"); break; diff --git a/src/jit/gentree.cpp b/src/jit/gentree.cpp index e418723..5bae380 100644 --- a/src/jit/gentree.cpp +++ b/src/jit/gentree.cpp @@ -3511,13 +3511,17 @@ unsigned Compiler::gtSetEvalOrder(GenTree* tree) case CORINFO_INTRINSIC_Sin: case CORINFO_INTRINSIC_Cos: case CORINFO_INTRINSIC_Sqrt: + case CORINFO_INTRINSIC_Cbrt: case CORINFO_INTRINSIC_Cosh: case CORINFO_INTRINSIC_Sinh: case CORINFO_INTRINSIC_Tan: case CORINFO_INTRINSIC_Tanh: case CORINFO_INTRINSIC_Asin: + case CORINFO_INTRINSIC_Asinh: case CORINFO_INTRINSIC_Acos: + case CORINFO_INTRINSIC_Acosh: case CORINFO_INTRINSIC_Atan: + case CORINFO_INTRINSIC_Atanh: case CORINFO_INTRINSIC_Atan2: case CORINFO_INTRINSIC_Log10: case CORINFO_INTRINSIC_Pow: @@ -11428,6 +11432,9 @@ void Compiler::gtDispTree(GenTreePtr tree, case CORINFO_INTRINSIC_Cos: printf(" cos"); break; + case CORINFO_INTRINSIC_Cbrt: + printf(" cbrt"); + break; case CORINFO_INTRINSIC_Sqrt: printf(" sqrt"); break; @@ -11452,15 +11459,24 @@ void Compiler::gtDispTree(GenTreePtr tree, case CORINFO_INTRINSIC_Asin: printf(" asin"); break; + case CORINFO_INTRINSIC_Asinh: + printf(" asinh"); + break; case CORINFO_INTRINSIC_Acos: printf(" acos"); break; + case CORINFO_INTRINSIC_Acosh: + printf(" acosh"); + break; case CORINFO_INTRINSIC_Atan: printf(" atan"); break; case CORINFO_INTRINSIC_Atan2: printf(" atan2"); break; + case CORINFO_INTRINSIC_Atanh: + printf(" atanh"); + break; case CORINFO_INTRINSIC_Log10: printf(" log10"); break; diff --git a/src/jit/importer.cpp b/src/jit/importer.cpp index 5396508..a1ef952 100644 --- a/src/jit/importer.cpp +++ b/src/jit/importer.cpp @@ -3429,6 +3429,7 @@ GenTree* Compiler::impIntrinsic(GenTree* newobjThis, GenTreePtr op1, op2; case CORINFO_INTRINSIC_Sin: + case CORINFO_INTRINSIC_Cbrt: case CORINFO_INTRINSIC_Sqrt: case CORINFO_INTRINSIC_Abs: case CORINFO_INTRINSIC_Cos: @@ -3438,9 +3439,12 @@ GenTree* Compiler::impIntrinsic(GenTree* newobjThis, case CORINFO_INTRINSIC_Tan: case CORINFO_INTRINSIC_Tanh: case CORINFO_INTRINSIC_Asin: + case CORINFO_INTRINSIC_Asinh: case CORINFO_INTRINSIC_Acos: + case CORINFO_INTRINSIC_Acosh: case CORINFO_INTRINSIC_Atan: case CORINFO_INTRINSIC_Atan2: + case CORINFO_INTRINSIC_Atanh: case CORINFO_INTRINSIC_Log10: case CORINFO_INTRINSIC_Pow: case CORINFO_INTRINSIC_Exp: @@ -3969,13 +3973,15 @@ GenTree* Compiler::impMathIntrinsic(CORINFO_METHOD_HANDLE method, GenTree* op2; assert(callType != TYP_STRUCT); - assert((intrinsicID == CORINFO_INTRINSIC_Sin) || (intrinsicID == CORINFO_INTRINSIC_Sqrt) || - (intrinsicID == CORINFO_INTRINSIC_Abs) || (intrinsicID == CORINFO_INTRINSIC_Cos) || - (intrinsicID == CORINFO_INTRINSIC_Round) || (intrinsicID == CORINFO_INTRINSIC_Cosh) || - (intrinsicID == CORINFO_INTRINSIC_Sinh) || (intrinsicID == CORINFO_INTRINSIC_Tan) || - (intrinsicID == CORINFO_INTRINSIC_Tanh) || (intrinsicID == CORINFO_INTRINSIC_Asin) || - (intrinsicID == CORINFO_INTRINSIC_Acos) || (intrinsicID == CORINFO_INTRINSIC_Atan) || - (intrinsicID == CORINFO_INTRINSIC_Atan2) || (intrinsicID == CORINFO_INTRINSIC_Log10) || + assert((intrinsicID == CORINFO_INTRINSIC_Sin) || intrinsicID == CORINFO_INTRINSIC_Cbrt || + (intrinsicID == CORINFO_INTRINSIC_Sqrt) || (intrinsicID == CORINFO_INTRINSIC_Abs) || + (intrinsicID == CORINFO_INTRINSIC_Cos) || (intrinsicID == CORINFO_INTRINSIC_Round) || + (intrinsicID == CORINFO_INTRINSIC_Cosh) || (intrinsicID == CORINFO_INTRINSIC_Sinh) || + (intrinsicID == CORINFO_INTRINSIC_Tan) || (intrinsicID == CORINFO_INTRINSIC_Tanh) || + (intrinsicID == CORINFO_INTRINSIC_Asin) || (intrinsicID == CORINFO_INTRINSIC_Asinh) || + (intrinsicID == CORINFO_INTRINSIC_Acos) || (intrinsicID == CORINFO_INTRINSIC_Acosh) || + (intrinsicID == CORINFO_INTRINSIC_Atan) || (intrinsicID == CORINFO_INTRINSIC_Atan2) || + (intrinsicID == CORINFO_INTRINSIC_Atanh) || (intrinsicID == CORINFO_INTRINSIC_Log10) || (intrinsicID == CORINFO_INTRINSIC_Pow) || (intrinsicID == CORINFO_INTRINSIC_Exp) || (intrinsicID == CORINFO_INTRINSIC_Ceiling) || (intrinsicID == CORINFO_INTRINSIC_Floor)); @@ -19161,6 +19167,7 @@ bool Compiler::IsMathIntrinsic(CorInfoIntrinsics intrinsicId) switch (intrinsicId) { case CORINFO_INTRINSIC_Sin: + case CORINFO_INTRINSIC_Cbrt: case CORINFO_INTRINSIC_Sqrt: case CORINFO_INTRINSIC_Abs: case CORINFO_INTRINSIC_Cos: @@ -19170,9 +19177,12 @@ bool Compiler::IsMathIntrinsic(CorInfoIntrinsics intrinsicId) case CORINFO_INTRINSIC_Tan: case CORINFO_INTRINSIC_Tanh: case CORINFO_INTRINSIC_Asin: + case CORINFO_INTRINSIC_Asinh: case CORINFO_INTRINSIC_Acos: + case CORINFO_INTRINSIC_Acosh: case CORINFO_INTRINSIC_Atan: case CORINFO_INTRINSIC_Atan2: + case CORINFO_INTRINSIC_Atanh: case CORINFO_INTRINSIC_Log10: case CORINFO_INTRINSIC_Pow: case CORINFO_INTRINSIC_Exp: diff --git a/src/jit/valuenum.cpp b/src/jit/valuenum.cpp index 77134b2..ebd1365 100644 --- a/src/jit/valuenum.cpp +++ b/src/jit/valuenum.cpp @@ -3598,6 +3598,9 @@ ValueNum ValueNumStore::EvalMathFuncUnary(var_types typ, CorInfoIntrinsics gtMat case CORINFO_INTRINSIC_Cos: vnf = VNF_Cos; break; + case CORINFO_INTRINSIC_Cbrt: + vnf = VNF_Cbrt; + break; case CORINFO_INTRINSIC_Sqrt: vnf = VNF_Sqrt; break; @@ -3637,12 +3640,21 @@ ValueNum ValueNumStore::EvalMathFuncUnary(var_types typ, CorInfoIntrinsics gtMat case CORINFO_INTRINSIC_Asin: vnf = VNF_Asin; break; + case CORINFO_INTRINSIC_Asinh: + vnf = VNF_Asinh; + break; case CORINFO_INTRINSIC_Acos: vnf = VNF_Acos; break; + case CORINFO_INTRINSIC_Acosh: + vnf = VNF_Acosh; + break; case CORINFO_INTRINSIC_Atan: vnf = VNF_Atan; break; + case CORINFO_INTRINSIC_Atanh: + vnf = VNF_Atanh; + break; case CORINFO_INTRINSIC_Log10: vnf = VNF_Log10; break; diff --git a/src/jit/valuenumfuncs.h b/src/jit/valuenumfuncs.h index 3497348..0b85dcf 100644 --- a/src/jit/valuenumfuncs.h +++ b/src/jit/valuenumfuncs.h @@ -74,6 +74,7 @@ ValueNumFuncDef(DblRound, 1, false, false, false) ValueNumFuncDef(Sin, 1, false, false, false) ValueNumFuncDef(Cos, 1, false, false, false) +ValueNumFuncDef(Cbrt, 1, false, false, false) ValueNumFuncDef(Sqrt, 1, false, false, false) ValueNumFuncDef(Abs, 1, false, false, false) ValueNumFuncDef(RoundDouble, 1, false, false, false) @@ -84,9 +85,12 @@ ValueNumFuncDef(Sinh, 1, false, false, false) ValueNumFuncDef(Tan, 1, false, false, false) ValueNumFuncDef(Tanh, 1, false, false, false) ValueNumFuncDef(Asin, 1, false, false, false) +ValueNumFuncDef(Asinh, 1, false, false, false) ValueNumFuncDef(Acos, 1, false, false, false) +ValueNumFuncDef(Acosh, 1, false, false, false) ValueNumFuncDef(Atan, 1, false, false, false) ValueNumFuncDef(Atan2, 2, false, false, false) +ValueNumFuncDef(Atanh, 1, false, false, false) ValueNumFuncDef(Log10, 1, false, false, false) ValueNumFuncDef(Pow, 2, false, false, false) ValueNumFuncDef(Exp, 1, false, false, false) diff --git a/src/vm/ecalllist.h b/src/vm/ecalllist.h index 7e850f9..63d239e 100644 --- a/src/vm/ecalllist.h +++ b/src/vm/ecalllist.h @@ -624,13 +624,13 @@ FCFuncStart(gMathFuncs) FCIntrinsicSig("Abs", &gsig_SM_Dbl_RetDbl, COMDouble::Abs, CORINFO_INTRINSIC_Abs) FCIntrinsicSig("Abs", &gsig_SM_Flt_RetFlt, COMSingle::Abs, CORINFO_INTRINSIC_Abs) FCIntrinsic("Acos", COMDouble::Acos, CORINFO_INTRINSIC_Acos) - FCFuncElement("Acosh", COMDouble::Acosh) + FCIntrinsic("Acosh", COMDouble::Acosh, CORINFO_INTRINSIC_Acosh) FCIntrinsic("Asin", COMDouble::Asin, CORINFO_INTRINSIC_Asin) - FCFuncElement("Asinh", COMDouble::Asinh) + FCIntrinsic("Asinh", COMDouble::Asinh, CORINFO_INTRINSIC_Asinh) FCIntrinsic("Atan", COMDouble::Atan, CORINFO_INTRINSIC_Atan) - FCFuncElement("Atanh", COMDouble::Atanh) + FCIntrinsic("Atanh", COMDouble::Atanh, CORINFO_INTRINSIC_Atanh) FCIntrinsic("Atan2", COMDouble::Atan2, CORINFO_INTRINSIC_Atan2) - FCFuncElement("Cbrt", COMDouble::Cbrt) + FCIntrinsic("Cbrt", COMDouble::Cbrt, CORINFO_INTRINSIC_Cbrt) FCIntrinsic("Ceiling", COMDouble::Ceil, CORINFO_INTRINSIC_Ceiling) FCIntrinsic("Cos", COMDouble::Cos, CORINFO_INTRINSIC_Cos) FCIntrinsic("Cosh", COMDouble::Cosh, CORINFO_INTRINSIC_Cosh) @@ -650,13 +650,13 @@ FCFuncEnd() FCFuncStart(gMathFFuncs) FCIntrinsic("Acos", COMSingle::Acos, CORINFO_INTRINSIC_Acos) - FCFuncElement("Acosh", COMSingle::Acosh) + FCIntrinsic("Acosh", COMSingle::Acosh, CORINFO_INTRINSIC_Acosh) FCIntrinsic("Asin", COMSingle::Asin, CORINFO_INTRINSIC_Asin) - FCFuncElement("Asinh", COMSingle::Asinh) + FCIntrinsic("Asinh", COMSingle::Asinh, CORINFO_INTRINSIC_Asinh) FCIntrinsic("Atan", COMSingle::Atan, CORINFO_INTRINSIC_Atan) - FCFuncElement("Atanh", COMSingle::Atanh) + FCIntrinsic("Atanh", COMSingle::Atanh, CORINFO_INTRINSIC_Atanh) FCIntrinsic("Atan2", COMSingle::Atan2, CORINFO_INTRINSIC_Atan2) - FCFuncElement("Cbrt", COMSingle::Cbrt) + FCIntrinsic("Cbrt", COMSingle::Cbrt, CORINFO_INTRINSIC_Cbrt) FCIntrinsic("Ceiling", COMSingle::Ceil, CORINFO_INTRINSIC_Ceiling) FCIntrinsic("Cos", COMSingle::Cos, CORINFO_INTRINSIC_Cos) FCIntrinsic("Cosh", COMSingle::Cosh, CORINFO_INTRINSIC_Cosh)