Uh oh!
There was an error while loading. Please reload this page.
[mono] MiniJIT OP_XEQUAL for floats - #77770
Conversation
matouskozak
commented
Nov 2, 2022
/azp run runtime-extra-platforms |
|
Azure Pipelines successfully started running 1 pipeline(s). |
tannergooding
commented
Nov 2, 2022
For the integer case Keeping |
That was originally introduced by me in 1eab0fe. It mimicked what Mono/LLVM was producing at that time. There were some instructions where the B/W/D/Q variants were not introduced in the same CPU extension set. In this specific case |
tannergooding
commented
Nov 2, 2022
Yes, there are many cases of the xplat functionality where you have to special case and decide on an alternative for SSE3-SSE4.2 specific functionality. That is normal and expected of the compiler handling these APIs. I called this out because while it "works" and is valid today, it leaves Mono as being suboptimal compared to RyuJIT and that will negatively impact several scenarios and provide an overall worse user experience for the .NET community when they need to use Mono, so it is something that should be eventually fixed and handled. |
I am fine with emitting
The Mini JIT is already a suboptimal case. It has notoriously bad register allocation for the vector use case (although it's still much better than a full software fallback). The main reason to maintain it is to keep the same feature set between the Mini JIT, LLVM JIT and LLVM AOT. Otherwise you run into cases where various |
Potential improvent for Current behavior: Better behavior would be: |
matouskozak
commented
Nov 3, 2022
/azp run runtime-extra-platforms |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
matouskozak
commented
Nov 9, 2022
/azp run runtime-extra-platforms |
|
Commenter does not have sufficient privileges for PR 77770 in repo dotnet/runtime |
fanyang-mono
commented
Nov 9, 2022
/azp run runtime-extra-platforms |
|
Azure Pipelines successfully started running 1 pipeline(s). |
fanyang-mono
commented
Nov 11, 2022
CI Test failures are not related to this PR. |
Floating points NaN must be treated differently. Adding check to MiniJIT for
OP_XEQUALto use floating point comparison.Before:
Emitting
pcmpeqdfor every input type.Now:
Emitting
cmpeqpsandcmpeqpdfor doubles and floats, respectively. For integer inputs emittingpcmpeqdas before.Fixing : #74781