1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=riscv64 -verify-machineinstrs -filetype=obj < %s \ 3; RUN: -o /dev/null 2>&1 4; RUN: llc -mtriple=riscv64 -relocation-model=pic -verify-machineinstrs \ 5; RUN: -filetype=obj < %s -o /dev/null 2>&1 6; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \ 7; RUN: | FileCheck %s 8; RUN: llc -mtriple=riscv64 -relocation-model=pic -verify-machineinstrs < %s \ 9; RUN: | FileCheck %s 10 11define void @relax_bcc(i1 %a) nounwind { 12; CHECK-LABEL: relax_bcc: 13; CHECK: # %bb.0: 14; CHECK-NEXT: andi a0, a0, 1 15; CHECK-NEXT: bnez a0, .LBB0_1 16; CHECK-NEXT: j .LBB0_2 17; CHECK-NEXT: .LBB0_1: # %iftrue 18; CHECK-NEXT: #APP 19; CHECK-NEXT: .zero 4096 20; CHECK-NEXT: #NO_APP 21; CHECK-NEXT: .LBB0_2: # %tail 22; CHECK-NEXT: ret 23 br i1 %a, label %iftrue, label %tail 24 25iftrue: 26 call void asm sideeffect ".space 4096", ""() 27 br label %tail 28 29tail: 30 ret void 31} 32 33define i32 @relax_jal(i1 %a) nounwind { 34; CHECK-LABEL: relax_jal: 35; CHECK: # %bb.0: 36; CHECK-NEXT: addi sp, sp, -16 37; CHECK-NEXT: andi a0, a0, 1 38; CHECK-NEXT: bnez a0, .LBB1_1 39; CHECK-NEXT: # %bb.4: 40; CHECK-NEXT: jump .LBB1_2, a0 41; CHECK-NEXT: .LBB1_1: # %iftrue 42; CHECK-NEXT: #APP 43; CHECK-NEXT: #NO_APP 44; CHECK-NEXT: #APP 45; CHECK-NEXT: .zero 1048576 46; CHECK-NEXT: #NO_APP 47; CHECK-NEXT: j .LBB1_3 48; CHECK-NEXT: .LBB1_2: # %jmp 49; CHECK-NEXT: #APP 50; CHECK-NEXT: #NO_APP 51; CHECK-NEXT: .LBB1_3: # %tail 52; CHECK-NEXT: li a0, 1 53; CHECK-NEXT: addi sp, sp, 16 54; CHECK-NEXT: ret 55 br i1 %a, label %iftrue, label %jmp 56 57jmp: 58 call void asm sideeffect "", ""() 59 br label %tail 60 61iftrue: 62 call void asm sideeffect "", ""() 63 br label %space 64 65space: 66 call void asm sideeffect ".space 1048576", ""() 67 br label %tail 68 69tail: 70 ret i32 1 71} 72 73 74define void @relax_jal_spill_64() { 75; 76; CHECK-LABEL: relax_jal_spill_64: 77; CHECK: # %bb.0: 78; CHECK-NEXT: addi sp, sp, -112 79; CHECK-NEXT: .cfi_def_cfa_offset 112 80; CHECK-NEXT: sd ra, 104(sp) # 8-byte Folded Spill 81; CHECK-NEXT: sd s0, 96(sp) # 8-byte Folded Spill 82; CHECK-NEXT: sd s1, 88(sp) # 8-byte Folded Spill 83; CHECK-NEXT: sd s2, 80(sp) # 8-byte Folded Spill 84; CHECK-NEXT: sd s3, 72(sp) # 8-byte Folded Spill 85; CHECK-NEXT: sd s4, 64(sp) # 8-byte Folded Spill 86; CHECK-NEXT: sd s5, 56(sp) # 8-byte Folded Spill 87; CHECK-NEXT: sd s6, 48(sp) # 8-byte Folded Spill 88; CHECK-NEXT: sd s7, 40(sp) # 8-byte Folded Spill 89; CHECK-NEXT: sd s8, 32(sp) # 8-byte Folded Spill 90; CHECK-NEXT: sd s9, 24(sp) # 8-byte Folded Spill 91; CHECK-NEXT: sd s10, 16(sp) # 8-byte Folded Spill 92; CHECK-NEXT: sd s11, 8(sp) # 8-byte Folded Spill 93; CHECK-NEXT: .cfi_offset ra, -8 94; CHECK-NEXT: .cfi_offset s0, -16 95; CHECK-NEXT: .cfi_offset s1, -24 96; CHECK-NEXT: .cfi_offset s2, -32 97; CHECK-NEXT: .cfi_offset s3, -40 98; CHECK-NEXT: .cfi_offset s4, -48 99; CHECK-NEXT: .cfi_offset s5, -56 100; CHECK-NEXT: .cfi_offset s6, -64 101; CHECK-NEXT: .cfi_offset s7, -72 102; CHECK-NEXT: .cfi_offset s8, -80 103; CHECK-NEXT: .cfi_offset s9, -88 104; CHECK-NEXT: .cfi_offset s10, -96 105; CHECK-NEXT: .cfi_offset s11, -104 106; CHECK-NEXT: #APP 107; CHECK-NEXT: li ra, 1 108; CHECK-NEXT: #NO_APP 109; CHECK-NEXT: #APP 110; CHECK-NEXT: li t0, 5 111; CHECK-NEXT: #NO_APP 112; CHECK-NEXT: #APP 113; CHECK-NEXT: li t1, 6 114; CHECK-NEXT: #NO_APP 115; CHECK-NEXT: #APP 116; CHECK-NEXT: li t2, 7 117; CHECK-NEXT: #NO_APP 118; CHECK-NEXT: #APP 119; CHECK-NEXT: li s0, 8 120; CHECK-NEXT: #NO_APP 121; CHECK-NEXT: #APP 122; CHECK-NEXT: li s1, 9 123; CHECK-NEXT: #NO_APP 124; CHECK-NEXT: #APP 125; CHECK-NEXT: li a0, 10 126; CHECK-NEXT: #NO_APP 127; CHECK-NEXT: #APP 128; CHECK-NEXT: li a1, 11 129; CHECK-NEXT: #NO_APP 130; CHECK-NEXT: #APP 131; CHECK-NEXT: li a2, 12 132; CHECK-NEXT: #NO_APP 133; CHECK-NEXT: #APP 134; CHECK-NEXT: li a3, 13 135; CHECK-NEXT: #NO_APP 136; CHECK-NEXT: #APP 137; CHECK-NEXT: li a4, 14 138; CHECK-NEXT: #NO_APP 139; CHECK-NEXT: #APP 140; CHECK-NEXT: li a5, 15 141; CHECK-NEXT: #NO_APP 142; CHECK-NEXT: #APP 143; CHECK-NEXT: li a6, 16 144; CHECK-NEXT: #NO_APP 145; CHECK-NEXT: #APP 146; CHECK-NEXT: li a7, 17 147; CHECK-NEXT: #NO_APP 148; CHECK-NEXT: #APP 149; CHECK-NEXT: li s2, 18 150; CHECK-NEXT: #NO_APP 151; CHECK-NEXT: #APP 152; CHECK-NEXT: li s3, 19 153; CHECK-NEXT: #NO_APP 154; CHECK-NEXT: #APP 155; CHECK-NEXT: li s4, 20 156; CHECK-NEXT: #NO_APP 157; CHECK-NEXT: #APP 158; CHECK-NEXT: li s5, 21 159; CHECK-NEXT: #NO_APP 160; CHECK-NEXT: #APP 161; CHECK-NEXT: li s6, 22 162; CHECK-NEXT: #NO_APP 163; CHECK-NEXT: #APP 164; CHECK-NEXT: li s7, 23 165; CHECK-NEXT: #NO_APP 166; CHECK-NEXT: #APP 167; CHECK-NEXT: li s8, 24 168; CHECK-NEXT: #NO_APP 169; CHECK-NEXT: #APP 170; CHECK-NEXT: li s9, 25 171; CHECK-NEXT: #NO_APP 172; CHECK-NEXT: #APP 173; CHECK-NEXT: li s10, 26 174; CHECK-NEXT: #NO_APP 175; CHECK-NEXT: #APP 176; CHECK-NEXT: li s11, 27 177; CHECK-NEXT: #NO_APP 178; CHECK-NEXT: #APP 179; CHECK-NEXT: li t3, 28 180; CHECK-NEXT: #NO_APP 181; CHECK-NEXT: #APP 182; CHECK-NEXT: li t4, 29 183; CHECK-NEXT: #NO_APP 184; CHECK-NEXT: #APP 185; CHECK-NEXT: li t5, 30 186; CHECK-NEXT: #NO_APP 187; CHECK-NEXT: #APP 188; CHECK-NEXT: li t6, 31 189; CHECK-NEXT: #NO_APP 190; CHECK-NEXT: beq t5, t6, .LBB2_1 191; CHECK-NEXT: # %bb.3: 192; CHECK-NEXT: sd s11, 0(sp) 193; CHECK-NEXT: jump .LBB2_4, s11 194; CHECK-NEXT: .LBB2_1: # %branch_1 195; CHECK-NEXT: #APP 196; CHECK-NEXT: .zero 1048576 197; CHECK-NEXT: #NO_APP 198; CHECK-NEXT: j .LBB2_2 199; CHECK-NEXT: .LBB2_4: # %branch_2 200; CHECK-NEXT: ld s11, 0(sp) 201; CHECK-NEXT: .LBB2_2: # %branch_2 202; CHECK-NEXT: #APP 203; CHECK-NEXT: # reg use ra 204; CHECK-NEXT: #NO_APP 205; CHECK-NEXT: #APP 206; CHECK-NEXT: # reg use t0 207; CHECK-NEXT: #NO_APP 208; CHECK-NEXT: #APP 209; CHECK-NEXT: # reg use t1 210; CHECK-NEXT: #NO_APP 211; CHECK-NEXT: #APP 212; CHECK-NEXT: # reg use t2 213; CHECK-NEXT: #NO_APP 214; CHECK-NEXT: #APP 215; CHECK-NEXT: # reg use s0 216; CHECK-NEXT: #NO_APP 217; CHECK-NEXT: #APP 218; CHECK-NEXT: # reg use s1 219; CHECK-NEXT: #NO_APP 220; CHECK-NEXT: #APP 221; CHECK-NEXT: # reg use a0 222; CHECK-NEXT: #NO_APP 223; CHECK-NEXT: #APP 224; CHECK-NEXT: # reg use a1 225; CHECK-NEXT: #NO_APP 226; CHECK-NEXT: #APP 227; CHECK-NEXT: # reg use a2 228; CHECK-NEXT: #NO_APP 229; CHECK-NEXT: #APP 230; CHECK-NEXT: # reg use a3 231; CHECK-NEXT: #NO_APP 232; CHECK-NEXT: #APP 233; CHECK-NEXT: # reg use a4 234; CHECK-NEXT: #NO_APP 235; CHECK-NEXT: #APP 236; CHECK-NEXT: # reg use a5 237; CHECK-NEXT: #NO_APP 238; CHECK-NEXT: #APP 239; CHECK-NEXT: # reg use a6 240; CHECK-NEXT: #NO_APP 241; CHECK-NEXT: #APP 242; CHECK-NEXT: # reg use a7 243; CHECK-NEXT: #NO_APP 244; CHECK-NEXT: #APP 245; CHECK-NEXT: # reg use s2 246; CHECK-NEXT: #NO_APP 247; CHECK-NEXT: #APP 248; CHECK-NEXT: # reg use s3 249; CHECK-NEXT: #NO_APP 250; CHECK-NEXT: #APP 251; CHECK-NEXT: # reg use s4 252; CHECK-NEXT: #NO_APP 253; CHECK-NEXT: #APP 254; CHECK-NEXT: # reg use s5 255; CHECK-NEXT: #NO_APP 256; CHECK-NEXT: #APP 257; CHECK-NEXT: # reg use s6 258; CHECK-NEXT: #NO_APP 259; CHECK-NEXT: #APP 260; CHECK-NEXT: # reg use s7 261; CHECK-NEXT: #NO_APP 262; CHECK-NEXT: #APP 263; CHECK-NEXT: # reg use s8 264; CHECK-NEXT: #NO_APP 265; CHECK-NEXT: #APP 266; CHECK-NEXT: # reg use s9 267; CHECK-NEXT: #NO_APP 268; CHECK-NEXT: #APP 269; CHECK-NEXT: # reg use s10 270; CHECK-NEXT: #NO_APP 271; CHECK-NEXT: #APP 272; CHECK-NEXT: # reg use s11 273; CHECK-NEXT: #NO_APP 274; CHECK-NEXT: #APP 275; CHECK-NEXT: # reg use t3 276; CHECK-NEXT: #NO_APP 277; CHECK-NEXT: #APP 278; CHECK-NEXT: # reg use t4 279; CHECK-NEXT: #NO_APP 280; CHECK-NEXT: #APP 281; CHECK-NEXT: # reg use t5 282; CHECK-NEXT: #NO_APP 283; CHECK-NEXT: #APP 284; CHECK-NEXT: # reg use t6 285; CHECK-NEXT: #NO_APP 286; CHECK-NEXT: ld ra, 104(sp) # 8-byte Folded Reload 287; CHECK-NEXT: ld s0, 96(sp) # 8-byte Folded Reload 288; CHECK-NEXT: ld s1, 88(sp) # 8-byte Folded Reload 289; CHECK-NEXT: ld s2, 80(sp) # 8-byte Folded Reload 290; CHECK-NEXT: ld s3, 72(sp) # 8-byte Folded Reload 291; CHECK-NEXT: ld s4, 64(sp) # 8-byte Folded Reload 292; CHECK-NEXT: ld s5, 56(sp) # 8-byte Folded Reload 293; CHECK-NEXT: ld s6, 48(sp) # 8-byte Folded Reload 294; CHECK-NEXT: ld s7, 40(sp) # 8-byte Folded Reload 295; CHECK-NEXT: ld s8, 32(sp) # 8-byte Folded Reload 296; CHECK-NEXT: ld s9, 24(sp) # 8-byte Folded Reload 297; CHECK-NEXT: ld s10, 16(sp) # 8-byte Folded Reload 298; CHECK-NEXT: ld s11, 8(sp) # 8-byte Folded Reload 299; CHECK-NEXT: .cfi_restore ra 300; CHECK-NEXT: .cfi_restore s0 301; CHECK-NEXT: .cfi_restore s1 302; CHECK-NEXT: .cfi_restore s2 303; CHECK-NEXT: .cfi_restore s3 304; CHECK-NEXT: .cfi_restore s4 305; CHECK-NEXT: .cfi_restore s5 306; CHECK-NEXT: .cfi_restore s6 307; CHECK-NEXT: .cfi_restore s7 308; CHECK-NEXT: .cfi_restore s8 309; CHECK-NEXT: .cfi_restore s9 310; CHECK-NEXT: .cfi_restore s10 311; CHECK-NEXT: .cfi_restore s11 312; CHECK-NEXT: addi sp, sp, 112 313; CHECK-NEXT: .cfi_def_cfa_offset 0 314; CHECK-NEXT: ret 315 %ra = call i64 asm sideeffect "addi ra, x0, 1", "={ra}"() 316 %t0 = call i64 asm sideeffect "addi t0, x0, 5", "={t0}"() 317 %t1 = call i64 asm sideeffect "addi t1, x0, 6", "={t1}"() 318 %t2 = call i64 asm sideeffect "addi t2, x0, 7", "={t2}"() 319 %s0 = call i64 asm sideeffect "addi s0, x0, 8", "={s0}"() 320 %s1 = call i64 asm sideeffect "addi s1, x0, 9", "={s1}"() 321 %a0 = call i64 asm sideeffect "addi a0, x0, 10", "={a0}"() 322 %a1 = call i64 asm sideeffect "addi a1, x0, 11", "={a1}"() 323 %a2 = call i64 asm sideeffect "addi a2, x0, 12", "={a2}"() 324 %a3 = call i64 asm sideeffect "addi a3, x0, 13", "={a3}"() 325 %a4 = call i64 asm sideeffect "addi a4, x0, 14", "={a4}"() 326 %a5 = call i64 asm sideeffect "addi a5, x0, 15", "={a5}"() 327 %a6 = call i64 asm sideeffect "addi a6, x0, 16", "={a6}"() 328 %a7 = call i64 asm sideeffect "addi a7, x0, 17", "={a7}"() 329 %s2 = call i64 asm sideeffect "addi s2, x0, 18", "={s2}"() 330 %s3 = call i64 asm sideeffect "addi s3, x0, 19", "={s3}"() 331 %s4 = call i64 asm sideeffect "addi s4, x0, 20", "={s4}"() 332 %s5 = call i64 asm sideeffect "addi s5, x0, 21", "={s5}"() 333 %s6 = call i64 asm sideeffect "addi s6, x0, 22", "={s6}"() 334 %s7 = call i64 asm sideeffect "addi s7, x0, 23", "={s7}"() 335 %s8 = call i64 asm sideeffect "addi s8, x0, 24", "={s8}"() 336 %s9 = call i64 asm sideeffect "addi s9, x0, 25", "={s9}"() 337 %s10 = call i64 asm sideeffect "addi s10, x0, 26", "={s10}"() 338 %s11 = call i64 asm sideeffect "addi s11, x0, 27", "={s11}"() 339 %t3 = call i64 asm sideeffect "addi t3, x0, 28", "={t3}"() 340 %t4 = call i64 asm sideeffect "addi t4, x0, 29", "={t4}"() 341 %t5 = call i64 asm sideeffect "addi t5, x0, 30", "={t5}"() 342 %t6 = call i64 asm sideeffect "addi t6, x0, 31", "={t6}"() 343 344 %cmp = icmp eq i64 %t5, %t6 345 br i1 %cmp, label %branch_1, label %branch_2 346 347branch_1: 348 call void asm sideeffect ".space 1048576", ""() 349 br label %branch_2 350 351branch_2: 352 call void asm sideeffect "# reg use $0", "{ra}"(i64 %ra) 353 call void asm sideeffect "# reg use $0", "{t0}"(i64 %t0) 354 call void asm sideeffect "# reg use $0", "{t1}"(i64 %t1) 355 call void asm sideeffect "# reg use $0", "{t2}"(i64 %t2) 356 call void asm sideeffect "# reg use $0", "{s0}"(i64 %s0) 357 call void asm sideeffect "# reg use $0", "{s1}"(i64 %s1) 358 call void asm sideeffect "# reg use $0", "{a0}"(i64 %a0) 359 call void asm sideeffect "# reg use $0", "{a1}"(i64 %a1) 360 call void asm sideeffect "# reg use $0", "{a2}"(i64 %a2) 361 call void asm sideeffect "# reg use $0", "{a3}"(i64 %a3) 362 call void asm sideeffect "# reg use $0", "{a4}"(i64 %a4) 363 call void asm sideeffect "# reg use $0", "{a5}"(i64 %a5) 364 call void asm sideeffect "# reg use $0", "{a6}"(i64 %a6) 365 call void asm sideeffect "# reg use $0", "{a7}"(i64 %a7) 366 call void asm sideeffect "# reg use $0", "{s2}"(i64 %s2) 367 call void asm sideeffect "# reg use $0", "{s3}"(i64 %s3) 368 call void asm sideeffect "# reg use $0", "{s4}"(i64 %s4) 369 call void asm sideeffect "# reg use $0", "{s5}"(i64 %s5) 370 call void asm sideeffect "# reg use $0", "{s6}"(i64 %s6) 371 call void asm sideeffect "# reg use $0", "{s7}"(i64 %s7) 372 call void asm sideeffect "# reg use $0", "{s8}"(i64 %s8) 373 call void asm sideeffect "# reg use $0", "{s9}"(i64 %s9) 374 call void asm sideeffect "# reg use $0", "{s10}"(i64 %s10) 375 call void asm sideeffect "# reg use $0", "{s11}"(i64 %s11) 376 call void asm sideeffect "# reg use $0", "{t3}"(i64 %t3) 377 call void asm sideeffect "# reg use $0", "{t4}"(i64 %t4) 378 call void asm sideeffect "# reg use $0", "{t5}"(i64 %t5) 379 call void asm sideeffect "# reg use $0", "{t6}"(i64 %t6) 380 381 ret void 382} 383 384define void @relax_jal_spill_64_adjust_spill_slot() { 385; 386 ; If the stack is large and the offset of BranchRelaxationScratchFrameIndex 387 ; is out the range of 12-bit signed integer, check whether the spill slot is 388 ; adjusted to close to the stack base register. 389; CHECK-LABEL: relax_jal_spill_64_adjust_spill_slot: 390; CHECK: # %bb.0: 391; CHECK-NEXT: addi sp, sp, -2032 392; CHECK-NEXT: .cfi_def_cfa_offset 2032 393; CHECK-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill 394; CHECK-NEXT: sd s0, 2016(sp) # 8-byte Folded Spill 395; CHECK-NEXT: sd s1, 2008(sp) # 8-byte Folded Spill 396; CHECK-NEXT: sd s2, 2000(sp) # 8-byte Folded Spill 397; CHECK-NEXT: sd s3, 1992(sp) # 8-byte Folded Spill 398; CHECK-NEXT: sd s4, 1984(sp) # 8-byte Folded Spill 399; CHECK-NEXT: sd s5, 1976(sp) # 8-byte Folded Spill 400; CHECK-NEXT: sd s6, 1968(sp) # 8-byte Folded Spill 401; CHECK-NEXT: sd s7, 1960(sp) # 8-byte Folded Spill 402; CHECK-NEXT: sd s8, 1952(sp) # 8-byte Folded Spill 403; CHECK-NEXT: sd s9, 1944(sp) # 8-byte Folded Spill 404; CHECK-NEXT: sd s10, 1936(sp) # 8-byte Folded Spill 405; CHECK-NEXT: sd s11, 1928(sp) # 8-byte Folded Spill 406; CHECK-NEXT: .cfi_offset ra, -8 407; CHECK-NEXT: .cfi_offset s0, -16 408; CHECK-NEXT: .cfi_offset s1, -24 409; CHECK-NEXT: .cfi_offset s2, -32 410; CHECK-NEXT: .cfi_offset s3, -40 411; CHECK-NEXT: .cfi_offset s4, -48 412; CHECK-NEXT: .cfi_offset s5, -56 413; CHECK-NEXT: .cfi_offset s6, -64 414; CHECK-NEXT: .cfi_offset s7, -72 415; CHECK-NEXT: .cfi_offset s8, -80 416; CHECK-NEXT: .cfi_offset s9, -88 417; CHECK-NEXT: .cfi_offset s10, -96 418; CHECK-NEXT: .cfi_offset s11, -104 419; CHECK-NEXT: addi s0, sp, 2032 420; CHECK-NEXT: .cfi_def_cfa s0, 0 421; CHECK-NEXT: lui a0, 2 422; CHECK-NEXT: addiw a0, a0, -2032 423; CHECK-NEXT: sub sp, sp, a0 424; CHECK-NEXT: srli a0, sp, 12 425; CHECK-NEXT: slli sp, a0, 12 426; CHECK-NEXT: #APP 427; CHECK-NEXT: li ra, 1 428; CHECK-NEXT: #NO_APP 429; CHECK-NEXT: #APP 430; CHECK-NEXT: li t0, 5 431; CHECK-NEXT: #NO_APP 432; CHECK-NEXT: #APP 433; CHECK-NEXT: li t1, 6 434; CHECK-NEXT: #NO_APP 435; CHECK-NEXT: #APP 436; CHECK-NEXT: li t2, 7 437; CHECK-NEXT: #NO_APP 438; CHECK-NEXT: #APP 439; CHECK-NEXT: li s0, 8 440; CHECK-NEXT: #NO_APP 441; CHECK-NEXT: #APP 442; CHECK-NEXT: li s1, 9 443; CHECK-NEXT: #NO_APP 444; CHECK-NEXT: #APP 445; CHECK-NEXT: li a0, 10 446; CHECK-NEXT: #NO_APP 447; CHECK-NEXT: #APP 448; CHECK-NEXT: li a1, 11 449; CHECK-NEXT: #NO_APP 450; CHECK-NEXT: #APP 451; CHECK-NEXT: li a2, 12 452; CHECK-NEXT: #NO_APP 453; CHECK-NEXT: #APP 454; CHECK-NEXT: li a3, 13 455; CHECK-NEXT: #NO_APP 456; CHECK-NEXT: #APP 457; CHECK-NEXT: li a4, 14 458; CHECK-NEXT: #NO_APP 459; CHECK-NEXT: #APP 460; CHECK-NEXT: li a5, 15 461; CHECK-NEXT: #NO_APP 462; CHECK-NEXT: #APP 463; CHECK-NEXT: li a6, 16 464; CHECK-NEXT: #NO_APP 465; CHECK-NEXT: #APP 466; CHECK-NEXT: li a7, 17 467; CHECK-NEXT: #NO_APP 468; CHECK-NEXT: #APP 469; CHECK-NEXT: li s2, 18 470; CHECK-NEXT: #NO_APP 471; CHECK-NEXT: #APP 472; CHECK-NEXT: li s3, 19 473; CHECK-NEXT: #NO_APP 474; CHECK-NEXT: #APP 475; CHECK-NEXT: li s4, 20 476; CHECK-NEXT: #NO_APP 477; CHECK-NEXT: #APP 478; CHECK-NEXT: li s5, 21 479; CHECK-NEXT: #NO_APP 480; CHECK-NEXT: #APP 481; CHECK-NEXT: li s6, 22 482; CHECK-NEXT: #NO_APP 483; CHECK-NEXT: #APP 484; CHECK-NEXT: li s7, 23 485; CHECK-NEXT: #NO_APP 486; CHECK-NEXT: #APP 487; CHECK-NEXT: li s8, 24 488; CHECK-NEXT: #NO_APP 489; CHECK-NEXT: #APP 490; CHECK-NEXT: li s9, 25 491; CHECK-NEXT: #NO_APP 492; CHECK-NEXT: #APP 493; CHECK-NEXT: li s10, 26 494; CHECK-NEXT: #NO_APP 495; CHECK-NEXT: #APP 496; CHECK-NEXT: li s11, 27 497; CHECK-NEXT: #NO_APP 498; CHECK-NEXT: #APP 499; CHECK-NEXT: li t3, 28 500; CHECK-NEXT: #NO_APP 501; CHECK-NEXT: #APP 502; CHECK-NEXT: li t4, 29 503; CHECK-NEXT: #NO_APP 504; CHECK-NEXT: #APP 505; CHECK-NEXT: li t5, 30 506; CHECK-NEXT: #NO_APP 507; CHECK-NEXT: #APP 508; CHECK-NEXT: li t6, 31 509; CHECK-NEXT: #NO_APP 510; CHECK-NEXT: beq t5, t6, .LBB3_1 511; CHECK-NEXT: # %bb.3: 512; CHECK-NEXT: sd s11, 0(sp) 513; CHECK-NEXT: jump .LBB3_4, s11 514; CHECK-NEXT: .LBB3_1: # %branch_1 515; CHECK-NEXT: #APP 516; CHECK-NEXT: .zero 1048576 517; CHECK-NEXT: #NO_APP 518; CHECK-NEXT: j .LBB3_2 519; CHECK-NEXT: .LBB3_4: # %branch_2 520; CHECK-NEXT: ld s11, 0(sp) 521; CHECK-NEXT: .LBB3_2: # %branch_2 522; CHECK-NEXT: #APP 523; CHECK-NEXT: # reg use ra 524; CHECK-NEXT: #NO_APP 525; CHECK-NEXT: #APP 526; CHECK-NEXT: # reg use t0 527; CHECK-NEXT: #NO_APP 528; CHECK-NEXT: #APP 529; CHECK-NEXT: # reg use t1 530; CHECK-NEXT: #NO_APP 531; CHECK-NEXT: #APP 532; CHECK-NEXT: # reg use t2 533; CHECK-NEXT: #NO_APP 534; CHECK-NEXT: #APP 535; CHECK-NEXT: # reg use s0 536; CHECK-NEXT: #NO_APP 537; CHECK-NEXT: #APP 538; CHECK-NEXT: # reg use s1 539; CHECK-NEXT: #NO_APP 540; CHECK-NEXT: #APP 541; CHECK-NEXT: # reg use a0 542; CHECK-NEXT: #NO_APP 543; CHECK-NEXT: #APP 544; CHECK-NEXT: # reg use a1 545; CHECK-NEXT: #NO_APP 546; CHECK-NEXT: #APP 547; CHECK-NEXT: # reg use a2 548; CHECK-NEXT: #NO_APP 549; CHECK-NEXT: #APP 550; CHECK-NEXT: # reg use a3 551; CHECK-NEXT: #NO_APP 552; CHECK-NEXT: #APP 553; CHECK-NEXT: # reg use a4 554; CHECK-NEXT: #NO_APP 555; CHECK-NEXT: #APP 556; CHECK-NEXT: # reg use a5 557; CHECK-NEXT: #NO_APP 558; CHECK-NEXT: #APP 559; CHECK-NEXT: # reg use a6 560; CHECK-NEXT: #NO_APP 561; CHECK-NEXT: #APP 562; CHECK-NEXT: # reg use a7 563; CHECK-NEXT: #NO_APP 564; CHECK-NEXT: #APP 565; CHECK-NEXT: # reg use s2 566; CHECK-NEXT: #NO_APP 567; CHECK-NEXT: #APP 568; CHECK-NEXT: # reg use s3 569; CHECK-NEXT: #NO_APP 570; CHECK-NEXT: #APP 571; CHECK-NEXT: # reg use s4 572; CHECK-NEXT: #NO_APP 573; CHECK-NEXT: #APP 574; CHECK-NEXT: # reg use s5 575; CHECK-NEXT: #NO_APP 576; CHECK-NEXT: #APP 577; CHECK-NEXT: # reg use s6 578; CHECK-NEXT: #NO_APP 579; CHECK-NEXT: #APP 580; CHECK-NEXT: # reg use s7 581; CHECK-NEXT: #NO_APP 582; CHECK-NEXT: #APP 583; CHECK-NEXT: # reg use s8 584; CHECK-NEXT: #NO_APP 585; CHECK-NEXT: #APP 586; CHECK-NEXT: # reg use s9 587; CHECK-NEXT: #NO_APP 588; CHECK-NEXT: #APP 589; CHECK-NEXT: # reg use s10 590; CHECK-NEXT: #NO_APP 591; CHECK-NEXT: #APP 592; CHECK-NEXT: # reg use s11 593; CHECK-NEXT: #NO_APP 594; CHECK-NEXT: #APP 595; CHECK-NEXT: # reg use t3 596; CHECK-NEXT: #NO_APP 597; CHECK-NEXT: #APP 598; CHECK-NEXT: # reg use t4 599; CHECK-NEXT: #NO_APP 600; CHECK-NEXT: #APP 601; CHECK-NEXT: # reg use t5 602; CHECK-NEXT: #NO_APP 603; CHECK-NEXT: #APP 604; CHECK-NEXT: # reg use t6 605; CHECK-NEXT: #NO_APP 606; CHECK-NEXT: addi sp, s0, -2032 607; CHECK-NEXT: .cfi_def_cfa sp, 2032 608; CHECK-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload 609; CHECK-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload 610; CHECK-NEXT: ld s1, 2008(sp) # 8-byte Folded Reload 611; CHECK-NEXT: ld s2, 2000(sp) # 8-byte Folded Reload 612; CHECK-NEXT: ld s3, 1992(sp) # 8-byte Folded Reload 613; CHECK-NEXT: ld s4, 1984(sp) # 8-byte Folded Reload 614; CHECK-NEXT: ld s5, 1976(sp) # 8-byte Folded Reload 615; CHECK-NEXT: ld s6, 1968(sp) # 8-byte Folded Reload 616; CHECK-NEXT: ld s7, 1960(sp) # 8-byte Folded Reload 617; CHECK-NEXT: ld s8, 1952(sp) # 8-byte Folded Reload 618; CHECK-NEXT: ld s9, 1944(sp) # 8-byte Folded Reload 619; CHECK-NEXT: ld s10, 1936(sp) # 8-byte Folded Reload 620; CHECK-NEXT: ld s11, 1928(sp) # 8-byte Folded Reload 621; CHECK-NEXT: .cfi_restore ra 622; CHECK-NEXT: .cfi_restore s0 623; CHECK-NEXT: .cfi_restore s1 624; CHECK-NEXT: .cfi_restore s2 625; CHECK-NEXT: .cfi_restore s3 626; CHECK-NEXT: .cfi_restore s4 627; CHECK-NEXT: .cfi_restore s5 628; CHECK-NEXT: .cfi_restore s6 629; CHECK-NEXT: .cfi_restore s7 630; CHECK-NEXT: .cfi_restore s8 631; CHECK-NEXT: .cfi_restore s9 632; CHECK-NEXT: .cfi_restore s10 633; CHECK-NEXT: .cfi_restore s11 634; CHECK-NEXT: addi sp, sp, 2032 635; CHECK-NEXT: .cfi_def_cfa_offset 0 636; CHECK-NEXT: ret 637 %stack_obj = alloca i64, align 4096 638 639 %ra = call i64 asm sideeffect "addi ra, x0, 1", "={ra}"() 640 %t0 = call i64 asm sideeffect "addi t0, x0, 5", "={t0}"() 641 %t1 = call i64 asm sideeffect "addi t1, x0, 6", "={t1}"() 642 %t2 = call i64 asm sideeffect "addi t2, x0, 7", "={t2}"() 643 %s0 = call i64 asm sideeffect "addi s0, x0, 8", "={s0}"() 644 %s1 = call i64 asm sideeffect "addi s1, x0, 9", "={s1}"() 645 %a0 = call i64 asm sideeffect "addi a0, x0, 10", "={a0}"() 646 %a1 = call i64 asm sideeffect "addi a1, x0, 11", "={a1}"() 647 %a2 = call i64 asm sideeffect "addi a2, x0, 12", "={a2}"() 648 %a3 = call i64 asm sideeffect "addi a3, x0, 13", "={a3}"() 649 %a4 = call i64 asm sideeffect "addi a4, x0, 14", "={a4}"() 650 %a5 = call i64 asm sideeffect "addi a5, x0, 15", "={a5}"() 651 %a6 = call i64 asm sideeffect "addi a6, x0, 16", "={a6}"() 652 %a7 = call i64 asm sideeffect "addi a7, x0, 17", "={a7}"() 653 %s2 = call i64 asm sideeffect "addi s2, x0, 18", "={s2}"() 654 %s3 = call i64 asm sideeffect "addi s3, x0, 19", "={s3}"() 655 %s4 = call i64 asm sideeffect "addi s4, x0, 20", "={s4}"() 656 %s5 = call i64 asm sideeffect "addi s5, x0, 21", "={s5}"() 657 %s6 = call i64 asm sideeffect "addi s6, x0, 22", "={s6}"() 658 %s7 = call i64 asm sideeffect "addi s7, x0, 23", "={s7}"() 659 %s8 = call i64 asm sideeffect "addi s8, x0, 24", "={s8}"() 660 %s9 = call i64 asm sideeffect "addi s9, x0, 25", "={s9}"() 661 %s10 = call i64 asm sideeffect "addi s10, x0, 26", "={s10}"() 662 %s11 = call i64 asm sideeffect "addi s11, x0, 27", "={s11}"() 663 %t3 = call i64 asm sideeffect "addi t3, x0, 28", "={t3}"() 664 %t4 = call i64 asm sideeffect "addi t4, x0, 29", "={t4}"() 665 %t5 = call i64 asm sideeffect "addi t5, x0, 30", "={t5}"() 666 %t6 = call i64 asm sideeffect "addi t6, x0, 31", "={t6}"() 667 668 %cmp = icmp eq i64 %t5, %t6 669 br i1 %cmp, label %branch_1, label %branch_2 670 671branch_1: 672 call void asm sideeffect ".space 1048576", ""() 673 br label %branch_2 674 675branch_2: 676 call void asm sideeffect "# reg use $0", "{ra}"(i64 %ra) 677 call void asm sideeffect "# reg use $0", "{t0}"(i64 %t0) 678 call void asm sideeffect "# reg use $0", "{t1}"(i64 %t1) 679 call void asm sideeffect "# reg use $0", "{t2}"(i64 %t2) 680 call void asm sideeffect "# reg use $0", "{s0}"(i64 %s0) 681 call void asm sideeffect "# reg use $0", "{s1}"(i64 %s1) 682 call void asm sideeffect "# reg use $0", "{a0}"(i64 %a0) 683 call void asm sideeffect "# reg use $0", "{a1}"(i64 %a1) 684 call void asm sideeffect "# reg use $0", "{a2}"(i64 %a2) 685 call void asm sideeffect "# reg use $0", "{a3}"(i64 %a3) 686 call void asm sideeffect "# reg use $0", "{a4}"(i64 %a4) 687 call void asm sideeffect "# reg use $0", "{a5}"(i64 %a5) 688 call void asm sideeffect "# reg use $0", "{a6}"(i64 %a6) 689 call void asm sideeffect "# reg use $0", "{a7}"(i64 %a7) 690 call void asm sideeffect "# reg use $0", "{s2}"(i64 %s2) 691 call void asm sideeffect "# reg use $0", "{s3}"(i64 %s3) 692 call void asm sideeffect "# reg use $0", "{s4}"(i64 %s4) 693 call void asm sideeffect "# reg use $0", "{s5}"(i64 %s5) 694 call void asm sideeffect "# reg use $0", "{s6}"(i64 %s6) 695 call void asm sideeffect "# reg use $0", "{s7}"(i64 %s7) 696 call void asm sideeffect "# reg use $0", "{s8}"(i64 %s8) 697 call void asm sideeffect "# reg use $0", "{s9}"(i64 %s9) 698 call void asm sideeffect "# reg use $0", "{s10}"(i64 %s10) 699 call void asm sideeffect "# reg use $0", "{s11}"(i64 %s11) 700 call void asm sideeffect "# reg use $0", "{t3}"(i64 %t3) 701 call void asm sideeffect "# reg use $0", "{t4}"(i64 %t4) 702 call void asm sideeffect "# reg use $0", "{t5}"(i64 %t5) 703 call void asm sideeffect "# reg use $0", "{t6}"(i64 %t6) 704 705 ret void 706} 707 708define void @relax_jal_spill_64_restore_block_correspondence() { 709; 710; CHECK-LABEL: relax_jal_spill_64_restore_block_correspondence: 711; CHECK: # %bb.0: # %entry 712; CHECK-NEXT: addi sp, sp, -112 713; CHECK-NEXT: .cfi_def_cfa_offset 112 714; CHECK-NEXT: sd ra, 104(sp) # 8-byte Folded Spill 715; CHECK-NEXT: sd s0, 96(sp) # 8-byte Folded Spill 716; CHECK-NEXT: sd s1, 88(sp) # 8-byte Folded Spill 717; CHECK-NEXT: sd s2, 80(sp) # 8-byte Folded Spill 718; CHECK-NEXT: sd s3, 72(sp) # 8-byte Folded Spill 719; CHECK-NEXT: sd s4, 64(sp) # 8-byte Folded Spill 720; CHECK-NEXT: sd s5, 56(sp) # 8-byte Folded Spill 721; CHECK-NEXT: sd s6, 48(sp) # 8-byte Folded Spill 722; CHECK-NEXT: sd s7, 40(sp) # 8-byte Folded Spill 723; CHECK-NEXT: sd s8, 32(sp) # 8-byte Folded Spill 724; CHECK-NEXT: sd s9, 24(sp) # 8-byte Folded Spill 725; CHECK-NEXT: sd s10, 16(sp) # 8-byte Folded Spill 726; CHECK-NEXT: sd s11, 8(sp) # 8-byte Folded Spill 727; CHECK-NEXT: .cfi_offset ra, -8 728; CHECK-NEXT: .cfi_offset s0, -16 729; CHECK-NEXT: .cfi_offset s1, -24 730; CHECK-NEXT: .cfi_offset s2, -32 731; CHECK-NEXT: .cfi_offset s3, -40 732; CHECK-NEXT: .cfi_offset s4, -48 733; CHECK-NEXT: .cfi_offset s5, -56 734; CHECK-NEXT: .cfi_offset s6, -64 735; CHECK-NEXT: .cfi_offset s7, -72 736; CHECK-NEXT: .cfi_offset s8, -80 737; CHECK-NEXT: .cfi_offset s9, -88 738; CHECK-NEXT: .cfi_offset s10, -96 739; CHECK-NEXT: .cfi_offset s11, -104 740; CHECK-NEXT: .cfi_remember_state 741; CHECK-NEXT: #APP 742; CHECK-NEXT: li ra, 1 743; CHECK-NEXT: #NO_APP 744; CHECK-NEXT: #APP 745; CHECK-NEXT: li t0, 5 746; CHECK-NEXT: #NO_APP 747; CHECK-NEXT: #APP 748; CHECK-NEXT: li t1, 6 749; CHECK-NEXT: #NO_APP 750; CHECK-NEXT: #APP 751; CHECK-NEXT: li t2, 7 752; CHECK-NEXT: #NO_APP 753; CHECK-NEXT: #APP 754; CHECK-NEXT: li s0, 8 755; CHECK-NEXT: #NO_APP 756; CHECK-NEXT: #APP 757; CHECK-NEXT: li s1, 9 758; CHECK-NEXT: #NO_APP 759; CHECK-NEXT: #APP 760; CHECK-NEXT: li a0, 10 761; CHECK-NEXT: #NO_APP 762; CHECK-NEXT: #APP 763; CHECK-NEXT: li a1, 11 764; CHECK-NEXT: #NO_APP 765; CHECK-NEXT: #APP 766; CHECK-NEXT: li a2, 12 767; CHECK-NEXT: #NO_APP 768; CHECK-NEXT: #APP 769; CHECK-NEXT: li a3, 13 770; CHECK-NEXT: #NO_APP 771; CHECK-NEXT: #APP 772; CHECK-NEXT: li a4, 14 773; CHECK-NEXT: #NO_APP 774; CHECK-NEXT: #APP 775; CHECK-NEXT: li a5, 15 776; CHECK-NEXT: #NO_APP 777; CHECK-NEXT: #APP 778; CHECK-NEXT: li a6, 16 779; CHECK-NEXT: #NO_APP 780; CHECK-NEXT: #APP 781; CHECK-NEXT: li a7, 17 782; CHECK-NEXT: #NO_APP 783; CHECK-NEXT: #APP 784; CHECK-NEXT: li s2, 18 785; CHECK-NEXT: #NO_APP 786; CHECK-NEXT: #APP 787; CHECK-NEXT: li s3, 19 788; CHECK-NEXT: #NO_APP 789; CHECK-NEXT: #APP 790; CHECK-NEXT: li s4, 20 791; CHECK-NEXT: #NO_APP 792; CHECK-NEXT: #APP 793; CHECK-NEXT: li s5, 21 794; CHECK-NEXT: #NO_APP 795; CHECK-NEXT: #APP 796; CHECK-NEXT: li s6, 22 797; CHECK-NEXT: #NO_APP 798; CHECK-NEXT: #APP 799; CHECK-NEXT: li s7, 23 800; CHECK-NEXT: #NO_APP 801; CHECK-NEXT: #APP 802; CHECK-NEXT: li s8, 24 803; CHECK-NEXT: #NO_APP 804; CHECK-NEXT: #APP 805; CHECK-NEXT: li s9, 25 806; CHECK-NEXT: #NO_APP 807; CHECK-NEXT: #APP 808; CHECK-NEXT: li s10, 26 809; CHECK-NEXT: #NO_APP 810; CHECK-NEXT: #APP 811; CHECK-NEXT: li s11, 27 812; CHECK-NEXT: #NO_APP 813; CHECK-NEXT: #APP 814; CHECK-NEXT: li t3, 28 815; CHECK-NEXT: #NO_APP 816; CHECK-NEXT: #APP 817; CHECK-NEXT: li t4, 29 818; CHECK-NEXT: #NO_APP 819; CHECK-NEXT: #APP 820; CHECK-NEXT: li t5, 30 821; CHECK-NEXT: #NO_APP 822; CHECK-NEXT: #APP 823; CHECK-NEXT: li t6, 31 824; CHECK-NEXT: #NO_APP 825; CHECK-NEXT: bne t5, t6, .LBB4_2 826; CHECK-NEXT: j .LBB4_1 827; CHECK-NEXT: .LBB4_8: # %dest_1 828; CHECK-NEXT: ld s11, 0(sp) 829; CHECK-NEXT: .LBB4_1: # %dest_1 830; CHECK-NEXT: #APP 831; CHECK-NEXT: # dest 1 832; CHECK-NEXT: #NO_APP 833; CHECK-NEXT: j .LBB4_3 834; CHECK-NEXT: .LBB4_2: # %cond_2 835; CHECK-NEXT: bne t3, t4, .LBB4_5 836; CHECK-NEXT: .LBB4_3: # %dest_2 837; CHECK-NEXT: #APP 838; CHECK-NEXT: # dest 2 839; CHECK-NEXT: #NO_APP 840; CHECK-NEXT: .LBB4_4: # %dest_3 841; CHECK-NEXT: #APP 842; CHECK-NEXT: # dest 3 843; CHECK-NEXT: #NO_APP 844; CHECK-NEXT: #APP 845; CHECK-NEXT: # reg use ra 846; CHECK-NEXT: #NO_APP 847; CHECK-NEXT: #APP 848; CHECK-NEXT: # reg use t0 849; CHECK-NEXT: #NO_APP 850; CHECK-NEXT: #APP 851; CHECK-NEXT: # reg use t1 852; CHECK-NEXT: #NO_APP 853; CHECK-NEXT: #APP 854; CHECK-NEXT: # reg use t2 855; CHECK-NEXT: #NO_APP 856; CHECK-NEXT: #APP 857; CHECK-NEXT: # reg use s0 858; CHECK-NEXT: #NO_APP 859; CHECK-NEXT: #APP 860; CHECK-NEXT: # reg use s1 861; CHECK-NEXT: #NO_APP 862; CHECK-NEXT: #APP 863; CHECK-NEXT: # reg use a0 864; CHECK-NEXT: #NO_APP 865; CHECK-NEXT: #APP 866; CHECK-NEXT: # reg use a1 867; CHECK-NEXT: #NO_APP 868; CHECK-NEXT: #APP 869; CHECK-NEXT: # reg use a2 870; CHECK-NEXT: #NO_APP 871; CHECK-NEXT: #APP 872; CHECK-NEXT: # reg use a3 873; CHECK-NEXT: #NO_APP 874; CHECK-NEXT: #APP 875; CHECK-NEXT: # reg use a4 876; CHECK-NEXT: #NO_APP 877; CHECK-NEXT: #APP 878; CHECK-NEXT: # reg use a5 879; CHECK-NEXT: #NO_APP 880; CHECK-NEXT: #APP 881; CHECK-NEXT: # reg use a6 882; CHECK-NEXT: #NO_APP 883; CHECK-NEXT: #APP 884; CHECK-NEXT: # reg use a7 885; CHECK-NEXT: #NO_APP 886; CHECK-NEXT: #APP 887; CHECK-NEXT: # reg use s2 888; CHECK-NEXT: #NO_APP 889; CHECK-NEXT: #APP 890; CHECK-NEXT: # reg use s3 891; CHECK-NEXT: #NO_APP 892; CHECK-NEXT: #APP 893; CHECK-NEXT: # reg use s4 894; CHECK-NEXT: #NO_APP 895; CHECK-NEXT: #APP 896; CHECK-NEXT: # reg use s5 897; CHECK-NEXT: #NO_APP 898; CHECK-NEXT: #APP 899; CHECK-NEXT: # reg use s6 900; CHECK-NEXT: #NO_APP 901; CHECK-NEXT: #APP 902; CHECK-NEXT: # reg use s7 903; CHECK-NEXT: #NO_APP 904; CHECK-NEXT: #APP 905; CHECK-NEXT: # reg use s8 906; CHECK-NEXT: #NO_APP 907; CHECK-NEXT: #APP 908; CHECK-NEXT: # reg use s9 909; CHECK-NEXT: #NO_APP 910; CHECK-NEXT: #APP 911; CHECK-NEXT: # reg use s10 912; CHECK-NEXT: #NO_APP 913; CHECK-NEXT: #APP 914; CHECK-NEXT: # reg use s11 915; CHECK-NEXT: #NO_APP 916; CHECK-NEXT: #APP 917; CHECK-NEXT: # reg use t3 918; CHECK-NEXT: #NO_APP 919; CHECK-NEXT: #APP 920; CHECK-NEXT: # reg use t4 921; CHECK-NEXT: #NO_APP 922; CHECK-NEXT: #APP 923; CHECK-NEXT: # reg use t5 924; CHECK-NEXT: #NO_APP 925; CHECK-NEXT: #APP 926; CHECK-NEXT: # reg use t6 927; CHECK-NEXT: #NO_APP 928; CHECK-NEXT: ld ra, 104(sp) # 8-byte Folded Reload 929; CHECK-NEXT: ld s0, 96(sp) # 8-byte Folded Reload 930; CHECK-NEXT: ld s1, 88(sp) # 8-byte Folded Reload 931; CHECK-NEXT: ld s2, 80(sp) # 8-byte Folded Reload 932; CHECK-NEXT: ld s3, 72(sp) # 8-byte Folded Reload 933; CHECK-NEXT: ld s4, 64(sp) # 8-byte Folded Reload 934; CHECK-NEXT: ld s5, 56(sp) # 8-byte Folded Reload 935; CHECK-NEXT: ld s6, 48(sp) # 8-byte Folded Reload 936; CHECK-NEXT: ld s7, 40(sp) # 8-byte Folded Reload 937; CHECK-NEXT: ld s8, 32(sp) # 8-byte Folded Reload 938; CHECK-NEXT: ld s9, 24(sp) # 8-byte Folded Reload 939; CHECK-NEXT: ld s10, 16(sp) # 8-byte Folded Reload 940; CHECK-NEXT: ld s11, 8(sp) # 8-byte Folded Reload 941; CHECK-NEXT: .cfi_restore ra 942; CHECK-NEXT: .cfi_restore s0 943; CHECK-NEXT: .cfi_restore s1 944; CHECK-NEXT: .cfi_restore s2 945; CHECK-NEXT: .cfi_restore s3 946; CHECK-NEXT: .cfi_restore s4 947; CHECK-NEXT: .cfi_restore s5 948; CHECK-NEXT: .cfi_restore s6 949; CHECK-NEXT: .cfi_restore s7 950; CHECK-NEXT: .cfi_restore s8 951; CHECK-NEXT: .cfi_restore s9 952; CHECK-NEXT: .cfi_restore s10 953; CHECK-NEXT: .cfi_restore s11 954; CHECK-NEXT: addi sp, sp, 112 955; CHECK-NEXT: .cfi_def_cfa_offset 0 956; CHECK-NEXT: ret 957; CHECK-NEXT: .LBB4_5: # %cond_3 958; CHECK-NEXT: .cfi_restore_state 959; CHECK-NEXT: beq t1, t2, .LBB4_4 960; CHECK-NEXT: # %bb.6: # %space 961; CHECK-NEXT: #APP 962; CHECK-NEXT: .zero 1048576 963; CHECK-NEXT: #NO_APP 964; CHECK-NEXT: # %bb.7: # %space 965; CHECK-NEXT: sd s11, 0(sp) 966; CHECK-NEXT: jump .LBB4_8, s11 967entry: 968 %ra = call i64 asm sideeffect "addi ra, x0, 1", "={ra}"() 969 %t0 = call i64 asm sideeffect "addi t0, x0, 5", "={t0}"() 970 %t1 = call i64 asm sideeffect "addi t1, x0, 6", "={t1}"() 971 %t2 = call i64 asm sideeffect "addi t2, x0, 7", "={t2}"() 972 %s0 = call i64 asm sideeffect "addi s0, x0, 8", "={s0}"() 973 %s1 = call i64 asm sideeffect "addi s1, x0, 9", "={s1}"() 974 %a0 = call i64 asm sideeffect "addi a0, x0, 10", "={a0}"() 975 %a1 = call i64 asm sideeffect "addi a1, x0, 11", "={a1}"() 976 %a2 = call i64 asm sideeffect "addi a2, x0, 12", "={a2}"() 977 %a3 = call i64 asm sideeffect "addi a3, x0, 13", "={a3}"() 978 %a4 = call i64 asm sideeffect "addi a4, x0, 14", "={a4}"() 979 %a5 = call i64 asm sideeffect "addi a5, x0, 15", "={a5}"() 980 %a6 = call i64 asm sideeffect "addi a6, x0, 16", "={a6}"() 981 %a7 = call i64 asm sideeffect "addi a7, x0, 17", "={a7}"() 982 %s2 = call i64 asm sideeffect "addi s2, x0, 18", "={s2}"() 983 %s3 = call i64 asm sideeffect "addi s3, x0, 19", "={s3}"() 984 %s4 = call i64 asm sideeffect "addi s4, x0, 20", "={s4}"() 985 %s5 = call i64 asm sideeffect "addi s5, x0, 21", "={s5}"() 986 %s6 = call i64 asm sideeffect "addi s6, x0, 22", "={s6}"() 987 %s7 = call i64 asm sideeffect "addi s7, x0, 23", "={s7}"() 988 %s8 = call i64 asm sideeffect "addi s8, x0, 24", "={s8}"() 989 %s9 = call i64 asm sideeffect "addi s9, x0, 25", "={s9}"() 990 %s10 = call i64 asm sideeffect "addi s10, x0, 26", "={s10}"() 991 %s11 = call i64 asm sideeffect "addi s11, x0, 27", "={s11}"() 992 %t3 = call i64 asm sideeffect "addi t3, x0, 28", "={t3}"() 993 %t4 = call i64 asm sideeffect "addi t4, x0, 29", "={t4}"() 994 %t5 = call i64 asm sideeffect "addi t5, x0, 30", "={t5}"() 995 %t6 = call i64 asm sideeffect "addi t6, x0, 31", "={t6}"() 996 997 br label %cond_1 998 999cond_1: 1000 %cmp1 = icmp eq i64 %t5, %t6 1001 br i1 %cmp1, label %dest_1, label %cond_2 1002 1003cond_2: 1004 %cmp2 = icmp eq i64 %t3, %t4 1005 br i1 %cmp2, label %dest_2, label %cond_3 1006 1007cond_3: 1008 %cmp3 = icmp eq i64 %t1, %t2 1009 br i1 %cmp3, label %dest_3, label %space 1010 1011space: 1012 call void asm sideeffect ".space 1048576", ""() 1013 br label %dest_1 1014 1015dest_1: 1016 call void asm sideeffect "# dest 1", ""() 1017 br label %dest_2 1018 1019dest_2: 1020 call void asm sideeffect "# dest 2", ""() 1021 br label %dest_3 1022 1023dest_3: 1024 call void asm sideeffect "# dest 3", ""() 1025 br label %tail 1026 1027tail: 1028 call void asm sideeffect "# reg use $0", "{ra}"(i64 %ra) 1029 call void asm sideeffect "# reg use $0", "{t0}"(i64 %t0) 1030 call void asm sideeffect "# reg use $0", "{t1}"(i64 %t1) 1031 call void asm sideeffect "# reg use $0", "{t2}"(i64 %t2) 1032 call void asm sideeffect "# reg use $0", "{s0}"(i64 %s0) 1033 call void asm sideeffect "# reg use $0", "{s1}"(i64 %s1) 1034 call void asm sideeffect "# reg use $0", "{a0}"(i64 %a0) 1035 call void asm sideeffect "# reg use $0", "{a1}"(i64 %a1) 1036 call void asm sideeffect "# reg use $0", "{a2}"(i64 %a2) 1037 call void asm sideeffect "# reg use $0", "{a3}"(i64 %a3) 1038 call void asm sideeffect "# reg use $0", "{a4}"(i64 %a4) 1039 call void asm sideeffect "# reg use $0", "{a5}"(i64 %a5) 1040 call void asm sideeffect "# reg use $0", "{a6}"(i64 %a6) 1041 call void asm sideeffect "# reg use $0", "{a7}"(i64 %a7) 1042 call void asm sideeffect "# reg use $0", "{s2}"(i64 %s2) 1043 call void asm sideeffect "# reg use $0", "{s3}"(i64 %s3) 1044 call void asm sideeffect "# reg use $0", "{s4}"(i64 %s4) 1045 call void asm sideeffect "# reg use $0", "{s5}"(i64 %s5) 1046 call void asm sideeffect "# reg use $0", "{s6}"(i64 %s6) 1047 call void asm sideeffect "# reg use $0", "{s7}"(i64 %s7) 1048 call void asm sideeffect "# reg use $0", "{s8}"(i64 %s8) 1049 call void asm sideeffect "# reg use $0", "{s9}"(i64 %s9) 1050 call void asm sideeffect "# reg use $0", "{s10}"(i64 %s10) 1051 call void asm sideeffect "# reg use $0", "{s11}"(i64 %s11) 1052 call void asm sideeffect "# reg use $0", "{t3}"(i64 %t3) 1053 call void asm sideeffect "# reg use $0", "{t4}"(i64 %t4) 1054 call void asm sideeffect "# reg use $0", "{t5}"(i64 %t5) 1055 call void asm sideeffect "# reg use $0", "{t6}"(i64 %t6) 1056 1057 ret void 1058} 1059