[Arm64] Treat Math/MathF.FusedMultiplyAdd as intrinsics (#40124)
authorEgor Chesakov <Egor.Chesakov@microsoft.com>
Thu, 6 Aug 2020 21:56:56 +0000 (14:56 -0700)
committerGitHub <noreply@github.com>
Thu, 6 Aug 2020 21:56:56 +0000 (14:56 -0700)
commita1da393cac02d0588ae499f68d37a3d6e07572f7
tree5814ebeefa840ea9c5b32a3273063b93696868e2
parenta34177e1ec1f32720daa07e4e88d955cd23c397c
[Arm64] Treat Math/MathF.FusedMultiplyAdd as intrinsics (#40124)

* Transform Math{F}.FusedMultiplyAdd(x,y,z) into

AdvSimd.FusedMultiplyAddScalar(
  Vector64.CreateScalarUnsafe(z),
  Vector64.CreateScalarUnsafe(y),
  Vector64.CreateScalarUnsafe(x)).ToScalar() on Arm64 in importer.cpp

* Add containment analysis for AdvSimd_FusedMultiplyAddScalar in lower.h lowerarmarch.cpp

* Set tgtPrefOp1 for intrinsics with SIMD-to-SIMD move semantics in lsraarm64.cpp
src/coreclr/src/jit/importer.cpp
src/coreclr/src/jit/lower.h
src/coreclr/src/jit/lowerarmarch.cpp
src/coreclr/src/jit/lsraarm64.cpp