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