PPC JIT optimizations (System.Math instruction inlining) (#11964)
commita4eee021952f965c2fd789868be5f6887db1f696
authorCalvin Buckley <calvin@cmpct.info>
Thu, 28 Feb 2019 14:31:12 +0000 (28 10:31 -0400)
committerLudovic Henry <luhenry@microsoft.com>
Thu, 28 Feb 2019 14:31:12 +0000 (28 09:31 -0500)
tree7bcbb12714d5fcc017d975e7d64c2c9cf1ccfe63
parent3487962a8268b0b969e2b0d185f3e3f8cde8e432
PPC JIT optimizations (System.Math instruction inlining) (#11964)

* [ppc] Optimize floating point performance in the JIT sqrt/sqrtf/abs

* [ppc] Integer Min/Max inlining wiht POWER5 isel instruction

Compresses a function call down to two instruction, for both signed
and unsigned, long and int. Needs to check for POWE5 though, and I
don't know the effects of this on ppc32. FP version using fsel is
also desirable, but not in the scope of this commit.

* [ppc] Check for POWER5 compatible CPU before using isel

* [ppc] Don't use long min/max inlining for ppc32

Other 64-bit operations are marked for ppc64 only.

* [ppc] also ifdef that out for ppc32 too

* [ppc] Rounding function optimizations
mono/arch/ppc/ppc-codegen.h
mono/mini/cpu-ppc.md
mono/mini/cpu-ppc64.md
mono/mini/mini-ops.h
mono/mini/mini-ppc.c
mono/utils/mono-hwcap-ppc.c
mono/utils/mono-hwcap-vars.h