brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.5 KiB · eba9faa Raw
443 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \3; RUN:     -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \4; RUN:     FileCheck %s5; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \6; RUN:     -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \7; RUN:     FileCheck %s --check-prefix=CHECK-BE8 9; This test case tests spilling the CR UN bit on Power10. On Power10, this is10; achieved by setb %reg, %CRREG (un bit) -> stw %reg, $FI instead of:11; mfocrf %reg, %CRREG -> rlwinm %reg1, %reg, $SH, 0, 0 -> stw %reg1, $FI.12 13; Without fine-grained control over clobbering individual CR bits,14; it is difficult to produce a concise test case that will ensure a specific15; bit of any CR field is spilled. We need to test the spilling of a CR bit16; other than the LT bit. Hence this test case is rather complex.17 18%0 = type { i32, [768 x i8], [768 x i8], [1024 x i8], [768 x i8], [768 x i8], [768 x i8], [768 x i8], [768 x i8], [1024 x i8], [1024 x i8], i32, i16, i16, i16, i16, i16, i16, i32, i32, i32, i16, i16, i32, i32, i32, i32, i32, i32, i32, i16, i16, i16, i16, [64 x i8], i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i32, i16, i16, i16, i16, i16, i16, i16, i16, i16, i16, i8, i8, i8, i8, i16, i16, i16, i16, i16, i16, float, float, i32, i16, i16, float, i16, i16, i16, i16}19%1 = type opaque20%2 = type { ptr }21%3 = type { ptr, ptr, ptr, %2, i32, %2, ptr, ptr, ptr, ptr, ptr, ptr, ptr }22%4 = type { ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, [3 x float], i8, [64 x i8] }23 24@global_1 = external dso_local unnamed_addr constant [1 x i8], align 125@global_2 = external local_unnamed_addr global %0, align 826@global_3 = external local_unnamed_addr global ptr, align 827@global_4 = external dso_local unnamed_addr constant [14 x i8], align 128 29declare i8 @call_1(ptr) local_unnamed_addr30declare i32 @call_2(ptr, ptr) local_unnamed_addr31declare i32 @call_3(ptr, ptr) local_unnamed_addr32declare ptr @call_4(ptr, i32, i32, i32, i32, i32, i16, i16, ptr, ptr, i32, float, float, float, float, ptr) local_unnamed_addr33declare i32 @call_5(ptr) local_unnamed_addr34declare i8 @call_6(ptr, i32) local_unnamed_addr35 36define dso_local void @P10_Spill_CR_UN(ptr %arg, ptr %arg1, i32 %arg2) local_unnamed_addr {37; CHECK-LABEL: P10_Spill_CR_UN:38; CHECK:       # %bb.0: # %bb39; CHECK-NEXT:    mfcr r1240; CHECK-NEXT:    mflr r041; CHECK-NEXT:    std r0, 16(r1)42; CHECK-NEXT:    stw r12, 8(r1)43; CHECK-NEXT:    stdu r1, -224(r1)44; CHECK-NEXT:    .cfi_def_cfa_offset 22445; CHECK-NEXT:    .cfi_offset lr, 1646; CHECK-NEXT:    .cfi_offset r27, -4047; CHECK-NEXT:    .cfi_offset r28, -3248; CHECK-NEXT:    .cfi_offset r29, -2449; CHECK-NEXT:    .cfi_offset r30, -1650; CHECK-NEXT:    .cfi_offset cr2, 851; CHECK-NEXT:    .cfi_offset cr3, 852; CHECK-NEXT:    .cfi_offset cr4, 853; CHECK-NEXT:    std r29, 200(r1) # 8-byte Folded Spill54; CHECK-NEXT:    std r30, 208(r1) # 8-byte Folded Spill55; CHECK-NEXT:    mr r29, r356; CHECK-NEXT:    mr r3, r457; CHECK-NEXT:    mr r30, r458; CHECK-NEXT:    std r27, 184(r1) # 8-byte Folded Spill59; CHECK-NEXT:    std r28, 192(r1) # 8-byte Folded Spill60; CHECK-NEXT:    mr r28, r561; CHECK-NEXT:    bl call_1@notoc62; CHECK-NEXT:    cmpwi r3, 063; CHECK-NEXT:    mr r3, r2964; CHECK-NEXT:    mr r4, r3065; CHECK-NEXT:    crnot 4*cr2+eq, eq66; CHECK-NEXT:    bl call_2@notoc67; CHECK-NEXT:    mr r27, r368; CHECK-NEXT:    srwi r3, r28, 469; CHECK-NEXT:    andi. r3, r3, 170; CHECK-NEXT:    crmove 4*cr2+gt, gt71; CHECK-NEXT:    bc 12, 4*cr5+lt, .LBB0_272; CHECK-NEXT:  # %bb.1: # %bb973; CHECK-NEXT:    mr r3, r2974; CHECK-NEXT:    mr r4, r3075; CHECK-NEXT:    bl call_3@notoc76; CHECK-NEXT:  .LBB0_2: # %bb1277; CHECK-NEXT:    srwi r3, r28, 778; CHECK-NEXT:    andi. r3, r3, 179; CHECK-NEXT:    crmove 4*cr2+un, gt80; CHECK-NEXT:    bc 12, 4*cr2+eq, .LBB0_781; CHECK-NEXT:  # %bb.3: # %bb3782; CHECK-NEXT:    lwz r28, 0(r3)83; CHECK-NEXT:    bc 12, 4*cr5+lt, .LBB0_584; CHECK-NEXT:  # %bb.4: # %bb3785; CHECK-NEXT:    bc 4, 4*cr5+lt, .LBB0_1486; CHECK-NEXT:  .LBB0_5: # %bb4287; CHECK-NEXT:    paddi r3, 0, global_1@PCREL, 188; CHECK-NEXT:    li r4, 089; CHECK-NEXT:    cmpwi r28, 090; CHECK-NEXT:    isel r3, r3, r4, 4*cr2+gt91; CHECK-NEXT:    crnot 4*cr2+lt, eq92; CHECK-NEXT:    bl call_5@notoc93; CHECK-NEXT:    pld r3, global_2@got@pcrel(0), 194; CHECK-NEXT:    addi r3, r3, 868295; CHECK-NEXT:    lxsihzx v2, 0, r396; CHECK-NEXT:    vextsh2d v2, v297; CHECK-NEXT:    xscvsxdsp f0, v298; CHECK-NEXT:    bc 12, 4*cr2+lt, .LBB0_1299; CHECK-NEXT:  # %bb.6: # %bb42100; CHECK-NEXT:    xxspltidp vs1, 1069547520101; CHECK-NEXT:    b .LBB0_13102; CHECK-NEXT:  .LBB0_7: # %bb19103; CHECK-NEXT:    setnbc r3, 4*cr2+un104; CHECK-NEXT:    paddi r4, 0, global_4@PCREL, 1105; CHECK-NEXT:    stw r3, 176(r1)106; CHECK-NEXT:    pld r3, global_3@got@pcrel(0), 1107; CHECK-NEXT:  .Lpcrel0:108; CHECK-NEXT:    .reloc .Lpcrel0-8,R_PPC64_PCREL_OPT,.-(.Lpcrel0-8)109; CHECK-NEXT:    ld r12, 0(r3)110; CHECK-NEXT:    mtctr r12111; CHECK-NEXT:    bctrl112; CHECK-NEXT:    cmpdi cr4, r3, 0113; CHECK-NEXT:    andi. r3, r28, 4114; CHECK-NEXT:    cmpwi cr2, r27, 0115; CHECK-NEXT:    mcrf cr3, cr0116; CHECK-NEXT:    .p2align 5117; CHECK-NEXT:  .LBB0_8: # %bb27118; CHECK-NEXT:    #119; CHECK-NEXT:    mr r3, r30120; CHECK-NEXT:    li r4, 0121; CHECK-NEXT:    bl call_6@notoc122; CHECK-NEXT:    bc 4, 4*cr4+eq, .LBB0_18123; CHECK-NEXT:  # %bb.9: # %bb31124; CHECK-NEXT:    #125; CHECK-NEXT:    bc 4, 4*cr3+eq, .LBB0_18126; CHECK-NEXT:  # %bb.10: # %bb33127; CHECK-NEXT:    #128; CHECK-NEXT:    bc 4, 4*cr2+eq, .LBB0_8129; CHECK-NEXT:  # %bb.11: # %bb36130; CHECK-NEXT:    stb r3, 181(r1)131; CHECK-NEXT:    # implicit-def: $cr2un132; CHECK-NEXT:    mfocrf r3, 32133; CHECK-NEXT:    lwz r4, 176(r1)134; CHECK-NEXT:    rlwimi r3, r4, 21, 11, 11135; CHECK-NEXT:    mtocrf 32, r3136; CHECK-NEXT:    b .LBB0_16137; CHECK-NEXT:  .LBB0_12:138; CHECK-NEXT:    xxspltidp vs1, 1071644672139; CHECK-NEXT:  .LBB0_13: # %bb42140; CHECK-NEXT:    xsmulsp f0, f1, f0141; CHECK-NEXT:    xscvdpsxws f0, f0142; CHECK-NEXT:    mffprwz r3, f0143; CHECK-NEXT:    b .LBB0_15144; CHECK-NEXT:  .LBB0_14: # %bb41145; CHECK-NEXT:    # implicit-def: $r3146; CHECK-NEXT:  .LBB0_15: # %bb50147; CHECK-NEXT:    li r4, 0148; CHECK-NEXT:    xxspltidp vs3, -1082130432149; CHECK-NEXT:    xxspltidp vs4, -1082130432150; CHECK-NEXT:    extsh r9, r3151; CHECK-NEXT:    extsw r6, r28152; CHECK-NEXT:    li r5, 0153; CHECK-NEXT:    li r7, 0154; CHECK-NEXT:    std r30, 104(r1)155; CHECK-NEXT:    std r29, 96(r1)156; CHECK-NEXT:    li r8, 0157; CHECK-NEXT:    li r10, 0158; CHECK-NEXT:    xxlxor f1, f1, f1159; CHECK-NEXT:    std r4, 152(r1)160; CHECK-NEXT:    li r4, -1161; CHECK-NEXT:    std r4, 112(r1)162; CHECK-NEXT:    li r4, 1024163; CHECK-NEXT:    bl call_4@notoc164; CHECK-NEXT:  .LBB0_16: # %bb54165; CHECK-NEXT:    bc 12, 4*cr2+un, .LBB0_19166; CHECK-NEXT:  # %bb.17: # %bb56167; CHECK-NEXT:    ld r30, 208(r1) # 8-byte Folded Reload168; CHECK-NEXT:    ld r29, 200(r1) # 8-byte Folded Reload169; CHECK-NEXT:    ld r28, 192(r1) # 8-byte Folded Reload170; CHECK-NEXT:    ld r27, 184(r1) # 8-byte Folded Reload171; CHECK-NEXT:    addi r1, r1, 224172; CHECK-NEXT:    ld r0, 16(r1)173; CHECK-NEXT:    lwz r12, 8(r1)174; CHECK-NEXT:    mtlr r0175; CHECK-NEXT:    mtocrf 32, r12176; CHECK-NEXT:    mtocrf 16, r12177; CHECK-NEXT:    mtocrf 8, r12178; CHECK-NEXT:    blr179; CHECK-NEXT:  .LBB0_18: # %bb30180; CHECK-NEXT:    stb r3, 181(r1)181; CHECK-NEXT:  .LBB0_19: # %bb55182;183; CHECK-BE-LABEL: P10_Spill_CR_UN:184; CHECK-BE:       # %bb.0: # %bb185; CHECK-BE-NEXT:    mfcr r12186; CHECK-BE-NEXT:    mflr r0187; CHECK-BE-NEXT:    std r0, 16(r1)188; CHECK-BE-NEXT:    stw r12, 8(r1)189; CHECK-BE-NEXT:    stdu r1, -240(r1)190; CHECK-BE-NEXT:    .cfi_def_cfa_offset 240191; CHECK-BE-NEXT:    .cfi_offset lr, 16192; CHECK-BE-NEXT:    .cfi_offset r27, -40193; CHECK-BE-NEXT:    .cfi_offset r28, -32194; CHECK-BE-NEXT:    .cfi_offset r29, -24195; CHECK-BE-NEXT:    .cfi_offset r30, -16196; CHECK-BE-NEXT:    .cfi_offset cr2, 8197; CHECK-BE-NEXT:    .cfi_offset cr2, 8198; CHECK-BE-NEXT:    .cfi_offset cr2, 8199; CHECK-BE-NEXT:    std r29, 216(r1) # 8-byte Folded Spill200; CHECK-BE-NEXT:    std r30, 224(r1) # 8-byte Folded Spill201; CHECK-BE-NEXT:    mr r29, r3202; CHECK-BE-NEXT:    mr r3, r4203; CHECK-BE-NEXT:    mr r30, r4204; CHECK-BE-NEXT:    std r27, 200(r1) # 8-byte Folded Spill205; CHECK-BE-NEXT:    std r28, 208(r1) # 8-byte Folded Spill206; CHECK-BE-NEXT:    mr r28, r5207; CHECK-BE-NEXT:    bl call_1208; CHECK-BE-NEXT:    nop209; CHECK-BE-NEXT:    cmpwi r3, 0210; CHECK-BE-NEXT:    mr r3, r29211; CHECK-BE-NEXT:    mr r4, r30212; CHECK-BE-NEXT:    crnot 4*cr2+eq, eq213; CHECK-BE-NEXT:    bl call_2214; CHECK-BE-NEXT:    nop215; CHECK-BE-NEXT:    mr r27, r3216; CHECK-BE-NEXT:    srwi r3, r28, 4217; CHECK-BE-NEXT:    andi. r3, r3, 1218; CHECK-BE-NEXT:    crmove 4*cr2+gt, gt219; CHECK-BE-NEXT:    bc 12, 4*cr5+lt, .LBB0_2220; CHECK-BE-NEXT:  # %bb.1: # %bb9221; CHECK-BE-NEXT:    mr r3, r29222; CHECK-BE-NEXT:    mr r4, r30223; CHECK-BE-NEXT:    bl call_3224; CHECK-BE-NEXT:    nop225; CHECK-BE-NEXT:  .LBB0_2: # %bb12226; CHECK-BE-NEXT:    srwi r3, r28, 7227; CHECK-BE-NEXT:    andi. r3, r3, 1228; CHECK-BE-NEXT:    crmove 4*cr2+un, gt229; CHECK-BE-NEXT:    bc 12, 4*cr2+eq, .LBB0_7230; CHECK-BE-NEXT:  # %bb.3: # %bb37231; CHECK-BE-NEXT:    lwz r28, 0(r3)232; CHECK-BE-NEXT:    addis r3, r2, global_1@toc@ha233; CHECK-BE-NEXT:    bc 12, 4*cr5+lt, .LBB0_5234; CHECK-BE-NEXT:  # %bb.4: # %bb37235; CHECK-BE-NEXT:    bc 4, 4*cr5+lt, .LBB0_14236; CHECK-BE-NEXT:  .LBB0_5: # %bb42237; CHECK-BE-NEXT:    li r4, 0238; CHECK-BE-NEXT:    addi r3, r3, global_1@toc@l239; CHECK-BE-NEXT:    cmpwi r28, 0240; CHECK-BE-NEXT:    isel r3, r3, r4, 4*cr2+gt241; CHECK-BE-NEXT:    crnot 4*cr2+lt, eq242; CHECK-BE-NEXT:    bl call_5243; CHECK-BE-NEXT:    nop244; CHECK-BE-NEXT:    addis r3, r2, .LC0@toc@ha245; CHECK-BE-NEXT:    ld r3, .LC0@toc@l(r3)246; CHECK-BE-NEXT:    addi r3, r3, 8682247; CHECK-BE-NEXT:    lxsihzx v2, 0, r3248; CHECK-BE-NEXT:    vextsh2d v2, v2249; CHECK-BE-NEXT:    xscvsxdsp f0, v2250; CHECK-BE-NEXT:    bc 12, 4*cr2+lt, .LBB0_12251; CHECK-BE-NEXT:  # %bb.6: # %bb42252; CHECK-BE-NEXT:    xxspltidp vs1, 1069547520253; CHECK-BE-NEXT:    b .LBB0_13254; CHECK-BE-NEXT:  .LBB0_7: # %bb19255; CHECK-BE-NEXT:    setnbc r3, 4*cr2+un256; CHECK-BE-NEXT:    addis r4, r2, global_4@toc@ha257; CHECK-BE-NEXT:    stw r3, 192(r1)258; CHECK-BE-NEXT:    addis r3, r2, .LC1@toc@ha259; CHECK-BE-NEXT:    std r2, 40(r1)260; CHECK-BE-NEXT:    addi r4, r4, global_4@toc@l261; CHECK-BE-NEXT:    ld r3, .LC1@toc@l(r3)262; CHECK-BE-NEXT:    ld r3, 0(r3)263; CHECK-BE-NEXT:    ld r2, 8(r3)264; CHECK-BE-NEXT:    ld r11, 16(r3)265; CHECK-BE-NEXT:    ld r3, 0(r3)266; CHECK-BE-NEXT:    mtctr r3267; CHECK-BE-NEXT:    bctrl268; CHECK-BE-NEXT:    ld 2, 40(r1)269; CHECK-BE-NEXT:    cmpdi cr4, r3, 0270; CHECK-BE-NEXT:    andi. r3, r28, 4271; CHECK-BE-NEXT:    cmpwi cr2, r27, 0272; CHECK-BE-NEXT:    mcrf cr3, cr0273; CHECK-BE-NEXT:    .p2align 5274; CHECK-BE-NEXT:  .LBB0_8: # %bb27275; CHECK-BE-NEXT:    #276; CHECK-BE-NEXT:    mr r3, r30277; CHECK-BE-NEXT:    li r4, 0278; CHECK-BE-NEXT:    bl call_6279; CHECK-BE-NEXT:    nop280; CHECK-BE-NEXT:    bc 4, 4*cr4+eq, .LBB0_18281; CHECK-BE-NEXT:  # %bb.9: # %bb31282; CHECK-BE-NEXT:    #283; CHECK-BE-NEXT:    bc 4, 4*cr3+eq, .LBB0_18284; CHECK-BE-NEXT:  # %bb.10: # %bb33285; CHECK-BE-NEXT:    #286; CHECK-BE-NEXT:    bc 4, 4*cr2+eq, .LBB0_8287; CHECK-BE-NEXT:  # %bb.11: # %bb36288; CHECK-BE-NEXT:    stb r3, 197(r1)289; CHECK-BE-NEXT:    # implicit-def: $cr2un290; CHECK-BE-NEXT:    mfocrf r3, 32291; CHECK-BE-NEXT:    lwz r4, 192(r1)292; CHECK-BE-NEXT:    rlwimi r3, r4, 21, 11, 11293; CHECK-BE-NEXT:    mtocrf 32, r3294; CHECK-BE-NEXT:    b .LBB0_16295; CHECK-BE-NEXT:  .LBB0_12:296; CHECK-BE-NEXT:    xxspltidp vs1, 1071644672297; CHECK-BE-NEXT:  .LBB0_13: # %bb42298; CHECK-BE-NEXT:    xsmulsp f0, f1, f0299; CHECK-BE-NEXT:    xscvdpsxws f0, f0300; CHECK-BE-NEXT:    mffprwz r3, f0301; CHECK-BE-NEXT:    b .LBB0_15302; CHECK-BE-NEXT:  .LBB0_14: # %bb41303; CHECK-BE-NEXT:    # implicit-def: $r3304; CHECK-BE-NEXT:  .LBB0_15: # %bb50305; CHECK-BE-NEXT:    li r4, 0306; CHECK-BE-NEXT:    xxspltidp vs3, -1082130432307; CHECK-BE-NEXT:    xxspltidp vs4, -1082130432308; CHECK-BE-NEXT:    extsh r9, r3309; CHECK-BE-NEXT:    extsw r6, r28310; CHECK-BE-NEXT:    li r5, 0311; CHECK-BE-NEXT:    li r7, 0312; CHECK-BE-NEXT:    std r30, 120(r1)313; CHECK-BE-NEXT:    std r29, 112(r1)314; CHECK-BE-NEXT:    li r8, 0315; CHECK-BE-NEXT:    li r10, 0316; CHECK-BE-NEXT:    xxlxor f1, f1, f1317; CHECK-BE-NEXT:    std r4, 168(r1)318; CHECK-BE-NEXT:    li r4, -1319; CHECK-BE-NEXT:    std r4, 128(r1)320; CHECK-BE-NEXT:    li r4, 1024321; CHECK-BE-NEXT:    bl call_4322; CHECK-BE-NEXT:    nop323; CHECK-BE-NEXT:  .LBB0_16: # %bb54324; CHECK-BE-NEXT:    bc 12, 4*cr2+un, .LBB0_19325; CHECK-BE-NEXT:  # %bb.17: # %bb56326; CHECK-BE-NEXT:    ld r30, 224(r1) # 8-byte Folded Reload327; CHECK-BE-NEXT:    ld r29, 216(r1) # 8-byte Folded Reload328; CHECK-BE-NEXT:    ld r28, 208(r1) # 8-byte Folded Reload329; CHECK-BE-NEXT:    ld r27, 200(r1) # 8-byte Folded Reload330; CHECK-BE-NEXT:    addi r1, r1, 240331; CHECK-BE-NEXT:    ld r0, 16(r1)332; CHECK-BE-NEXT:    lwz r12, 8(r1)333; CHECK-BE-NEXT:    mtlr r0334; CHECK-BE-NEXT:    mtocrf 32, r12335; CHECK-BE-NEXT:    mtocrf 16, r12336; CHECK-BE-NEXT:    mtocrf 8, r12337; CHECK-BE-NEXT:    blr338; CHECK-BE-NEXT:  .LBB0_18: # %bb30339; CHECK-BE-NEXT:    stb r3, 197(r1)340; CHECK-BE-NEXT:  .LBB0_19: # %bb55341bb:342  %tmp = alloca [3 x i8], align 1343  %tmp3 = tail call zeroext i8 @call_1(ptr %arg1)344  %tmp4 = icmp ne i8 %tmp3, 0345  %tmp5 = tail call signext i32 @call_2(ptr %arg, ptr %arg1)346  %tmp6 = and i32 %arg2, 16347  %tmp7 = icmp ne i32 %tmp6, 0348  br label %bb8349 350bb8:                                              ; preds = %bb351  br i1 undef, label %bb9, label %bb11352 353bb9:                                              ; preds = %bb8354  %tmp10 = call signext i32 @call_3(ptr %arg, ptr %arg1)355  br label %bb12356 357bb11:                                             ; preds = %bb8358  br label %bb12359 360bb12:                                             ; preds = %bb11, %bb9361  %tmp13 = and i32 %arg2, 4362  %tmp14 = and i32 %arg2, 128363  %tmp15 = icmp ne i32 %tmp14, 0364  br label %bb16365 366bb16:                                             ; preds = %bb12367  %tmp17 = xor i1 %tmp4, true368  %tmp18 = or i1 false, %tmp17369  br i1 %tmp18, label %bb37, label %bb19370 371bb19:                                             ; preds = %bb16372  %tmp21 = load ptr, ptr @global_3, align 8373  %tmp22 = call ptr %tmp21(i64 undef, ptr @global_4)374  %tmp24 = icmp eq ptr %tmp22, null375  %tmp25 = icmp eq i32 %tmp13, 0376  %tmp26 = zext i32 %tmp5 to i64377  br label %bb27378 379bb27:                                             ; preds = %bb34, %bb19380  %tmp28 = call zeroext i8 @call_6(ptr %arg1, i32 signext undef)381  store i8 %tmp28, ptr %tmp, align 1382  br label %bb29383 384bb29:                                             ; preds = %bb27385  br i1 %tmp24, label %bb31, label %bb30386 387bb30:                                             ; preds = %bb29388  unreachable389 390bb31:                                             ; preds = %bb29391  br i1 %tmp25, label %bb33, label %bb32392 393bb32:                                             ; preds = %bb31394  unreachable395 396bb33:                                             ; preds = %bb31397  br label %bb34398 399bb34:                                             ; preds = %bb33400  %tmp35 = icmp eq i64 0, %tmp26401  br i1 %tmp35, label %bb36, label %bb27402 403bb36:                                             ; preds = %bb34404  br label %bb54405 406bb37:                                             ; preds = %bb16407  %tmp38 = load i32, ptr undef, align 8408  %tmp39 = select i1 %tmp7, ptr @global_1, ptr null409  %tmp40 = icmp ne i32 %tmp38, 0410  switch i32 undef, label %bb41 [411    i32 1, label %bb42412    i32 4, label %bb42413  ]414 415bb41:                                             ; preds = %bb37416  br label %bb50417 418bb42:                                             ; preds = %bb37, %bb37419  %tmp43 = call signext i32 @call_5(ptr %tmp39)420  %tmp44 = load i16, ptr getelementptr inbounds (%0, ptr @global_2, i64 0, i32 81), align 4421  %tmp45 = sitofp i16 %tmp44 to float422  %tmp46 = select i1 %tmp40, float 1.750000e+00, float 1.500000e+00423  %tmp47 = fmul fast float %tmp46, %tmp45424  %tmp48 = fadd fast float %tmp47, 0.000000e+00425  %tmp49 = fptosi float %tmp48 to i32426  br label %bb50427 428bb50:                                             ; preds = %bb42, %bb41429  %tmp51 = phi i32 [ %tmp49, %bb42 ], [ undef, %bb41 ]430  %tmp52 = trunc i32 %tmp51 to i16431  %tmp53 = call ptr @call_4(ptr nonnull undef, i32 signext 1024, i32 signext 0, i32 signext %tmp38, i32 signext 0, i32 signext 0, i16 signext %tmp52, i16 signext undef, ptr %arg, ptr %arg1, i32 signext -1, float 0.000000e+00, float undef, float -1.000000e+00, float -1.000000e+00, ptr null)432  br label %bb54433 434bb54:                                             ; preds = %bb50, %bb36435  br i1 %tmp15, label %bb55, label %bb56436 437bb55:                                             ; preds = %bb54438  unreachable439 440bb56:                                             ; preds = %bb54441  ret void442}443