| ; Test that DAGCombiner gets helped by getKnownBitsForTargetNode() when |
| ; BITCAST nodes are involved on a big-endian target. |
| ; |
| ; RUN: llc -mtriple=s390x-linux-gnu -mcpu=z13 < %s | FileCheck %s |
| |
| define void @fun() { |
| entry: |
| br label %lab0 |
| |
| lab0: |
| %phi = phi i64 [ %sel, %lab0 ], [ 0, %entry ] |
| %add = add nuw nsw i64 %phi, 1 |
| %cmp = icmp eq i64 %add, undef |
| %ins = insertelement <2 x i1> undef, i1 %cmp, i32 0 |
| %xor = xor <2 x i1> %ins, <i1 true, i1 true> |
| %extr = extractelement <2 x i1> %xor, i32 0 |
| ; The EXTRACT_VECTOR_ELT is done first into an i32, and then AND:ed with |
| ; 1. The AND is not actually necessary since the element contains a CC (i1) |
| ; value. Test that the BITCAST nodes in the DAG when computing KnownBits is |
| ; handled so that the AND is removed. If this succeeds, this results in a CHI |
| ; instead of TMLL. |
| |
| ; CHECK-LABEL: # %bb.0: |
| ; CHECK: chi |
| ; CHECK-NOT: tmll |
| ; CHECK: j |
| %sel = select i1 %extr, i64 %add, i64 0 |
| br label %lab0 |
| } |