[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / CodeGen / ARM / bx_fold.ll
blobf6651ae8004efbd9dff9f226d66cbf70ddf33434
1 ; RUN: llc < %s -mtriple=armv5t-apple-darwin | FileCheck %s
3 define void @test(i32 %Ptr, i8* %L) {
4 entry:
5         br label %bb1
7 bb:             ; preds = %bb1
8         %gep.upgrd.1 = zext i32 %indvar to i64          ; <i64> [#uses=1]
9         %tmp7 = getelementptr i8, i8* %L, i64 %gep.upgrd.1              ; <i8*> [#uses=1]
10         store i8 0, i8* %tmp7
11         %indvar.next = add i32 %indvar, 1               ; <i32> [#uses=1]
12         br label %bb1
14 bb1:            ; preds = %bb, %entry
15         %indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb ]          ; <i32> [#uses=3]
16         %i.0 = bitcast i32 %indvar to i32               ; <i32> [#uses=2]
17         %tmp = tail call i32 (...) @bar( )              ; <i32> [#uses=1]
18         %tmp2 = add i32 %i.0, %tmp              ; <i32> [#uses=1]
19         %Ptr_addr.0 = sub i32 %Ptr, %tmp2               ; <i32> [#uses=0]
20         %tmp12 = icmp eq i32 %i.0, %Ptr         ; <i1> [#uses=1]
21         %tmp12.not = xor i1 %tmp12, true                ; <i1> [#uses=1]
22         %bothcond = and i1 %tmp12.not, false            ; <i1> [#uses=1]
23         br i1 %bothcond, label %bb, label %bb18
25 bb18:           ; preds = %bb1
26 ; CHECK-NOT: bx
27 ; CHECK: pop
28         ret void
31 declare i32 @bar(...)