The Zicond extension was ratified in the last few months, with no
changes that affect the LLVM implementation. Although there's surely
more tuning that could be done about when to select Zicond or not, there
are no known correctness issues. Therefore, we should mark support as
non-experimental.
Consider the following pattern:
```
%binop_ = binop %x, %y
%select_ = select %c, %binop_, %x
```
If there is an identity `%identity` operand for `binop`, it is possible to transform
the above code to:
```
%opearand = select %c, %y, %identity
%result = binop %x, %operand
```
This transformation is profitable when `%identity` is all zeroes or
ones.
This patch commits a test for such patterns.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D155481