brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.6 KiB · 31f004e Raw
528 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc < %s -mtriple=arm64-apple-ios7.0 -regalloc=greedy -regalloc-csr-first-time-cost=15 | FileCheck %s3 4; This testing case is reduced from 197.parser prune_match function.5; We make sure that we do not use callee-saved registers (x19 to x25).6; rdar://161620057 8%struct.List_o_links_struct = type { i32, i32, i32, ptr }9%struct.Connector_struct = type { i16, i16, i8, i8, ptr, ptr }10%struct._RuneLocale = type { [8 x i8], [32 x i8], ptr, ptr, i32, [256 x i32], [256 x i32], [256 x i32], %struct._RuneRange, %struct._RuneRange, %struct._RuneRange, ptr, i32, i32, ptr }11%struct._RuneRange = type { i32, ptr }12%struct._RuneEntry = type { i32, i32, i32, ptr }13%struct._RuneCharClass = type { [14 x i8], i32 }14%struct.Exp_struct = type { i8, i8, i8, i8, %union.anon }15%union.anon = type { ptr }16%struct.E_list_struct = type { ptr, ptr }17%struct.domain_struct = type { ptr, i32, ptr, i32, i32, ptr, ptr }18%struct.d_tree_leaf_struct = type { ptr, i32, ptr }19@_DefaultRuneLocale = external global %struct._RuneLocale20declare i32 @__maskrune(i32, i64) #721define fastcc i32 @prune_match(ptr nocapture readonly %a, ptr nocapture readonly %b) #9 {22; CHECK-LABEL: prune_match:23; CHECK:       ; %bb.0: ; %entry24; CHECK-NEXT:    ldrh w8, [x0]25; CHECK-NEXT:    ldrh w9, [x1]26; CHECK-NEXT:    cmp w8, w927; CHECK-NEXT:    b.ne LBB0_4728; CHECK-NEXT:  ; %bb.1: ; %if.end29; CHECK-NEXT:    sub sp, sp, #6430; CHECK-NEXT:    stp x29, x30, [sp, #48] ; 16-byte Folded Spill31; CHECK-NEXT:    .cfi_def_cfa_offset 6432; CHECK-NEXT:    .cfi_offset w30, -833; CHECK-NEXT:    .cfi_offset w29, -1634; CHECK-NEXT:  Lloh0:35; CHECK-NEXT:    adrp x14, __DefaultRuneLocale@GOTPAGE36; CHECK-NEXT:    ldrb w12, [x0, #4]37; CHECK-NEXT:    ldrb w13, [x1, #4]38; CHECK-NEXT:    ldr x9, [x0, #16]39; CHECK-NEXT:    ldr x10, [x1, #16]40; CHECK-NEXT:    mov x11, xzr41; CHECK-NEXT:  Lloh1:42; CHECK-NEXT:    ldr x14, [x14, __DefaultRuneLocale@GOTPAGEOFF]43; CHECK-NEXT:    ldrsb x8, [x9, x11]44; CHECK-NEXT:    tbz x8, #63, LBB0_345; CHECK-NEXT:  LBB0_2: ; %cond.false.i.i46; CHECK-NEXT:    stp x9, x0, [sp, #32] ; 16-byte Folded Spill47; CHECK-NEXT:    mov w0, w848; CHECK-NEXT:    mov w1, #32768 ; =0x800049; CHECK-NEXT:    str x10, [sp, #8] ; 8-byte Spill50; CHECK-NEXT:    str x11, [sp, #24] ; 8-byte Spill51; CHECK-NEXT:    str w12, [sp, #4] ; 4-byte Spill52; CHECK-NEXT:    str w13, [sp, #20] ; 4-byte Spill53; CHECK-NEXT:    bl ___maskrune54; CHECK-NEXT:  Lloh2:55; CHECK-NEXT:    adrp x14, __DefaultRuneLocale@GOTPAGE56; CHECK-NEXT:    mov w8, w057; CHECK-NEXT:  Lloh3:58; CHECK-NEXT:    ldr x14, [x14, __DefaultRuneLocale@GOTPAGEOFF]59; CHECK-NEXT:    ldp x11, x9, [sp, #24] ; 16-byte Folded Reload60; CHECK-NEXT:    ldr w13, [sp, #20] ; 4-byte Reload61; CHECK-NEXT:    ldr w12, [sp, #4] ; 4-byte Reload62; CHECK-NEXT:    ldr x10, [sp, #8] ; 8-byte Reload63; CHECK-NEXT:    ldr x0, [sp, #40] ; 8-byte Reload64; CHECK-NEXT:    cbz w8, LBB0_465; CHECK-NEXT:    b LBB0_666; CHECK-NEXT:  LBB0_3: ; %cond.true.i.i67; CHECK-NEXT:    add x8, x14, x8, lsl #268; CHECK-NEXT:    ldr w8, [x8, #60]69; CHECK-NEXT:    and w8, w8, #0x800070; CHECK-NEXT:    cbnz w8, LBB0_671; CHECK-NEXT:  LBB0_4: ; %lor.rhs72; CHECK-NEXT:    ldrsb x8, [x10, x11]73; CHECK-NEXT:    tbnz x8, #63, LBB0_874; CHECK-NEXT:  ; %bb.5: ; %cond.true.i.i21775; CHECK-NEXT:    add x8, x14, x8, lsl #276; CHECK-NEXT:    ldr w8, [x8, #60]77; CHECK-NEXT:    and w8, w8, #0x800078; CHECK-NEXT:    cbz w8, LBB0_979; CHECK-NEXT:  LBB0_6: ; %while.body80; CHECK-NEXT:    ldrb w8, [x9, x11]81; CHECK-NEXT:    ldrb w15, [x10, x11]82; CHECK-NEXT:    cmp w8, w1583; CHECK-NEXT:    b.ne LBB0_4284; CHECK-NEXT:  ; %bb.7: ; %if.end1785; CHECK-NEXT:    add x11, x11, #186; CHECK-NEXT:    ldrsb x8, [x9, x11]87; CHECK-NEXT:    tbz x8, #63, LBB0_388; CHECK-NEXT:    b LBB0_289; CHECK-NEXT:  LBB0_8: ; %cond.false.i.i21990; CHECK-NEXT:    stp x9, x0, [sp, #32] ; 16-byte Folded Spill91; CHECK-NEXT:    mov w0, w892; CHECK-NEXT:    mov w1, #32768 ; =0x800093; CHECK-NEXT:    str x10, [sp, #8] ; 8-byte Spill94; CHECK-NEXT:    str x11, [sp, #24] ; 8-byte Spill95; CHECK-NEXT:    str w12, [sp, #4] ; 4-byte Spill96; CHECK-NEXT:    str w13, [sp, #20] ; 4-byte Spill97; CHECK-NEXT:    bl ___maskrune98; CHECK-NEXT:  Lloh4:99; CHECK-NEXT:    adrp x14, __DefaultRuneLocale@GOTPAGE100; CHECK-NEXT:    mov w8, w0101; CHECK-NEXT:  Lloh5:102; CHECK-NEXT:    ldr x14, [x14, __DefaultRuneLocale@GOTPAGEOFF]103; CHECK-NEXT:    ldp x11, x9, [sp, #24] ; 16-byte Folded Reload104; CHECK-NEXT:    ldr w13, [sp, #20] ; 4-byte Reload105; CHECK-NEXT:    ldr w12, [sp, #4] ; 4-byte Reload106; CHECK-NEXT:    ldr x10, [sp, #8] ; 8-byte Reload107; CHECK-NEXT:    ldr x0, [sp, #40] ; 8-byte Reload108; CHECK-NEXT:    cbnz w8, LBB0_6109; CHECK-NEXT:  LBB0_9: ; %while.end110; CHECK-NEXT:    orr w8, w13, w12111; CHECK-NEXT:    cbnz w8, LBB0_24112; CHECK-NEXT:  ; %bb.10: ; %if.then23113; CHECK-NEXT:    ldr x12, [x0, #16]114; CHECK-NEXT:    ldrb w8, [x9, x11]115; CHECK-NEXT:    ldrb w13, [x12]116; CHECK-NEXT:    cmp w13, #83117; CHECK-NEXT:    b.eq LBB0_19118; CHECK-NEXT:  LBB0_11: ; %while.cond59.preheader119; CHECK-NEXT:    cbz w8, LBB0_23120; CHECK-NEXT:  LBB0_12: ; %land.rhs.preheader121; CHECK-NEXT:    add x12, x9, x11122; CHECK-NEXT:    add x9, x10, x11123; CHECK-NEXT:    add x10, x12, #1124; CHECK-NEXT:  LBB0_13: ; %land.rhs125; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1126; CHECK-NEXT:    ldrb w11, [x9], #1127; CHECK-NEXT:    cbz w11, LBB0_23128; CHECK-NEXT:  ; %bb.14: ; %while.body66129; CHECK-NEXT:    ; in Loop: Header=BB0_13 Depth=1130; CHECK-NEXT:    cmp w8, #42131; CHECK-NEXT:    b.eq LBB0_18132; CHECK-NEXT:  ; %bb.15: ; %while.body66133; CHECK-NEXT:    ; in Loop: Header=BB0_13 Depth=1134; CHECK-NEXT:    cmp w11, #42135; CHECK-NEXT:    b.eq LBB0_18136; CHECK-NEXT:  ; %bb.16: ; %lor.lhs.false74137; CHECK-NEXT:    ; in Loop: Header=BB0_13 Depth=1138; CHECK-NEXT:    cmp w8, w11139; CHECK-NEXT:    mov w0, wzr140; CHECK-NEXT:    b.ne LBB0_43141; CHECK-NEXT:  ; %bb.17: ; %lor.lhs.false74142; CHECK-NEXT:    ; in Loop: Header=BB0_13 Depth=1143; CHECK-NEXT:    cmp w8, #94144; CHECK-NEXT:    b.eq LBB0_43145; CHECK-NEXT:  LBB0_18: ; %if.then83146; CHECK-NEXT:    ; in Loop: Header=BB0_13 Depth=1147; CHECK-NEXT:    ldrb w8, [x10], #1148; CHECK-NEXT:    mov w0, #1 ; =0x1149; CHECK-NEXT:    cbnz w8, LBB0_13150; CHECK-NEXT:    b LBB0_43151; CHECK-NEXT:  LBB0_19: ; %land.lhs.true28152; CHECK-NEXT:    cbz w8, LBB0_23153; CHECK-NEXT:  ; %bb.20: ; %land.lhs.true28154; CHECK-NEXT:    cmp w8, #112155; CHECK-NEXT:    b.ne LBB0_12156; CHECK-NEXT:  ; %bb.21: ; %land.lhs.true35157; CHECK-NEXT:    ldrb w13, [x10, x11]158; CHECK-NEXT:    cmp w13, #112159; CHECK-NEXT:    b.ne LBB0_12160; CHECK-NEXT:  ; %bb.22: ; %land.lhs.true43161; CHECK-NEXT:    sub x12, x9, x12162; CHECK-NEXT:    add x12, x12, x11163; CHECK-NEXT:    cmp x12, #1164; CHECK-NEXT:    b.ne LBB0_44165; CHECK-NEXT:  LBB0_23:166; CHECK-NEXT:    mov w0, #1 ; =0x1167; CHECK-NEXT:    b LBB0_43168; CHECK-NEXT:  LBB0_24: ; %if.else88169; CHECK-NEXT:    cmp w12, #1170; CHECK-NEXT:    b.ne LBB0_33171; CHECK-NEXT:  ; %bb.25: ; %if.else88172; CHECK-NEXT:    cmp w13, #2173; CHECK-NEXT:    b.ne LBB0_33174; CHECK-NEXT:  ; %bb.26: ; %while.cond95.preheader175; CHECK-NEXT:    ldrb w12, [x9, x11]176; CHECK-NEXT:    cbz w12, LBB0_23177; CHECK-NEXT:  ; %bb.27: ; %land.rhs99.preheader178; CHECK-NEXT:    mov x8, xzr179; CHECK-NEXT:    mov w0, #1 ; =0x1180; CHECK-NEXT:    b LBB0_29181; CHECK-NEXT:  LBB0_28: ; %if.then117182; CHECK-NEXT:    ; in Loop: Header=BB0_29 Depth=1183; CHECK-NEXT:    add x12, x9, x8184; CHECK-NEXT:    add x8, x8, #1185; CHECK-NEXT:    add x12, x12, x11186; CHECK-NEXT:    ldrb w12, [x12, #1]187; CHECK-NEXT:    cbz w12, LBB0_43188; CHECK-NEXT:  LBB0_29: ; %land.rhs99189; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1190; CHECK-NEXT:    add x13, x10, x8191; CHECK-NEXT:    ldrb w13, [x13, x11]192; CHECK-NEXT:    cbz w13, LBB0_23193; CHECK-NEXT:  ; %bb.30: ; %while.body104194; CHECK-NEXT:    ; in Loop: Header=BB0_29 Depth=1195; CHECK-NEXT:    cmp w12, w13196; CHECK-NEXT:    b.eq LBB0_28197; CHECK-NEXT:  ; %bb.31: ; %while.body104198; CHECK-NEXT:    ; in Loop: Header=BB0_29 Depth=1199; CHECK-NEXT:    cmp w12, #42200; CHECK-NEXT:    b.eq LBB0_28201; CHECK-NEXT:  ; %bb.32: ; %while.body104202; CHECK-NEXT:    ; in Loop: Header=BB0_29 Depth=1203; CHECK-NEXT:    cmp w13, #94204; CHECK-NEXT:    b.eq LBB0_28205; CHECK-NEXT:    b LBB0_42206; CHECK-NEXT:  LBB0_33: ; %if.else123207; CHECK-NEXT:    cmp w13, #1208; CHECK-NEXT:    mov w0, wzr209; CHECK-NEXT:    b.ne LBB0_43210; CHECK-NEXT:  ; %bb.34: ; %if.else123211; CHECK-NEXT:    cmp w12, #2212; CHECK-NEXT:    b.ne LBB0_43213; CHECK-NEXT:  ; %bb.35: ; %while.cond130.preheader214; CHECK-NEXT:    ldrb w8, [x9, x11]215; CHECK-NEXT:    cbz w8, LBB0_23216; CHECK-NEXT:  ; %bb.36: ; %land.rhs134.preheader217; CHECK-NEXT:    mov x12, xzr218; CHECK-NEXT:    mov w0, #1 ; =0x1219; CHECK-NEXT:    b LBB0_38220; CHECK-NEXT:  LBB0_37: ; %if.then152221; CHECK-NEXT:    ; in Loop: Header=BB0_38 Depth=1222; CHECK-NEXT:    add x8, x9, x12223; CHECK-NEXT:    add x12, x12, #1224; CHECK-NEXT:    add x8, x8, x11225; CHECK-NEXT:    ldrb w8, [x8, #1]226; CHECK-NEXT:    cbz w8, LBB0_43227; CHECK-NEXT:  LBB0_38: ; %land.rhs134228; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1229; CHECK-NEXT:    add x13, x10, x12230; CHECK-NEXT:    ldrb w13, [x13, x11]231; CHECK-NEXT:    cbz w13, LBB0_23232; CHECK-NEXT:  ; %bb.39: ; %while.body139233; CHECK-NEXT:    ; in Loop: Header=BB0_38 Depth=1234; CHECK-NEXT:    cmp w8, w13235; CHECK-NEXT:    b.eq LBB0_37236; CHECK-NEXT:  ; %bb.40: ; %while.body139237; CHECK-NEXT:    ; in Loop: Header=BB0_38 Depth=1238; CHECK-NEXT:    cmp w13, #42239; CHECK-NEXT:    b.eq LBB0_37240; CHECK-NEXT:  ; %bb.41: ; %while.body139241; CHECK-NEXT:    ; in Loop: Header=BB0_38 Depth=1242; CHECK-NEXT:    cmp w8, #94243; CHECK-NEXT:    b.eq LBB0_37244; CHECK-NEXT:  LBB0_42:245; CHECK-NEXT:    mov w0, wzr246; CHECK-NEXT:  LBB0_43:247; CHECK-NEXT:    ldp x29, x30, [sp, #48] ; 16-byte Folded Reload248; CHECK-NEXT:    add sp, sp, #64249; CHECK-NEXT:    ret250; CHECK-NEXT:  LBB0_44: ; %lor.lhs.false47251; CHECK-NEXT:    cmp x12, #2252; CHECK-NEXT:    b.ne LBB0_11253; CHECK-NEXT:  ; %bb.45: ; %land.lhs.true52254; CHECK-NEXT:    add x12, x9, x11255; CHECK-NEXT:    mov w0, #1 ; =0x1256; CHECK-NEXT:    ldurb w12, [x12, #-1]257; CHECK-NEXT:    cmp w12, #73258; CHECK-NEXT:    b.eq LBB0_43259; CHECK-NEXT:  ; %bb.46: ; %land.lhs.true52260; CHECK-NEXT:    cbz w8, LBB0_43261; CHECK-NEXT:    b LBB0_12262; CHECK-NEXT:  LBB0_47:263; CHECK-NEXT:    mov w0, wzr264; CHECK-NEXT:    ret265; CHECK-NEXT:    .loh AdrpLdrGot Lloh0, Lloh1266; CHECK-NEXT:    .loh AdrpLdrGot Lloh2, Lloh3267; CHECK-NEXT:    .loh AdrpLdrGot Lloh4, Lloh5268entry:269  %0 = load i16, ptr %a, align 2270  %1 = load i16, ptr %b, align 2271  %cmp = icmp eq i16 %0, %1272  br i1 %cmp, label %if.end, label %return, !prof !988273if.end:274  %priority = getelementptr inbounds %struct.Connector_struct, ptr %a, i64 0, i32 2275  %2 = load i8, ptr %priority, align 1276  %priority5 = getelementptr inbounds %struct.Connector_struct, ptr %b, i64 0, i32 2277  %3 = load i8, ptr %priority5, align 1278  %string = getelementptr inbounds %struct.Connector_struct, ptr %a, i64 0, i32 5279  %4 = load ptr, ptr %string, align 8280  %string7 = getelementptr inbounds %struct.Connector_struct, ptr %b, i64 0, i32 5281  %5 = load ptr, ptr %string7, align 8282  br label %while.cond283while.cond:284  %lsr.iv27 = phi i64 [ %lsr.iv.next28, %if.end17 ], [ 0, %if.end ]285  %scevgep55 = getelementptr i8, ptr %4, i64 %lsr.iv27286  %6 = load i8, ptr %scevgep55, align 1287  %idxprom.i.i = sext i8 %6 to i64288  %isascii.i.i224 = icmp sgt i8 %6, -1289  br i1 %isascii.i.i224, label %cond.true.i.i, label %cond.false.i.i, !prof !181290cond.true.i.i:291  %arrayidx.i.i = getelementptr inbounds %struct._RuneLocale, ptr @_DefaultRuneLocale, i64 0, i32 5, i64 %idxprom.i.i292  %7 = load i32, ptr %arrayidx.i.i, align 4293  %and.i.i = and i32 %7, 32768294  br label %isupper.exit295cond.false.i.i:296  %8 = trunc i64 %idxprom.i.i to i8297  %conv8 = sext i8 %8 to i32298  %call3.i.i = tail call i32 @__maskrune(i32 %conv8, i64 32768) #3299  br label %isupper.exit300isupper.exit:301  %tobool1.sink.i.in.i = phi i32 [ %and.i.i, %cond.true.i.i ], [ %call3.i.i, %cond.false.i.i ]302  %tobool1.sink.i.i = icmp eq i32 %tobool1.sink.i.in.i, 0303  br i1 %tobool1.sink.i.i, label %lor.rhs, label %while.body, !prof !989304lor.rhs:305  %sunkaddr = ptrtoint ptr %5 to i64306  %sunkaddr58 = add i64 %sunkaddr, %lsr.iv27307  %sunkaddr59 = inttoptr i64 %sunkaddr58 to ptr308  %9 = load i8, ptr %sunkaddr59, align 1309  %idxprom.i.i214 = sext i8 %9 to i64310  %isascii.i.i213225 = icmp sgt i8 %9, -1311  br i1 %isascii.i.i213225, label %cond.true.i.i217, label %cond.false.i.i219, !prof !181312cond.true.i.i217:313  %arrayidx.i.i215 = getelementptr inbounds %struct._RuneLocale, ptr @_DefaultRuneLocale, i64 0, i32 5, i64 %idxprom.i.i214314  %10 = load i32, ptr %arrayidx.i.i215, align 4315  %and.i.i216 = and i32 %10, 32768316  br label %isupper.exit223317cond.false.i.i219:318  %11 = trunc i64 %idxprom.i.i214 to i8319  %conv9 = sext i8 %11 to i32320  %call3.i.i218 = tail call i32 @__maskrune(i32 %conv9, i64 32768) #3321  br label %isupper.exit223322isupper.exit223:323  %tobool1.sink.i.in.i220 = phi i32 [ %and.i.i216, %cond.true.i.i217 ], [ %call3.i.i218, %cond.false.i.i219 ]324  %tobool1.sink.i.i221 = icmp eq i32 %tobool1.sink.i.in.i220, 0325  br i1 %tobool1.sink.i.i221, label %while.end, label %while.body, !prof !990326while.body:327  %sunkaddr60 = ptrtoint ptr %4 to i64328  %sunkaddr61 = add i64 %sunkaddr60, %lsr.iv27329  %sunkaddr62 = inttoptr i64 %sunkaddr61 to ptr330  %12 = load i8, ptr %sunkaddr62, align 1331  %sunkaddr63 = ptrtoint ptr %5 to i64332  %sunkaddr64 = add i64 %sunkaddr63, %lsr.iv27333  %sunkaddr65 = inttoptr i64 %sunkaddr64 to ptr334  %13 = load i8, ptr %sunkaddr65, align 1335  %cmp14 = icmp eq i8 %12, %13336  br i1 %cmp14, label %if.end17, label %return, !prof !991337if.end17:338  %lsr.iv.next28 = add i64 %lsr.iv27, 1339  br label %while.cond340while.end:341  %14 = or i8 %3, %2342  %15 = icmp eq i8 %14, 0343  br i1 %15, label %if.then23, label %if.else88, !prof !992344if.then23:345  %sunkaddr66 = ptrtoint ptr %a to i64346  %sunkaddr67 = add i64 %sunkaddr66, 16347  %sunkaddr68 = inttoptr i64 %sunkaddr67 to ptr348  %16 = load ptr, ptr %sunkaddr68, align 8349  %17 = load i8, ptr %16, align 1350  %cmp26 = icmp eq i8 %17, 83351  %sunkaddr69 = ptrtoint ptr %4 to i64352  %sunkaddr70 = add i64 %sunkaddr69, %lsr.iv27353  %sunkaddr71 = inttoptr i64 %sunkaddr70 to ptr354  %18 = load i8, ptr %sunkaddr71, align 1355  br i1 %cmp26, label %land.lhs.true28, label %while.cond59.preheader, !prof !993356land.lhs.true28:357  switch i8 %18, label %land.rhs.preheader [358    i8 112, label %land.lhs.true35359    i8 0, label %return360  ], !prof !994361land.lhs.true35:362  %sunkaddr72 = ptrtoint ptr %5 to i64363  %sunkaddr73 = add i64 %sunkaddr72, %lsr.iv27364  %sunkaddr74 = inttoptr i64 %sunkaddr73 to ptr365  %19 = load i8, ptr %sunkaddr74, align 1366  switch i8 %19, label %land.rhs.preheader [367    i8 112, label %land.lhs.true43368  ], !prof !995369land.lhs.true43:370  %20 = ptrtoint ptr %16 to i64371  %21 = sub i64 0, %20372  %scevgep52 = getelementptr i8, ptr %4, i64 %21373  %scevgep53 = getelementptr i8, ptr %scevgep52, i64 %lsr.iv27374  %scevgep54 = getelementptr i8, ptr %scevgep53, i64 -1375  %cmp45 = icmp eq ptr %scevgep54, null376  br i1 %cmp45, label %return, label %lor.lhs.false47, !prof !996377lor.lhs.false47:378  %22 = ptrtoint ptr %16 to i64379  %23 = sub i64 0, %22380  %scevgep47 = getelementptr i8, ptr %4, i64 %23381  %scevgep48 = getelementptr i8, ptr %scevgep47, i64 %lsr.iv27382  %scevgep49 = getelementptr i8, ptr %scevgep48, i64 -2383  %cmp50 = icmp eq ptr %scevgep49, null384  br i1 %cmp50, label %land.lhs.true52, label %while.cond59.preheader, !prof !997385land.lhs.true52:386  %sunkaddr75 = ptrtoint ptr %4 to i64387  %sunkaddr76 = add i64 %sunkaddr75, %lsr.iv27388  %sunkaddr77 = add i64 %sunkaddr76, -1389  %sunkaddr78 = inttoptr i64 %sunkaddr77 to ptr390  %24 = load i8, ptr %sunkaddr78, align 1391  %cmp55 = icmp eq i8 %24, 73392  %cmp61233 = icmp eq i8 %18, 0393  %or.cond265 = or i1 %cmp55, %cmp61233394  br i1 %or.cond265, label %return, label %land.rhs.preheader, !prof !998395while.cond59.preheader:396  %cmp61233.old = icmp eq i8 %18, 0397  br i1 %cmp61233.old, label %return, label %land.rhs.preheader, !prof !999398land.rhs.preheader:399  %scevgep33 = getelementptr i8, ptr %5, i64 %lsr.iv27400  %scevgep43 = getelementptr i8, ptr %4, i64 %lsr.iv27401  br label %land.rhs402land.rhs:403  %lsr.iv = phi i64 [ 0, %land.rhs.preheader ], [ %lsr.iv.next, %if.then83 ]404  %25 = phi i8 [ %27, %if.then83 ], [ %18, %land.rhs.preheader ]405  %scevgep34 = getelementptr i8, ptr %scevgep33, i64 %lsr.iv406  %26 = load i8, ptr %scevgep34, align 1407  %cmp64 = icmp eq i8 %26, 0408  br i1 %cmp64, label %return, label %while.body66, !prof !1000409while.body66:410  %cmp68 = icmp eq i8 %25, 42411  %cmp72 = icmp eq i8 %26, 42412  %or.cond = or i1 %cmp68, %cmp72413  br i1 %or.cond, label %if.then83, label %lor.lhs.false74, !prof !1001414lor.lhs.false74:415  %cmp77 = icmp ne i8 %25, %26416  %cmp81 = icmp eq i8 %25, 94417  %or.cond208 = or i1 %cmp77, %cmp81418  br i1 %or.cond208, label %return, label %if.then83, !prof !1002419if.then83:420  %scevgep44 = getelementptr i8, ptr %scevgep43, i64 %lsr.iv421  %scevgep45 = getelementptr i8, ptr %scevgep44, i64 1422  %27 = load i8, ptr %scevgep45, align 1423  %cmp61 = icmp eq i8 %27, 0424  %lsr.iv.next = add i64 %lsr.iv, 1425  br i1 %cmp61, label %return, label %land.rhs, !prof !999426if.else88:427  %cmp89 = icmp eq i8 %2, 1428  %cmp92 = icmp eq i8 %3, 2429  %or.cond159 = and i1 %cmp89, %cmp92430  br i1 %or.cond159, label %while.cond95.preheader, label %if.else123, !prof !1003431while.cond95.preheader:432  %sunkaddr79 = ptrtoint ptr %4 to i64433  %sunkaddr80 = add i64 %sunkaddr79, %lsr.iv27434  %sunkaddr81 = inttoptr i64 %sunkaddr80 to ptr435  %28 = load i8, ptr %sunkaddr81, align 1436  %cmp97238 = icmp eq i8 %28, 0437  br i1 %cmp97238, label %return, label %land.rhs99.preheader, !prof !1004438land.rhs99.preheader:439  %scevgep31 = getelementptr i8, ptr %5, i64 %lsr.iv27440  %scevgep40 = getelementptr i8, ptr %4, i64 %lsr.iv27441  br label %land.rhs99442land.rhs99:443  %lsr.iv17 = phi i64 [ 0, %land.rhs99.preheader ], [ %lsr.iv.next18, %if.then117 ]444  %29 = phi i8 [ %31, %if.then117 ], [ %28, %land.rhs99.preheader ]445  %scevgep32 = getelementptr i8, ptr %scevgep31, i64 %lsr.iv17446  %30 = load i8, ptr %scevgep32, align 1447  %cmp101 = icmp eq i8 %30, 0448  br i1 %cmp101, label %return, label %while.body104, !prof !1005449while.body104:450  %cmp107 = icmp eq i8 %29, %30451  %cmp111 = icmp eq i8 %29, 42452  %or.cond209 = or i1 %cmp107, %cmp111453  %cmp115 = icmp eq i8 %30, 94454  %or.cond210 = or i1 %or.cond209, %cmp115455  br i1 %or.cond210, label %if.then117, label %return, !prof !1006456if.then117:457  %scevgep41 = getelementptr i8, ptr %scevgep40, i64 %lsr.iv17458  %scevgep42 = getelementptr i8, ptr %scevgep41, i64 1459  %31 = load i8, ptr %scevgep42, align 1460  %cmp97 = icmp eq i8 %31, 0461  %lsr.iv.next18 = add i64 %lsr.iv17, 1462  br i1 %cmp97, label %return, label %land.rhs99, !prof !1004463if.else123:464  %cmp124 = icmp eq i8 %3, 1465  %cmp127 = icmp eq i8 %2, 2466  %or.cond160 = and i1 %cmp124, %cmp127467  br i1 %or.cond160, label %while.cond130.preheader, label %return, !prof !1007468while.cond130.preheader:469  %sunkaddr82 = ptrtoint ptr %4 to i64470  %sunkaddr83 = add i64 %sunkaddr82, %lsr.iv27471  %sunkaddr84 = inttoptr i64 %sunkaddr83 to ptr472  %32 = load i8, ptr %sunkaddr84, align 1473  %cmp132244 = icmp eq i8 %32, 0474  br i1 %cmp132244, label %return, label %land.rhs134.preheader, !prof !1008475land.rhs134.preheader:476  %scevgep29 = getelementptr i8, ptr %5, i64 %lsr.iv27477  %scevgep37 = getelementptr i8, ptr %4, i64 %lsr.iv27478  br label %land.rhs134479land.rhs134:480  %lsr.iv22 = phi i64 [ 0, %land.rhs134.preheader ], [ %lsr.iv.next23, %if.then152 ]481  %33 = phi i8 [ %35, %if.then152 ], [ %32, %land.rhs134.preheader ]482  %scevgep30 = getelementptr i8, ptr %scevgep29, i64 %lsr.iv22483  %34 = load i8, ptr %scevgep30, align 1484  %cmp136 = icmp eq i8 %34, 0485  br i1 %cmp136, label %return, label %while.body139, !prof !1009486while.body139:487  %cmp142 = icmp eq i8 %33, %34488  %cmp146 = icmp eq i8 %34, 42489  %or.cond211 = or i1 %cmp142, %cmp146490  %cmp150 = icmp eq i8 %33, 94491  %or.cond212 = or i1 %or.cond211, %cmp150492  br i1 %or.cond212, label %if.then152, label %return, !prof !1010493if.then152:494  %scevgep38 = getelementptr i8, ptr %scevgep37, i64 %lsr.iv22495  %scevgep39 = getelementptr i8, ptr %scevgep38, i64 1496  %35 = load i8, ptr %scevgep39, align 1497  %cmp132 = icmp eq i8 %35, 0498  %lsr.iv.next23 = add i64 %lsr.iv22, 1499  br i1 %cmp132, label %return, label %land.rhs134, !prof !1008500return:501  %retval.0 = phi i32 [ 0, %entry ], [ 1, %land.lhs.true52 ], [ 1, %land.lhs.true43 ], [ 0, %if.else123 ], [ 1, %while.cond59.preheader ], [ 1, %while.cond95.preheader ], [ 1, %while.cond130.preheader ], [ 1, %land.lhs.true28 ], [ 1, %if.then83 ], [ 0, %lor.lhs.false74 ], [ 1, %land.rhs ], [ 1, %if.then117 ], [ 0, %while.body104 ], [ 1, %land.rhs99 ], [ 1, %if.then152 ], [ 0, %while.body139 ], [ 1, %land.rhs134 ], [ 0, %while.body ]502  ret i32 %retval.0503}504!181 = !{!"branch_weights", i32 662038, i32 1}505!988 = !{!"branch_weights", i32 12091450, i32 1916}506!989 = !{!"branch_weights", i32 7564670, i32 4526781}507!990 = !{!"branch_weights", i32 7484958, i32 13283499}508!991 = !{!"branch_weights", i32 8677007, i32 4606493}509!992 = !{!"branch_weights", i32 -1172426948, i32 145094705}510!993 = !{!"branch_weights", i32 1468914, i32 5683688}511!994 = !{!"branch_weights", i32 114025221, i32 -1217548794, i32 -1199521551}512!995 = !{!"branch_weights", i32 1853716452, i32 -444717951}513!996 = !{!"branch_weights", i32 1004870, i32 20259}514!997 = !{!"branch_weights", i32 20071, i32 189}515!998 = !{!"branch_weights", i32 -1020255939, i32 572177766}516!999 = !{!"branch_weights", i32 2666513, i32 3466431}517!1000 = !{!"branch_weights", i32 5117635, i32 1859780}518!1001 = !{!"branch_weights", i32 354902465, i32 -1444604407}519!1002 = !{!"branch_weights", i32 -1762419279, i32 1592770684}520!1003 = !{!"branch_weights", i32 1435905930, i32 -1951930624}521!1004 = !{!"branch_weights", i32 1, i32 504888}522!1005 = !{!"branch_weights", i32 94662, i32 504888}523!1006 = !{!"branch_weights", i32 -1897793104, i32 160196332}524!1007 = !{!"branch_weights", i32 2074643678, i32 -29579071}525!1008 = !{!"branch_weights", i32 1, i32 226163}526!1009 = !{!"branch_weights", i32 58357, i32 226163}527!1010 = !{!"branch_weights", i32 -2072848646, i32 92907517}528