JIT: Support GT_SELECT on xarch (#78879)
authorJakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
Thu, 1 Dec 2022 01:25:28 +0000 (02:25 +0100)
committerGitHub <noreply@github.com>
Thu, 1 Dec 2022 01:25:28 +0000 (17:25 -0800)
commitea060e6d6fd4e687beb4a2e60ce8c13fbadf2f90
treea292328b63712ff1ff64c0713ca669b86eea6cc7
parent85a9dfcdeea437c0d7c8be77a2be71a8786a6727
JIT: Support GT_SELECT on xarch (#78879)

* JIT: Support GT_SELECT on xarch

Add support for conditional select to the xarch backend. Contained
relops are not supported yet, so for now if-conversion will only produce
these nodes under stress on xarch.

* Fix optimization

* Support decomposition

* Clean up a bit

* Do not break loongarch build

* Stress

* Fix VN for GT_SELECT

Hit this in a test that uses DOTNET_JitOptRepeat=*.

* Revert "Stress"

This reverts commit c0e97510835b909451bf1098650a03bc59afe6b2.

* Run jit-format

* Avoid TP impact in release builds while only enabled under stress

* Add comment

* Sigh

* Port fixes
18 files changed:
src/coreclr/jit/codegen.h
src/coreclr/jit/codegenarm64.cpp
src/coreclr/jit/codegenxarch.cpp
src/coreclr/jit/decomposelongs.cpp
src/coreclr/jit/decomposelongs.h
src/coreclr/jit/emitxarch.cpp
src/coreclr/jit/gtlist.h
src/coreclr/jit/ifconversion.cpp
src/coreclr/jit/lower.cpp
src/coreclr/jit/lower.h
src/coreclr/jit/lowerarmarch.cpp
src/coreclr/jit/lowerloongarch64.cpp
src/coreclr/jit/lowerxarch.cpp
src/coreclr/jit/lsra.h
src/coreclr/jit/lsraarm64.cpp
src/coreclr/jit/lsraarmarch.cpp
src/coreclr/jit/lsraxarch.cpp
src/coreclr/jit/valuenum.cpp