diff options
author | Craig Topper <craig.topper@sifive.com> | 2021-03-15 11:44:59 -0700 |
---|---|---|
committer | Craig Topper <craig.topper@sifive.com> | 2021-03-15 11:54:01 -0700 |
commit | 41759c3d92c5445857a89087a877c47bef907f13 (patch) | |
tree | acd3dc718810dd20d24a0b304c9513ae0400b970 /llvm/lib/CodeGen/BasicBlockSections.cpp | |
parent | f675b3df4848bae5a8203c2508b721b41086471f (diff) | |
download | llvm-41759c3d92c5445857a89087a877c47bef907f13.zip llvm-41759c3d92c5445857a89087a877c47bef907f13.tar.gz llvm-41759c3d92c5445857a89087a877c47bef907f13.tar.bz2 |
[RISCV] Add RISCVISD::BR_CC similar to RISCVISD::SELECT_CC.
This allows me to introduce similar combines for branches as
we have recently added for SELECT_CC. Some of them are less
useful for standalone setccs and only help branch instructions.
By having a BR_CC node its easier to only affect branches.
I'm using CondCodeSDNode to make isel patterns easier to
write so we can refer to the codes by name. SELECT_CC uses a
constant instead.
I've translated the condition code just like SELECT_CC so
we need less patterns for the swapped conditions. This
includes special cases for X < 1 and X > -1 that get translated
to blez and bgez by using a 0 constant.
computeKnownBitsForTargetNode support for SELECT_CC is added
to allow MaskedValueIsZero to work for cases where the true
and false values of the SELECT_CC are setccs and the
result of the SELECT_CC is used by a BR_CC. This was needed
to avoid regressions in some of the overflow tests.
Reviewed By: luismarques
Differential Revision: https://reviews.llvm.org/D98159
Diffstat (limited to 'llvm/lib/CodeGen/BasicBlockSections.cpp')
0 files changed, 0 insertions, 0 deletions