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