72 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-- < %s | FileCheck %s3 4declare void @clobber()5 6define void @test(i1 %c, ptr %p, ptr noalias %p2) nounwind {7; CHECK-LABEL: test:8; CHECK: # %bb.0: # %entry9; CHECK-NEXT: pushq %rbp10; CHECK-NEXT: pushq %r1511; CHECK-NEXT: pushq %r1412; CHECK-NEXT: pushq %rbx13; CHECK-NEXT: pushq %rax14; CHECK-NEXT: movq %rdx, %rbx15; CHECK-NEXT: movl %edi, %ebp16; CHECK-NEXT: movq (%rsi), %r1417; CHECK-NEXT: movb $1, %r15b18; CHECK-NEXT: jmp .LBB0_119; CHECK-NEXT: .p2align 420; CHECK-NEXT: .LBB0_4: # %sink21; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=122; CHECK-NEXT: movq %r14, (%rbx)23; CHECK-NEXT: .LBB0_1: # %loop24; CHECK-NEXT: # =>This Inner Loop Header: Depth=125; CHECK-NEXT: testb %r15b, %r15b26; CHECK-NEXT: jne .LBB0_127; CHECK-NEXT: # %bb.2: # %split.328; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=129; CHECK-NEXT: testb $1, %bpl30; CHECK-NEXT: je .LBB0_431; CHECK-NEXT: # %bb.3: # %clobber32; CHECK-NEXT: # in Loop: Header=BB0_1 Depth=133; CHECK-NEXT: callq clobber@PLT34; CHECK-NEXT: jmp .LBB0_435entry:36 %val = load i64, ptr %p, align 837 br label %loop38 39loop:40 switch i8 undef, label %unreachable [41 i8 0, label %latch42 i8 1, label %split.143 i8 2, label %split.244 i8 3, label %split.345 ]46 47unreachable:48 unreachable49 50split.3:51 br i1 %c, label %clobber, label %sink52 53split.1:54 br label %latch55 56split.2:57 br label %latch58 59clobber:60 call void @clobber()61 br label %sink62 63sink:64 store i64 %val, ptr %p2, align 865 br label %latch66 67latch:68 %phi = phi i64 [ 0, %sink ], [ 0, %split.2 ], [ 1, %split.1 ], [ 0, %loop ]69 %phi.live = add i64 %phi, 070 br label %loop71}72