1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; 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 %s 5; 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-BE 8 9; This test case tests spilling the CR GT bit on Power10. On Power10, this is 10; achieved by setb %reg, %CRREG (gt 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 specific 15; bit of any CR field is spilled. We need to test the spilling of a CR bit 16; other than the LT bit. Hence this test case is rather complex. 17 18define dso_local fastcc void @P10_Spill_CR_GT() unnamed_addr { 19; CHECK-LABEL: P10_Spill_CR_GT: 20; CHECK: .localentry P10_Spill_CR_GT, 1 21; CHECK-NEXT: # %bb.0: # %bb 22; CHECK-NEXT: mflr r0 23; CHECK-NEXT: mfcr r12 24; CHECK-NEXT: std r0, 16(r1) 25; CHECK-NEXT: stw r12, 8(r1) 26; CHECK-NEXT: stdu r1, -80(r1) 27; CHECK-NEXT: .cfi_def_cfa_offset 80 28; CHECK-NEXT: .cfi_offset lr, 16 29; CHECK-NEXT: .cfi_offset r29, -24 30; CHECK-NEXT: .cfi_offset r30, -16 31; CHECK-NEXT: .cfi_offset cr2, 8 32; CHECK-NEXT: .cfi_offset cr3, 8 33; CHECK-NEXT: .cfi_offset cr4, 8 34; CHECK-NEXT: lwz r3, 0(r3) 35; CHECK-NEXT: std r29, 56(r1) # 8-byte Folded Spill 36; CHECK-NEXT: std r30, 64(r1) # 8-byte Folded Spill 37; CHECK-NEXT: paddi r29, 0, .LJTI0_0@PCREL, 1 38; CHECK-NEXT: srwi r4, r3, 4 39; CHECK-NEXT: srwi r3, r3, 5 40; CHECK-NEXT: andi. r4, r4, 1 41; CHECK-NEXT: li r4, 0 42; CHECK-NEXT: crmove 4*cr4+lt, gt 43; CHECK-NEXT: andi. r3, r3, 1 44; CHECK-NEXT: setnbc r3, gt 45; CHECK-NEXT: stw r3, 52(r1) 46; CHECK-NEXT: cmplwi cr3, r3, 336 47; CHECK-NEXT: li r3, 0 48; CHECK-NEXT: sldi r30, r3, 2 49; CHECK-NEXT: b .LBB0_2 50; CHECK-NEXT: .p2align 4 51; CHECK-NEXT: .LBB0_1: # %bb43 52; CHECK-NEXT: # 53; CHECK-NEXT: bl call_1@notoc 54; CHECK-NEXT: li r4, 0 55; CHECK-NEXT: setnbc r3, 4*cr2+eq 56; CHECK-NEXT: stb r4, 0(r3) 57; CHECK-NEXT: li r4, 0 58; CHECK-NEXT: .LBB0_2: # %bb5 59; CHECK-NEXT: # 60; CHECK-NEXT: bc 12, 4*cr4+lt, .LBB0_31 61; CHECK-NEXT: # %bb.3: # %bb10 62; CHECK-NEXT: # 63; CHECK-NEXT: bgt cr3, .LBB0_5 64; CHECK-NEXT: # %bb.4: # %bb10 65; CHECK-NEXT: # 66; CHECK-NEXT: mr r3, r4 67; CHECK-NEXT: lwz r5, 0(r3) 68; CHECK-NEXT: rlwinm r4, r5, 0, 21, 22 69; CHECK-NEXT: cmpwi cr2, r4, 512 70; CHECK-NEXT: lwax r4, r30, r29 71; CHECK-NEXT: add r4, r4, r29 72; CHECK-NEXT: mtctr r4 73; CHECK-NEXT: li r4, 0 74; CHECK-NEXT: bctr 75; CHECK-NEXT: .LBB0_5: # %bb13 76; CHECK-NEXT: # 77; CHECK-NEXT: li r4, 16 78; CHECK-NEXT: b .LBB0_2 79; CHECK-NEXT: .p2align 4 80; CHECK-NEXT: .LBB0_6: # %bb22 81; CHECK-NEXT: # 82; CHECK-NEXT: b .LBB0_6 83; CHECK-NEXT: .p2align 4 84; CHECK-NEXT: .LBB0_7: # %bb28 85; CHECK-NEXT: # 86; CHECK-NEXT: b .LBB0_7 87; CHECK-NEXT: .p2align 4 88; CHECK-NEXT: .LBB0_8: # %bb52 89; CHECK-NEXT: # 90; CHECK-NEXT: b .LBB0_8 91; CHECK-NEXT: .p2align 4 92; CHECK-NEXT: .LBB0_9: # %bb17 93; CHECK-NEXT: # 94; CHECK-NEXT: b .LBB0_9 95; CHECK-NEXT: .p2align 4 96; CHECK-NEXT: .LBB0_10: # %bb26 97; CHECK-NEXT: # 98; CHECK-NEXT: b .LBB0_10 99; CHECK-NEXT: .p2align 4 100; CHECK-NEXT: .LBB0_11: # %bb42 101; CHECK-NEXT: # 102; CHECK-NEXT: b .LBB0_11 103; CHECK-NEXT: .p2align 4 104; CHECK-NEXT: .LBB0_12: # %bb54 105; CHECK-NEXT: # 106; CHECK-NEXT: b .LBB0_12 107; CHECK-NEXT: .p2align 4 108; CHECK-NEXT: .LBB0_13: # %bb47 109; CHECK-NEXT: # 110; CHECK-NEXT: b .LBB0_13 111; CHECK-NEXT: .p2align 4 112; CHECK-NEXT: .LBB0_14: # %bb58 113; CHECK-NEXT: # 114; CHECK-NEXT: b .LBB0_14 115; CHECK-NEXT: .p2align 4 116; CHECK-NEXT: .LBB0_15: # %bb24 117; CHECK-NEXT: # 118; CHECK-NEXT: b .LBB0_15 119; CHECK-NEXT: .p2align 4 120; CHECK-NEXT: .LBB0_16: # %bb19 121; CHECK-NEXT: # 122; CHECK-NEXT: b .LBB0_16 123; CHECK-NEXT: .p2align 4 124; CHECK-NEXT: .LBB0_17: # %bb23 125; CHECK-NEXT: # 126; CHECK-NEXT: b .LBB0_17 127; CHECK-NEXT: .p2align 4 128; CHECK-NEXT: .LBB0_18: # %bb60 129; CHECK-NEXT: # 130; CHECK-NEXT: b .LBB0_18 131; CHECK-NEXT: .p2align 4 132; CHECK-NEXT: .LBB0_19: # %bb59 133; CHECK-NEXT: # 134; CHECK-NEXT: b .LBB0_19 135; CHECK-NEXT: .p2align 4 136; CHECK-NEXT: .LBB0_20: # %bb46 137; CHECK-NEXT: # 138; CHECK-NEXT: b .LBB0_20 139; CHECK-NEXT: .p2align 4 140; CHECK-NEXT: .LBB0_21: # %bb49 141; CHECK-NEXT: # 142; CHECK-NEXT: b .LBB0_21 143; CHECK-NEXT: .p2align 4 144; CHECK-NEXT: .LBB0_22: # %bb57 145; CHECK-NEXT: # 146; CHECK-NEXT: b .LBB0_22 147; CHECK-NEXT: .p2align 4 148; CHECK-NEXT: .LBB0_23: # %bb56 149; CHECK-NEXT: # 150; CHECK-NEXT: b .LBB0_23 151; CHECK-NEXT: .p2align 4 152; CHECK-NEXT: .LBB0_24: # %bb20 153; CHECK-NEXT: # 154; CHECK-NEXT: b .LBB0_24 155; CHECK-NEXT: .p2align 4 156; CHECK-NEXT: .LBB0_25: # %bb18 157; CHECK-NEXT: # 158; CHECK-NEXT: b .LBB0_25 159; CHECK-NEXT: .p2align 4 160; CHECK-NEXT: .LBB0_26: # %bb61 161; CHECK-NEXT: # 162; CHECK-NEXT: b .LBB0_26 163; CHECK-NEXT: .p2align 4 164; CHECK-NEXT: .LBB0_27: # %bb55 165; CHECK-NEXT: # 166; CHECK-NEXT: b .LBB0_27 167; CHECK-NEXT: .p2align 4 168; CHECK-NEXT: .LBB0_28: # %bb62 169; CHECK-NEXT: # 170; CHECK-NEXT: b .LBB0_28 171; CHECK-NEXT: .p2align 4 172; CHECK-NEXT: .LBB0_29: # %bb50 173; CHECK-NEXT: # 174; CHECK-NEXT: b .LBB0_29 175; CHECK-NEXT: .p2align 4 176; CHECK-NEXT: .LBB0_30: # %bb48 177; CHECK-NEXT: # 178; CHECK-NEXT: b .LBB0_30 179; CHECK-NEXT: .LBB0_31: # %bb9 180; CHECK-NEXT: ld r30, 64(r1) # 8-byte Folded Reload 181; CHECK-NEXT: ld r29, 56(r1) # 8-byte Folded Reload 182; CHECK-NEXT: addi r1, r1, 80 183; CHECK-NEXT: ld r0, 16(r1) 184; CHECK-NEXT: lwz r12, 8(r1) 185; CHECK-NEXT: mtlr r0 186; CHECK-NEXT: mtocrf 32, r12 187; CHECK-NEXT: mtocrf 16, r12 188; CHECK-NEXT: mtocrf 8, r12 189; CHECK-NEXT: blr 190; CHECK-NEXT: .LBB0_32: # %bb29 191; CHECK-NEXT: lwz r4, 52(r1) 192; CHECK-NEXT: cmpwi cr4, r3, 0 193; CHECK-NEXT: setnbc r30, 4*cr2+eq 194; CHECK-NEXT: # implicit-def: $cr2lt 195; CHECK-NEXT: mfocrf r3, 32 196; CHECK-NEXT: cmpwi cr3, r5, 366 197; CHECK-NEXT: li r29, 0 198; CHECK-NEXT: rlwimi r3, r4, 24, 8, 8 199; CHECK-NEXT: mtocrf 32, r3 200; CHECK-NEXT: .p2align 5 201; CHECK-NEXT: .LBB0_33: # %bb32 202; CHECK-NEXT: # 203; CHECK-NEXT: bc 4, 4*cr2+lt, .LBB0_35 204; CHECK-NEXT: # %bb.34: # %bb33 205; CHECK-NEXT: # 206; CHECK-NEXT: stb r29, 0(r30) 207; CHECK-NEXT: .LBB0_35: # %bb36 208; CHECK-NEXT: # 209; CHECK-NEXT: bc 4, 4*cr4+eq, .LBB0_33 210; CHECK-NEXT: # %bb.36: # %bb39 211; CHECK-NEXT: # 212; CHECK-NEXT: bl call_2@notoc 213; CHECK-NEXT: b .LBB0_33 214; 215; CHECK-BE-LABEL: P10_Spill_CR_GT: 216; CHECK-BE: # %bb.0: # %bb 217; CHECK-BE-NEXT: mflr r0 218; CHECK-BE-NEXT: mfcr r12 219; CHECK-BE-NEXT: std r0, 16(r1) 220; CHECK-BE-NEXT: stw r12, 8(r1) 221; CHECK-BE-NEXT: stdu r1, -160(r1) 222; CHECK-BE-NEXT: .cfi_def_cfa_offset 160 223; CHECK-BE-NEXT: .cfi_offset lr, 16 224; CHECK-BE-NEXT: .cfi_offset r29, -24 225; CHECK-BE-NEXT: .cfi_offset r30, -16 226; CHECK-BE-NEXT: .cfi_offset cr2, 8 227; CHECK-BE-NEXT: .cfi_offset cr2, 8 228; CHECK-BE-NEXT: .cfi_offset cr2, 8 229; CHECK-BE-NEXT: lwz r3, 0(r3) 230; CHECK-BE-NEXT: std r29, 136(r1) # 8-byte Folded Spill 231; CHECK-BE-NEXT: std r30, 144(r1) # 8-byte Folded Spill 232; CHECK-BE-NEXT: srwi r4, r3, 4 233; CHECK-BE-NEXT: srwi r3, r3, 5 234; CHECK-BE-NEXT: andi. r4, r4, 1 235; CHECK-BE-NEXT: li r4, 0 236; CHECK-BE-NEXT: crmove 4*cr4+lt, gt 237; CHECK-BE-NEXT: andi. r3, r3, 1 238; CHECK-BE-NEXT: setnbc r3, gt 239; CHECK-BE-NEXT: stw r3, 132(r1) 240; CHECK-BE-NEXT: cmplwi cr3, r3, 336 241; CHECK-BE-NEXT: li r3, 0 242; CHECK-BE-NEXT: sldi r30, r3, 2 243; CHECK-BE-NEXT: addis r3, r2, .LC0@toc@ha 244; CHECK-BE-NEXT: ld r29, .LC0@toc@l(r3) 245; CHECK-BE-NEXT: b .LBB0_2 246; CHECK-BE-NEXT: .p2align 4 247; CHECK-BE-NEXT: .LBB0_1: # %bb43 248; CHECK-BE-NEXT: # 249; CHECK-BE-NEXT: bl call_1 250; CHECK-BE-NEXT: nop 251; CHECK-BE-NEXT: li r4, 0 252; CHECK-BE-NEXT: setnbc r3, 4*cr2+eq 253; CHECK-BE-NEXT: stb r4, 0(r3) 254; CHECK-BE-NEXT: li r4, 0 255; CHECK-BE-NEXT: .LBB0_2: # %bb5 256; CHECK-BE-NEXT: # 257; CHECK-BE-NEXT: bc 12, 4*cr4+lt, .LBB0_31 258; CHECK-BE-NEXT: # %bb.3: # %bb10 259; CHECK-BE-NEXT: # 260; CHECK-BE-NEXT: bgt cr3, .LBB0_5 261; CHECK-BE-NEXT: # %bb.4: # %bb10 262; CHECK-BE-NEXT: # 263; CHECK-BE-NEXT: mr r3, r4 264; CHECK-BE-NEXT: lwz r5, 0(r3) 265; CHECK-BE-NEXT: rlwinm r4, r5, 0, 21, 22 266; CHECK-BE-NEXT: cmpwi cr2, r4, 512 267; CHECK-BE-NEXT: lwax r4, r30, r29 268; CHECK-BE-NEXT: add r4, r4, r29 269; CHECK-BE-NEXT: mtctr r4 270; CHECK-BE-NEXT: li r4, 0 271; CHECK-BE-NEXT: bctr 272; CHECK-BE-NEXT: .LBB0_5: # %bb13 273; CHECK-BE-NEXT: # 274; CHECK-BE-NEXT: li r4, 16 275; CHECK-BE-NEXT: b .LBB0_2 276; CHECK-BE-NEXT: .p2align 4 277; CHECK-BE-NEXT: .LBB0_6: # %bb22 278; CHECK-BE-NEXT: # 279; CHECK-BE-NEXT: b .LBB0_6 280; CHECK-BE-NEXT: .p2align 4 281; CHECK-BE-NEXT: .LBB0_7: # %bb28 282; CHECK-BE-NEXT: # 283; CHECK-BE-NEXT: b .LBB0_7 284; CHECK-BE-NEXT: .p2align 4 285; CHECK-BE-NEXT: .LBB0_8: # %bb52 286; CHECK-BE-NEXT: # 287; CHECK-BE-NEXT: b .LBB0_8 288; CHECK-BE-NEXT: .p2align 4 289; CHECK-BE-NEXT: .LBB0_9: # %bb17 290; CHECK-BE-NEXT: # 291; CHECK-BE-NEXT: b .LBB0_9 292; CHECK-BE-NEXT: .p2align 4 293; CHECK-BE-NEXT: .LBB0_10: # %bb26 294; CHECK-BE-NEXT: # 295; CHECK-BE-NEXT: b .LBB0_10 296; CHECK-BE-NEXT: .p2align 4 297; CHECK-BE-NEXT: .LBB0_11: # %bb42 298; CHECK-BE-NEXT: # 299; CHECK-BE-NEXT: b .LBB0_11 300; CHECK-BE-NEXT: .p2align 4 301; CHECK-BE-NEXT: .LBB0_12: # %bb54 302; CHECK-BE-NEXT: # 303; CHECK-BE-NEXT: b .LBB0_12 304; CHECK-BE-NEXT: .p2align 4 305; CHECK-BE-NEXT: .LBB0_13: # %bb47 306; CHECK-BE-NEXT: # 307; CHECK-BE-NEXT: b .LBB0_13 308; CHECK-BE-NEXT: .p2align 4 309; CHECK-BE-NEXT: .LBB0_14: # %bb58 310; CHECK-BE-NEXT: # 311; CHECK-BE-NEXT: b .LBB0_14 312; CHECK-BE-NEXT: .p2align 4 313; CHECK-BE-NEXT: .LBB0_15: # %bb24 314; CHECK-BE-NEXT: # 315; CHECK-BE-NEXT: b .LBB0_15 316; CHECK-BE-NEXT: .p2align 4 317; CHECK-BE-NEXT: .LBB0_16: # %bb19 318; CHECK-BE-NEXT: # 319; CHECK-BE-NEXT: b .LBB0_16 320; CHECK-BE-NEXT: .p2align 4 321; CHECK-BE-NEXT: .LBB0_17: # %bb23 322; CHECK-BE-NEXT: # 323; CHECK-BE-NEXT: b .LBB0_17 324; CHECK-BE-NEXT: .p2align 4 325; CHECK-BE-NEXT: .LBB0_18: # %bb60 326; CHECK-BE-NEXT: # 327; CHECK-BE-NEXT: b .LBB0_18 328; CHECK-BE-NEXT: .p2align 4 329; CHECK-BE-NEXT: .LBB0_19: # %bb59 330; CHECK-BE-NEXT: # 331; CHECK-BE-NEXT: b .LBB0_19 332; CHECK-BE-NEXT: .p2align 4 333; CHECK-BE-NEXT: .LBB0_20: # %bb46 334; CHECK-BE-NEXT: # 335; CHECK-BE-NEXT: b .LBB0_20 336; CHECK-BE-NEXT: .p2align 4 337; CHECK-BE-NEXT: .LBB0_21: # %bb49 338; CHECK-BE-NEXT: # 339; CHECK-BE-NEXT: b .LBB0_21 340; CHECK-BE-NEXT: .p2align 4 341; CHECK-BE-NEXT: .LBB0_22: # %bb57 342; CHECK-BE-NEXT: # 343; CHECK-BE-NEXT: b .LBB0_22 344; CHECK-BE-NEXT: .p2align 4 345; CHECK-BE-NEXT: .LBB0_23: # %bb56 346; CHECK-BE-NEXT: # 347; CHECK-BE-NEXT: b .LBB0_23 348; CHECK-BE-NEXT: .p2align 4 349; CHECK-BE-NEXT: .LBB0_24: # %bb20 350; CHECK-BE-NEXT: # 351; CHECK-BE-NEXT: b .LBB0_24 352; CHECK-BE-NEXT: .p2align 4 353; CHECK-BE-NEXT: .LBB0_25: # %bb18 354; CHECK-BE-NEXT: # 355; CHECK-BE-NEXT: b .LBB0_25 356; CHECK-BE-NEXT: .p2align 4 357; CHECK-BE-NEXT: .LBB0_26: # %bb61 358; CHECK-BE-NEXT: # 359; CHECK-BE-NEXT: b .LBB0_26 360; CHECK-BE-NEXT: .p2align 4 361; CHECK-BE-NEXT: .LBB0_27: # %bb55 362; CHECK-BE-NEXT: # 363; CHECK-BE-NEXT: b .LBB0_27 364; CHECK-BE-NEXT: .p2align 4 365; CHECK-BE-NEXT: .LBB0_28: # %bb62 366; CHECK-BE-NEXT: # 367; CHECK-BE-NEXT: b .LBB0_28 368; CHECK-BE-NEXT: .p2align 4 369; CHECK-BE-NEXT: .LBB0_29: # %bb50 370; CHECK-BE-NEXT: # 371; CHECK-BE-NEXT: b .LBB0_29 372; CHECK-BE-NEXT: .p2align 4 373; CHECK-BE-NEXT: .LBB0_30: # %bb48 374; CHECK-BE-NEXT: # 375; CHECK-BE-NEXT: b .LBB0_30 376; CHECK-BE-NEXT: .LBB0_31: # %bb9 377; CHECK-BE-NEXT: ld r30, 144(r1) # 8-byte Folded Reload 378; CHECK-BE-NEXT: ld r29, 136(r1) # 8-byte Folded Reload 379; CHECK-BE-NEXT: addi r1, r1, 160 380; CHECK-BE-NEXT: ld r0, 16(r1) 381; CHECK-BE-NEXT: lwz r12, 8(r1) 382; CHECK-BE-NEXT: mtlr r0 383; CHECK-BE-NEXT: mtocrf 32, r12 384; CHECK-BE-NEXT: mtocrf 16, r12 385; CHECK-BE-NEXT: mtocrf 8, r12 386; CHECK-BE-NEXT: blr 387; CHECK-BE-NEXT: .LBB0_32: # %bb29 388; CHECK-BE-NEXT: lwz r4, 132(r1) 389; CHECK-BE-NEXT: cmpwi cr4, r3, 0 390; CHECK-BE-NEXT: setnbc r30, 4*cr2+eq 391; CHECK-BE-NEXT: # implicit-def: $cr2lt 392; CHECK-BE-NEXT: mfocrf r3, 32 393; CHECK-BE-NEXT: cmpwi cr3, r5, 366 394; CHECK-BE-NEXT: li r29, 0 395; CHECK-BE-NEXT: rlwimi r3, r4, 24, 8, 8 396; CHECK-BE-NEXT: mtocrf 32, r3 397; CHECK-BE-NEXT: .p2align 5 398; CHECK-BE-NEXT: .LBB0_33: # %bb32 399; CHECK-BE-NEXT: # 400; CHECK-BE-NEXT: bc 4, 4*cr2+lt, .LBB0_35 401; CHECK-BE-NEXT: # %bb.34: # %bb33 402; CHECK-BE-NEXT: # 403; CHECK-BE-NEXT: stb r29, 0(r30) 404; CHECK-BE-NEXT: .LBB0_35: # %bb36 405; CHECK-BE-NEXT: # 406; CHECK-BE-NEXT: bc 4, 4*cr4+eq, .LBB0_33 407; CHECK-BE-NEXT: # %bb.36: # %bb39 408; CHECK-BE-NEXT: # 409; CHECK-BE-NEXT: bl call_2 410; CHECK-BE-NEXT: nop 411; CHECK-BE-NEXT: b .LBB0_33 412bb: 413 %tmp = load i32, i32* undef, align 8 414 %tmp1 = and i32 %tmp, 16 415 %tmp2 = icmp ne i32 %tmp1, 0 416 %tmp3 = and i32 %tmp, 32 417 %tmp4 = icmp ne i32 %tmp3, 0 418 br label %bb5 419 420bb5: ; preds = %bb63, %bb 421 %tmp6 = phi i32 [ 0, %bb ], [ %tmp64, %bb63 ] 422 %tmp7 = phi i1 [ %tmp4, %bb ], [ undef, %bb63 ] 423 %tmp8 = load i32, i32* undef, align 8 424 br i1 %tmp2, label %bb9, label %bb10 425 426bb9: ; preds = %bb5 427 ret void 428 429bb10: ; preds = %bb5 430 %tmp11 = and i32 %tmp8, 1536 431 %tmp12 = icmp eq i32 %tmp11, 512 432 switch i32 undef, label %bb13 [ 433 i32 117, label %bb62 434 i32 40, label %bb63 435 i32 302, label %bb63 436 i32 46, label %bb63 437 i32 320, label %bb16 438 i32 64, label %bb16 439 i32 344, label %bb18 440 i32 88, label %bb19 441 i32 376, label %bb63 442 i32 120, label %bb20 443 i32 47, label %bb21 444 i32 65, label %bb21 445 i32 90, label %bb21 446 i32 97, label %bb21 447 i32 66, label %bb63 448 i32 98, label %bb63 449 i32 72, label %bb63 450 i32 104, label %bb63 451 i32 67, label %bb63 452 i32 99, label %bb23 453 i32 87, label %bb24 454 i32 85, label %bb63 455 i32 371, label %bb25 456 i32 115, label %bb25 457 i32 339, label %bb27 458 i32 118, label %bb27 459 i32 110, label %bb27 460 i32 83, label %bb27 461 i32 374, label %bb29 462 i32 366, label %bb29 463 i32 105, label %bb41 464 i32 361, label %bb41 465 i32 73, label %bb43 466 i32 329, label %bb43 467 i32 106, label %bb46 468 i32 74, label %bb47 469 i32 364, label %bb48 470 i32 108, label %bb49 471 i32 332, label %bb50 472 i32 86, label %bb51 473 i32 78, label %bb51 474 i32 76, label %bb51 475 i32 342, label %bb53 476 i32 334, label %bb53 477 i32 112, label %bb55 478 i32 119, label %bb56 479 i32 80, label %bb63 480 i32 113, label %bb57 481 i32 81, label %bb58 482 i32 102, label %bb59 483 i32 100, label %bb60 484 i32 70, label %bb61 485 ] 486 487bb13: ; preds = %bb10 488 %tmp14 = icmp eq i32 0, 0 489 %tmp15 = select i1 %tmp14, i32 16, i32 undef 490 br label %bb63 491 492bb16: ; preds = %bb10, %bb10 493 br label %bb17 494 495bb17: ; preds = %bb17, %bb16 496 br label %bb17 497 498bb18: ; preds = %bb18, %bb10 499 br label %bb18 500 501bb19: ; preds = %bb19, %bb10 502 br label %bb19 503 504bb20: ; preds = %bb20, %bb10 505 br label %bb20 506 507bb21: ; preds = %bb10, %bb10, %bb10, %bb10 508 br label %bb22 509 510bb22: ; preds = %bb22, %bb21 511 br label %bb22 512 513bb23: ; preds = %bb23, %bb10 514 br label %bb23 515 516bb24: ; preds = %bb24, %bb10 517 br label %bb24 518 519bb25: ; preds = %bb10, %bb10 520 br label %bb26 521 522bb26: ; preds = %bb26, %bb25 523 br label %bb26 524 525bb27: ; preds = %bb10, %bb10, %bb10, %bb10 526 br label %bb28 527 528bb28: ; preds = %bb28, %bb27 529 br label %bb28 530 531bb29: ; preds = %bb10, %bb10 532 %tmp30 = icmp eq i32 %tmp8, 366 533 %tmp31 = icmp eq i32 %tmp6, 0 534 br label %bb32 535 536bb32: ; preds = %bb40, %bb29 537 br i1 %tmp7, label %bb33, label %bb36 538 539bb33: ; preds = %bb32 540 %tmp34 = getelementptr inbounds i8, i8* null, i64 -1 541 %tmp35 = select i1 %tmp12, i8* %tmp34, i8* null 542 store i8 0, i8* %tmp35, align 1 543 br label %bb36 544 545bb36: ; preds = %bb33, %bb32 546 br i1 %tmp30, label %bb37, label %bb38 547 548bb37: ; preds = %bb36 549 store i16 undef, i16* null, align 2 550 br label %bb38 551 552bb38: ; preds = %bb37, %bb36 553 br i1 %tmp31, label %bb39, label %bb40 554 555bb39: ; preds = %bb38 556 call void @call_2() 557 br label %bb40 558 559bb40: ; preds = %bb39, %bb38 560 br label %bb32 561 562bb41: ; preds = %bb10, %bb10 563 br label %bb42 564 565bb42: ; preds = %bb42, %bb41 566 br label %bb42 567 568bb43: ; preds = %bb10, %bb10 569 call void @call_1() 570 %tmp44 = getelementptr inbounds i8, i8* null, i64 -1 571 %tmp45 = select i1 %tmp12, i8* %tmp44, i8* null 572 store i8 0, i8* %tmp45, align 1 573 br label %bb63 574 575bb46: ; preds = %bb46, %bb10 576 br label %bb46 577 578bb47: ; preds = %bb47, %bb10 579 br label %bb47 580 581bb48: ; preds = %bb48, %bb10 582 br label %bb48 583 584bb49: ; preds = %bb49, %bb10 585 br label %bb49 586 587bb50: ; preds = %bb50, %bb10 588 br label %bb50 589 590bb51: ; preds = %bb10, %bb10, %bb10 591 br label %bb52 592 593bb52: ; preds = %bb52, %bb51 594 br label %bb52 595 596bb53: ; preds = %bb10, %bb10 597 br label %bb54 598 599bb54: ; preds = %bb54, %bb53 600 br label %bb54 601 602bb55: ; preds = %bb55, %bb10 603 br label %bb55 604 605bb56: ; preds = %bb56, %bb10 606 br label %bb56 607 608bb57: ; preds = %bb57, %bb10 609 br label %bb57 610 611bb58: ; preds = %bb58, %bb10 612 br label %bb58 613 614bb59: ; preds = %bb59, %bb10 615 br label %bb59 616 617bb60: ; preds = %bb60, %bb10 618 br label %bb60 619 620bb61: ; preds = %bb61, %bb10 621 br label %bb61 622 623bb62: ; preds = %bb62, %bb10 624 br label %bb62 625 626bb63: ; preds = %bb43, %bb13, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10, %bb10 627 %tmp64 = phi i32 [ %tmp15, %bb13 ], [ 0, %bb43 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ], [ 0, %bb10 ] 628 br label %bb5 629} 630 631declare void @call_1() local_unnamed_addr 632 633declare void @call_2() local_unnamed_addr 634