Add lowering support for conditional nodes (#71705)
authorAlan Hayward <a74nh@users.noreply.github.com>
Tue, 9 Aug 2022 21:19:55 +0000 (22:19 +0100)
committerGitHub <noreply@github.com>
Tue, 9 Aug 2022 21:19:55 +0000 (14:19 -0700)
commit6110ab6266c5934ce38c8181ce3a33d8e1809ba1
treea21074f00a574fd57b228f4b95f89fea9fda23e1
parent4211dc40d06195682d4b0fc9a220bdb75732d720
Add lowering support for conditional nodes (#71705)

* Add lowering support for conditional nodes

* Contain conditionals

* Fix formatting

* Use AND and CMP nodes

* Fix formatting

* Remove LowerNodeCC changes

Change-Id: Icdf1828905c4a3f210b06e047ef3c0ac913d71f7
CustomizedGitHooks: yes

* Remove asserts & fix variable names

* Better contain checks for conditional compares

* Simpler contained conditions codegen

* Remove Conditional Compare nodes

* Minor cleanups

* Generate AND compare chains

* Fix unsigned compares && reduce chain check recursion

* Add compare chain tests

* Review fixes

* Use GenCondition

* Change CompareChainSize to IsValidCompareChain

* Move lowering functions to lowerarmarch

* Formatting fixes

* Fix SELECT issues

* Fix test output messages.

* Better explanations for AND chains

* Compare chains should not contain tst compares

Change-Id: I8a1761e1e89f589e1daf0318e120aae5dd3d7241
CustomizedGitHooks: yes

* Don't allow tst compares in codegeneration of compare chains

* Add tests for chains with tst compares

* Don't allow tst compares in lsrabuild of compare chains
22 files changed:
src/coreclr/jit/codegen.h
src/coreclr/jit/codegenarm64.cpp
src/coreclr/jit/codegenarmarch.cpp
src/coreclr/jit/codegenlinear.cpp
src/coreclr/jit/compiler.h
src/coreclr/jit/compiler.hpp
src/coreclr/jit/gentree.cpp
src/coreclr/jit/gentree.h
src/coreclr/jit/gtlist.h
src/coreclr/jit/gtstructs.h
src/coreclr/jit/instr.cpp
src/coreclr/jit/lower.cpp
src/coreclr/jit/lower.h
src/coreclr/jit/lowerarmarch.cpp
src/coreclr/jit/lsraarm64.cpp
src/coreclr/jit/lsrabuild.cpp
src/tests/JIT/opt/Compares/compareAnd2Chains.cs [new file with mode: 0644]
src/tests/JIT/opt/Compares/compareAnd2Chains.csproj [new file with mode: 0644]
src/tests/JIT/opt/Compares/compareAnd3Chains.cs [new file with mode: 0644]
src/tests/JIT/opt/Compares/compareAnd3Chains.csproj [new file with mode: 0644]
src/tests/JIT/opt/Compares/compareAndTestChains.cs [new file with mode: 0644]
src/tests/JIT/opt/Compares/compareAndTestChains.csproj [new file with mode: 0644]