Implement GT_INTRINSIC_Sqrt for floating-point
authorHyung-Kyu Choi <hk0110.choi@samsung.com>
Tue, 24 Jan 2017 11:04:09 +0000 (20:04 +0900)
committerHyung-Kyu Choi <hk0110.choi@samsung.com>
Tue, 24 Jan 2017 11:04:09 +0000 (20:04 +0900)
Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/b044c6050e7b35ccdee42278587b9d8206915db1

src/coreclr/src/jit/codegenarm.cpp
src/coreclr/src/jit/lowerarm.cpp

index 2884fe0..1ff7614 100644 (file)
@@ -93,7 +93,8 @@ void CodeGen::genIntrinsic(GenTreePtr treeNode)
             break;
 
         case CORINFO_INTRINSIC_Sqrt:
-            NYI_ARM("genIntrinsic for sqrt - not implementd yet");
+            genConsumeOperands(treeNode->AsOp());
+            getEmitter()->emitInsBinary(INS_vsqrt, emitTypeSize(treeNode), treeNode, srcNode);
             break;
 
         default:
index 42dfbee..6739844 100644 (file)
@@ -882,11 +882,12 @@ void Lowering::TreeNodeInfoInit(GenTree* tree)
             switch (tree->gtIntrinsic.gtIntrinsicId)
             {
                 case CORINFO_INTRINSIC_Abs:
+                case CORINFO_INTRINSIC_Sqrt:
                     info->srcCount = 1;
                     info->dstCount = 1;
                     break;
                 default:
-                    NYI_ARM("Lowering::TreeNodeInfoInit for GT_INRINSIC");
+                    NYI_ARM("Lowering::TreeNodeInfoInit for GT_INTRINSIC");
                     break;
             }
         }