brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.1 KiB · 93c82a4 Raw
235 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck %s3 4@.str2 = private unnamed_addr constant [7 x i8] c"memchr\00", align 15@.str3 = private unnamed_addr constant [11 x i8] c"bsd_memchr\00", align 16@str4 = private unnamed_addr constant [5 x i8] c"Bug!\00"7 8; Make sure at end of do.cond.i, we jump to do.body.i first to have a tighter9; inner loop.10define i32 @test_branches_order() uwtable ssp {11; CHECK-LABEL: test_branches_order:12; CHECK:       ## %bb.0: ## %entry13; CHECK-NEXT:    pushq %rbp14; CHECK-NEXT:    .cfi_def_cfa_offset 1615; CHECK-NEXT:    pushq %r1516; CHECK-NEXT:    .cfi_def_cfa_offset 2417; CHECK-NEXT:    pushq %r1418; CHECK-NEXT:    .cfi_def_cfa_offset 3219; CHECK-NEXT:    pushq %r1320; CHECK-NEXT:    .cfi_def_cfa_offset 4021; CHECK-NEXT:    pushq %r1222; CHECK-NEXT:    .cfi_def_cfa_offset 4823; CHECK-NEXT:    pushq %rbx24; CHECK-NEXT:    .cfi_def_cfa_offset 5625; CHECK-NEXT:    subq $1001016, %rsp ## imm = 0xF463826; CHECK-NEXT:    .cfi_def_cfa_offset 100107227; CHECK-NEXT:    .cfi_offset %rbx, -5628; CHECK-NEXT:    .cfi_offset %r12, -4829; CHECK-NEXT:    .cfi_offset %r13, -4030; CHECK-NEXT:    .cfi_offset %r14, -3231; CHECK-NEXT:    .cfi_offset %r15, -2432; CHECK-NEXT:    .cfi_offset %rbp, -1633; CHECK-NEXT:    movq ___stack_chk_guard@GOTPCREL(%rip), %rax34; CHECK-NEXT:    movq (%rax), %rax35; CHECK-NEXT:    movq %rax, {{[0-9]+}}(%rsp)36; CHECK-NEXT:    xorl %ebx, %ebx37; CHECK-NEXT:    leaq -{{[0-9]+}}(%rsp), %r1438; CHECK-NEXT:    movq %rsp, %r1539; CHECK-NEXT:    jmp LBB0_140; CHECK-NEXT:    .p2align 441; CHECK-NEXT:  LBB0_6: ## %for.inc942; CHECK-NEXT:    ## in Loop: Header=BB0_1 Depth=143; CHECK-NEXT:    incl %ebx44; CHECK-NEXT:  LBB0_1: ## %for.cond45; CHECK-NEXT:    ## =>This Loop Header: Depth=146; CHECK-NEXT:    ## Child Loop BB0_3 Depth 247; CHECK-NEXT:    cmpl $999, %ebx ## imm = 0x3E748; CHECK-NEXT:    jg LBB0_749; CHECK-NEXT:  ## %bb.2: ## %for.cond1.preheader50; CHECK-NEXT:    ## in Loop: Header=BB0_1 Depth=151; CHECK-NEXT:    movl $-1, %ebp52; CHECK-NEXT:    movq %r15, %rdi53; CHECK-NEXT:    movq %r14, %r1254; CHECK-NEXT:    .p2align 455; CHECK-NEXT:  LBB0_3: ## %for.cond156; CHECK-NEXT:    ## Parent Loop BB0_1 Depth=157; CHECK-NEXT:    ## => This Inner Loop Header: Depth=258; CHECK-NEXT:    incl %ebp59; CHECK-NEXT:    cmpl $999, %ebp ## imm = 0x3E760; CHECK-NEXT:    jg LBB0_661; CHECK-NEXT:  ## %bb.4: ## %for.body362; CHECK-NEXT:    ## in Loop: Header=BB0_3 Depth=263; CHECK-NEXT:    addq $1002, %r12 ## imm = 0x3EA64; CHECK-NEXT:    leaq 1001(%rdi), %r1365; CHECK-NEXT:    movl $1000, %edx ## imm = 0x3E866; CHECK-NEXT:    movl $120, %esi67; CHECK-NEXT:    callq _memchr68; CHECK-NEXT:    cmpq %rax, %r1269; CHECK-NEXT:    movq %r13, %rdi70; CHECK-NEXT:    je LBB0_371; CHECK-NEXT:    jmp LBB0_572; CHECK-NEXT:  LBB0_7: ## %for.end1173; CHECK-NEXT:    leaq L_.str2(%rip), %rdi74; CHECK-NEXT:    callq _puts75; CHECK-NEXT:    xorl %eax, %eax76; CHECK-NEXT:    movq %rsp, %rcx77; CHECK-NEXT:    jmp LBB0_878; CHECK-NEXT:    .p2align 479; CHECK-NEXT:  LBB0_15: ## %for.inc3880; CHECK-NEXT:    ## in Loop: Header=BB0_8 Depth=181; CHECK-NEXT:    incl %eax82; CHECK-NEXT:  LBB0_8: ## %for.cond1483; CHECK-NEXT:    ## =>This Loop Header: Depth=184; CHECK-NEXT:    ## Child Loop BB0_10 Depth 285; CHECK-NEXT:    ## Child Loop BB0_12 Depth 386; CHECK-NEXT:    cmpl $999, %eax ## imm = 0x3E787; CHECK-NEXT:    jg LBB0_1688; CHECK-NEXT:  ## %bb.9: ## %for.cond18.preheader89; CHECK-NEXT:    ## in Loop: Header=BB0_8 Depth=190; CHECK-NEXT:    movq %rcx, %rdx91; CHECK-NEXT:    xorl %esi, %esi92; CHECK-NEXT:    xorl %edi, %edi93; CHECK-NEXT:    jmp LBB0_1094; CHECK-NEXT:    .p2align 495; CHECK-NEXT:  LBB0_14: ## %exit96; CHECK-NEXT:    ## in Loop: Header=BB0_10 Depth=297; CHECK-NEXT:    addq %rsi, %r898; CHECK-NEXT:    incq %rdi99; CHECK-NEXT:    decq %rsi100; CHECK-NEXT:    addq $1001, %rdx ## imm = 0x3E9101; CHECK-NEXT:    cmpq $-1000, %r8 ## imm = 0xFC18102; CHECK-NEXT:    jne LBB0_5103; CHECK-NEXT:  LBB0_10: ## %for.cond18104; CHECK-NEXT:    ## Parent Loop BB0_8 Depth=1105; CHECK-NEXT:    ## => This Loop Header: Depth=2106; CHECK-NEXT:    ## Child Loop BB0_12 Depth 3107; CHECK-NEXT:    cmpl $999, %edi ## imm = 0x3E7108; CHECK-NEXT:    jg LBB0_15109; CHECK-NEXT:  ## %bb.11: ## %for.body20110; CHECK-NEXT:    ## in Loop: Header=BB0_10 Depth=2111; CHECK-NEXT:    movq $-1000, %r8 ## imm = 0xFC18112; CHECK-NEXT:    .p2align 4113; CHECK-NEXT:  LBB0_12: ## %do.body.i114; CHECK-NEXT:    ## Parent Loop BB0_8 Depth=1115; CHECK-NEXT:    ## Parent Loop BB0_10 Depth=2116; CHECK-NEXT:    ## => This Inner Loop Header: Depth=3117; CHECK-NEXT:    cmpb $120, 1000(%rdx,%r8)118; CHECK-NEXT:    je LBB0_14119; CHECK-NEXT:  ## %bb.13: ## %do.cond.i120; CHECK-NEXT:    ## in Loop: Header=BB0_12 Depth=3121; CHECK-NEXT:    incq %r8122; CHECK-NEXT:    jne LBB0_12123; CHECK-NEXT:  LBB0_5: ## %if.then124; CHECK-NEXT:    leaq L_str4(%rip), %rdi125; CHECK-NEXT:    callq _puts126; CHECK-NEXT:    movl $1, %edi127; CHECK-NEXT:    callq _exit128; CHECK-NEXT:  LBB0_16: ## %for.end40129; CHECK-NEXT:    leaq L_.str3(%rip), %rdi130; CHECK-NEXT:    callq _puts131; CHECK-NEXT:    movq ___stack_chk_guard@GOTPCREL(%rip), %rax132; CHECK-NEXT:    movq (%rax), %rax133; CHECK-NEXT:    cmpq {{[0-9]+}}(%rsp), %rax134; CHECK-NEXT:    jne LBB0_18135; CHECK-NEXT:  ## %bb.17: ## %for.end40136; CHECK-NEXT:    xorl %eax, %eax137; CHECK-NEXT:    addq $1001016, %rsp ## imm = 0xF4638138; CHECK-NEXT:    popq %rbx139; CHECK-NEXT:    popq %r12140; CHECK-NEXT:    popq %r13141; CHECK-NEXT:    popq %r14142; CHECK-NEXT:    popq %r15143; CHECK-NEXT:    popq %rbp144; CHECK-NEXT:    retq145; CHECK-NEXT:  LBB0_18: ## %for.end40146; CHECK-NEXT:    callq ___stack_chk_fail147entry:148  %strs = alloca [1000 x [1001 x i8]], align 16149  br label %for.cond150 151for.cond:152  %j.0 = phi i32 [ 0, %entry ], [ %inc10, %for.inc9 ]153  %cmp = icmp slt i32 %j.0, 1000154  br i1 %cmp, label %for.cond1, label %for.end11155 156for.cond1:157  %indvars.iv50 = phi i64 [ %indvars.iv.next51, %for.body3 ], [ 0, %for.cond ]158  %0 = trunc i64 %indvars.iv50 to i32159  %cmp2 = icmp slt i32 %0, 1000160  br i1 %cmp2, label %for.body3, label %for.inc9161 162for.body3:163  %arraydecay = getelementptr inbounds [1000 x [1001 x i8]], ptr %strs, i64 0, i64 %indvars.iv50, i64 0164  %call = call ptr @memchr(ptr %arraydecay, i32 120, i64 1000)165  %add.ptr = getelementptr inbounds [1000 x [1001 x i8]], ptr %strs, i64 0, i64 %indvars.iv50, i64 %indvars.iv50166  %cmp7 = icmp eq ptr %call, %add.ptr167  %indvars.iv.next51 = add i64 %indvars.iv50, 1168  br i1 %cmp7, label %for.cond1, label %if.then169 170if.then:171  %puts = call i32 @puts(ptr @str4)172  call void @exit(i32 1) noreturn173  unreachable174 175for.inc9:176  %inc10 = add nsw i32 %j.0, 1177  br label %for.cond178 179for.end11:180  %puts42 = call i32 @puts(ptr @.str2)181  br label %for.cond14182 183for.cond14:184  %j13.0 = phi i32 [ 0, %for.end11 ], [ %inc39, %for.inc38 ]185  %cmp15 = icmp slt i32 %j13.0, 1000186  br i1 %cmp15, label %for.cond18, label %for.end40187 188for.cond18:189  %indvars.iv = phi i64 [ %indvars.iv.next, %exit ], [ 0, %for.cond14 ]190  %1 = trunc i64 %indvars.iv to i32191  %cmp19 = icmp slt i32 %1, 1000192  br i1 %cmp19, label %for.body20, label %for.inc38193 194for.body20:195  %arraydecay24 = getelementptr inbounds [1000 x [1001 x i8]], ptr %strs, i64 0, i64 %indvars.iv, i64 0196  br label %do.body.i197 198do.body.i:199  %n.addr.0.i = phi i64 [ %dec.i, %do.cond.i ], [ 1000, %for.body20 ]200  %p.0.i = phi ptr [ %incdec.ptr.i, %do.cond.i ], [ %arraydecay24, %for.body20 ]201  %2 = load i8, ptr %p.0.i, align 1202  %cmp3.i = icmp eq i8 %2, 120203  br i1 %cmp3.i, label %exit, label %do.cond.i204 205do.cond.i:206  %incdec.ptr.i = getelementptr inbounds i8, ptr %p.0.i, i64 1207  %dec.i = add i64 %n.addr.0.i, -1208  %cmp5.i = icmp eq i64 %dec.i, 0209  br i1 %cmp5.i, label %if.then32, label %do.body.i210 211exit:212  %add.ptr30 = getelementptr inbounds [1000 x [1001 x i8]], ptr %strs, i64 0, i64 %indvars.iv, i64 %indvars.iv213  %cmp31 = icmp eq ptr %p.0.i, %add.ptr30214  %indvars.iv.next = add i64 %indvars.iv, 1215  br i1 %cmp31, label %for.cond18, label %if.then32216 217if.then32:218  %puts43 = call i32 @puts(ptr @str4)219  call void @exit(i32 1) noreturn220  unreachable221 222for.inc38:223  %inc39 = add nsw i32 %j13.0, 1224  br label %for.cond14225 226for.end40:227  %puts44 = call i32 @puts(ptr @.str3)228  ret i32 0229}230 231declare ptr @memchr(ptr, i32, i64) nounwind readonly232declare void @exit(i32) noreturn233declare i32 @puts(ptr nocapture) nounwind234 235