; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -mtriple=riscv32 -mattr=+e -verify-machineinstrs -filetype=obj < %s \ ; RUN: -o /dev/null 2>&1 ; RUN: llc -mtriple=riscv32 -mattr=+e -relocation-model=pic -verify-machineinstrs \ ; RUN: -filetype=obj < %s -o /dev/null 2>&1 ; RUN: llc -mtriple=riscv32 -mattr=+e -verify-machineinstrs < %s \ ; RUN: | FileCheck %s ; RUN: llc -mtriple=riscv32 -mattr=+e -relocation-model=pic -verify-machineinstrs < %s \ ; RUN: | FileCheck %s define void @relax_bcc(i1 %a) nounwind { ; CHECK-LABEL: relax_bcc: ; CHECK: # %bb.0: ; CHECK-NEXT: andi a0, a0, 1 ; CHECK-NEXT: bnez a0, .LBB0_1 ; CHECK-NEXT: j .LBB0_2 ; CHECK-NEXT: .LBB0_1: # %iftrue ; CHECK-NEXT: #APP ; CHECK-NEXT: .zero 4096 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: .LBB0_2: # %tail ; CHECK-NEXT: ret br i1 %a, label %iftrue, label %tail iftrue: call void asm sideeffect ".space 4096", ""() br label %tail tail: ret void } define i32 @relax_jal(i1 %a) nounwind { ; CHECK-LABEL: relax_jal: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -4 ; CHECK-NEXT: andi a0, a0, 1 ; CHECK-NEXT: bnez a0, .LBB1_1 ; CHECK-NEXT: # %bb.4: ; CHECK-NEXT: jump .LBB1_2, a0 ; CHECK-NEXT: .LBB1_1: # %iftrue ; CHECK-NEXT: #APP ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: .zero 1048576 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: j .LBB1_3 ; CHECK-NEXT: .LBB1_2: # %jmp ; CHECK-NEXT: #APP ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: .LBB1_3: # %tail ; CHECK-NEXT: li a0, 1 ; CHECK-NEXT: addi sp, sp, 4 ; CHECK-NEXT: ret br i1 %a, label %iftrue, label %jmp jmp: call void asm sideeffect "", ""() br label %tail iftrue: call void asm sideeffect "", ""() br label %space space: call void asm sideeffect ".space 1048576", ""() br label %tail tail: ret i32 1 } define void @relax_jal_spill_32() { ; CHECK-LABEL: relax_jal_spill_32: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -16 ; CHECK-NEXT: .cfi_def_cfa_offset 16 ; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; CHECK-NEXT: .cfi_offset ra, -4 ; CHECK-NEXT: .cfi_offset s0, -8 ; CHECK-NEXT: .cfi_offset s1, -12 ; CHECK-NEXT: #APP ; CHECK-NEXT: li ra, 1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li t0, 5 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li t1, 6 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li t2, 7 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li s0, 8 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li s1, 9 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a0, 10 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a1, 11 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a2, 12 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a3, 13 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a4, 14 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a5, 15 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: beq a4, a5, .LBB2_1 ; CHECK-NEXT: # %bb.3: ; CHECK-NEXT: sw s1, 0(sp) # 4-byte Folded Spill ; CHECK-NEXT: jump .LBB2_4, s1 ; CHECK-NEXT: .LBB2_1: # %branch_1 ; CHECK-NEXT: #APP ; CHECK-NEXT: .zero 1048576 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: j .LBB2_2 ; CHECK-NEXT: .LBB2_4: # %branch_2 ; CHECK-NEXT: lw s1, 0(sp) # 4-byte Folded Reload ; CHECK-NEXT: .LBB2_2: # %branch_2 ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use ra ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use t0 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use t1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use t2 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use s0 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use s1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a0 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a2 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a3 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a4 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a5 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; CHECK-NEXT: .cfi_restore ra ; CHECK-NEXT: .cfi_restore s0 ; CHECK-NEXT: .cfi_restore s1 ; CHECK-NEXT: addi sp, sp, 16 ; CHECK-NEXT: .cfi_def_cfa_offset 0 ; CHECK-NEXT: ret %ra = call i32 asm sideeffect "addi ra, x0, 1", "={ra}"() %t0 = call i32 asm sideeffect "addi t0, x0, 5", "={t0}"() %t1 = call i32 asm sideeffect "addi t1, x0, 6", "={t1}"() %t2 = call i32 asm sideeffect "addi t2, x0, 7", "={t2}"() %s0 = call i32 asm sideeffect "addi s0, x0, 8", "={s0}"() %s1 = call i32 asm sideeffect "addi s1, x0, 9", "={s1}"() %a0 = call i32 asm sideeffect "addi a0, x0, 10", "={a0}"() %a1 = call i32 asm sideeffect "addi a1, x0, 11", "={a1}"() %a2 = call i32 asm sideeffect "addi a2, x0, 12", "={a2}"() %a3 = call i32 asm sideeffect "addi a3, x0, 13", "={a3}"() %a4 = call i32 asm sideeffect "addi a4, x0, 14", "={a4}"() %a5 = call i32 asm sideeffect "addi a5, x0, 15", "={a5}"() %cmp = icmp eq i32 %a4, %a5 br i1 %cmp, label %branch_1, label %branch_2 branch_1: call void asm sideeffect ".space 1048576", ""() br label %branch_2 branch_2: call void asm sideeffect "# reg use $0", "{ra}"(i32 %ra) call void asm sideeffect "# reg use $0", "{t0}"(i32 %t0) call void asm sideeffect "# reg use $0", "{t1}"(i32 %t1) call void asm sideeffect "# reg use $0", "{t2}"(i32 %t2) call void asm sideeffect "# reg use $0", "{s0}"(i32 %s0) call void asm sideeffect "# reg use $0", "{s1}"(i32 %s1) call void asm sideeffect "# reg use $0", "{a0}"(i32 %a0) call void asm sideeffect "# reg use $0", "{a1}"(i32 %a1) call void asm sideeffect "# reg use $0", "{a2}"(i32 %a2) call void asm sideeffect "# reg use $0", "{a3}"(i32 %a3) call void asm sideeffect "# reg use $0", "{a4}"(i32 %a4) call void asm sideeffect "# reg use $0", "{a5}"(i32 %a5) ret void } define void @relax_jal_spill_32_adjust_spill_slot() { ; If the stack is large and the offset of BranchRelaxationScratchFrameIndex ; is out the range of 12-bit signed integer, check whether the spill slot is ; adjusted to close to the stack base register. ; CHECK-LABEL: relax_jal_spill_32_adjust_spill_slot: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -2044 ; CHECK-NEXT: .cfi_def_cfa_offset 2044 ; CHECK-NEXT: sw ra, 2040(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s0, 2036(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s1, 2032(sp) # 4-byte Folded Spill ; CHECK-NEXT: .cfi_offset ra, -4 ; CHECK-NEXT: .cfi_offset s0, -8 ; CHECK-NEXT: .cfi_offset s1, -12 ; CHECK-NEXT: addi s0, sp, 2044 ; CHECK-NEXT: .cfi_def_cfa s0, 0 ; CHECK-NEXT: lui a0, 2 ; CHECK-NEXT: addi a0, a0, -2044 ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: srli a0, sp, 12 ; CHECK-NEXT: slli sp, a0, 12 ; CHECK-NEXT: #APP ; CHECK-NEXT: li ra, 1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li t0, 5 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li t1, 6 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li t2, 7 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li s0, 8 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li s1, 9 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a0, 10 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a1, 11 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a2, 12 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a3, 13 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a4, 14 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a5, 15 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: beq a4, a5, .LBB3_1 ; CHECK-NEXT: # %bb.3: ; CHECK-NEXT: sw s1, 0(sp) # 4-byte Folded Spill ; CHECK-NEXT: jump .LBB3_4, s1 ; CHECK-NEXT: .LBB3_1: # %branch_1 ; CHECK-NEXT: #APP ; CHECK-NEXT: .zero 1048576 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: j .LBB3_2 ; CHECK-NEXT: .LBB3_4: # %branch_2 ; CHECK-NEXT: lw s1, 0(sp) # 4-byte Folded Reload ; CHECK-NEXT: .LBB3_2: # %branch_2 ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use ra ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use t0 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use t1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use t2 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use s0 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use s1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a0 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a2 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a3 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a4 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a5 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: addi sp, s0, -2044 ; CHECK-NEXT: .cfi_def_cfa sp, 2044 ; CHECK-NEXT: lw ra, 2040(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw s0, 2036(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw s1, 2032(sp) # 4-byte Folded Reload ; CHECK-NEXT: .cfi_restore ra ; CHECK-NEXT: .cfi_restore s0 ; CHECK-NEXT: .cfi_restore s1 ; CHECK-NEXT: addi sp, sp, 2044 ; CHECK-NEXT: .cfi_def_cfa_offset 0 ; CHECK-NEXT: ret %stack_obj = alloca i32, align 4096 %ra = call i32 asm sideeffect "addi ra, x0, 1", "={ra}"() %t0 = call i32 asm sideeffect "addi t0, x0, 5", "={t0}"() %t1 = call i32 asm sideeffect "addi t1, x0, 6", "={t1}"() %t2 = call i32 asm sideeffect "addi t2, x0, 7", "={t2}"() %s0 = call i32 asm sideeffect "addi s0, x0, 8", "={s0}"() %s1 = call i32 asm sideeffect "addi s1, x0, 9", "={s1}"() %a0 = call i32 asm sideeffect "addi a0, x0, 10", "={a0}"() %a1 = call i32 asm sideeffect "addi a1, x0, 11", "={a1}"() %a2 = call i32 asm sideeffect "addi a2, x0, 12", "={a2}"() %a3 = call i32 asm sideeffect "addi a3, x0, 13", "={a3}"() %a4 = call i32 asm sideeffect "addi a4, x0, 14", "={a4}"() %a5 = call i32 asm sideeffect "addi a5, x0, 15", "={a5}"() %cmp = icmp eq i32 %a4, %a5 br i1 %cmp, label %branch_1, label %branch_2 branch_1: call void asm sideeffect ".space 1048576", ""() br label %branch_2 branch_2: call void asm sideeffect "# reg use $0", "{ra}"(i32 %ra) call void asm sideeffect "# reg use $0", "{t0}"(i32 %t0) call void asm sideeffect "# reg use $0", "{t1}"(i32 %t1) call void asm sideeffect "# reg use $0", "{t2}"(i32 %t2) call void asm sideeffect "# reg use $0", "{s0}"(i32 %s0) call void asm sideeffect "# reg use $0", "{s1}"(i32 %s1) call void asm sideeffect "# reg use $0", "{a0}"(i32 %a0) call void asm sideeffect "# reg use $0", "{a1}"(i32 %a1) call void asm sideeffect "# reg use $0", "{a2}"(i32 %a2) call void asm sideeffect "# reg use $0", "{a3}"(i32 %a3) call void asm sideeffect "# reg use $0", "{a4}"(i32 %a4) call void asm sideeffect "# reg use $0", "{a5}"(i32 %a5) ret void } define void @relax_jal_spill_32_restore_block_correspondence() { ; CHECK-LABEL: relax_jal_spill_32_restore_block_correspondence: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: addi sp, sp, -16 ; CHECK-NEXT: .cfi_def_cfa_offset 16 ; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; CHECK-NEXT: .cfi_offset ra, -4 ; CHECK-NEXT: .cfi_offset s0, -8 ; CHECK-NEXT: .cfi_offset s1, -12 ; CHECK-NEXT: .cfi_remember_state ; CHECK-NEXT: #APP ; CHECK-NEXT: li ra, 1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li t0, 5 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li t1, 6 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li t2, 7 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li s0, 8 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li s1, 9 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a0, 10 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a1, 11 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a2, 12 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a3, 13 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a4, 14 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: li a5, 15 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: bne a4, a5, .LBB4_2 ; CHECK-NEXT: j .LBB4_1 ; CHECK-NEXT: .LBB4_8: # %dest_1 ; CHECK-NEXT: lw s1, 0(sp) # 4-byte Folded Reload ; CHECK-NEXT: .LBB4_1: # %dest_1 ; CHECK-NEXT: #APP ; CHECK-NEXT: # dest 1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: j .LBB4_3 ; CHECK-NEXT: .LBB4_2: # %cond_2 ; CHECK-NEXT: bne a2, a3, .LBB4_5 ; CHECK-NEXT: .LBB4_3: # %dest_2 ; CHECK-NEXT: #APP ; CHECK-NEXT: # dest 2 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: .LBB4_4: # %dest_3 ; CHECK-NEXT: #APP ; CHECK-NEXT: # dest 3 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use ra ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use t0 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use t1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use t2 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use s0 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use s1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a0 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a1 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a2 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a3 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a4 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: #APP ; CHECK-NEXT: # reg use a5 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; CHECK-NEXT: .cfi_restore ra ; CHECK-NEXT: .cfi_restore s0 ; CHECK-NEXT: .cfi_restore s1 ; CHECK-NEXT: addi sp, sp, 16 ; CHECK-NEXT: .cfi_def_cfa_offset 0 ; CHECK-NEXT: ret ; CHECK-NEXT: .LBB4_5: # %cond_3 ; CHECK-NEXT: .cfi_restore_state ; CHECK-NEXT: beq t1, t2, .LBB4_4 ; CHECK-NEXT: # %bb.6: # %space ; CHECK-NEXT: #APP ; CHECK-NEXT: .zero 1048576 ; CHECK-NEXT: #NO_APP ; CHECK-NEXT: # %bb.7: # %space ; CHECK-NEXT: sw s1, 0(sp) # 4-byte Folded Spill ; CHECK-NEXT: jump .LBB4_8, s1 entry: %ra = call i32 asm sideeffect "addi ra, x0, 1", "={ra}"() %t0 = call i32 asm sideeffect "addi t0, x0, 5", "={t0}"() %t1 = call i32 asm sideeffect "addi t1, x0, 6", "={t1}"() %t2 = call i32 asm sideeffect "addi t2, x0, 7", "={t2}"() %s0 = call i32 asm sideeffect "addi s0, x0, 8", "={s0}"() %s1 = call i32 asm sideeffect "addi s1, x0, 9", "={s1}"() %a0 = call i32 asm sideeffect "addi a0, x0, 10", "={a0}"() %a1 = call i32 asm sideeffect "addi a1, x0, 11", "={a1}"() %a2 = call i32 asm sideeffect "addi a2, x0, 12", "={a2}"() %a3 = call i32 asm sideeffect "addi a3, x0, 13", "={a3}"() %a4 = call i32 asm sideeffect "addi a4, x0, 14", "={a4}"() %a5 = call i32 asm sideeffect "addi a5, x0, 15", "={a5}"() br label %cond_1 cond_1: %cmp1 = icmp eq i32 %a4, %a5 br i1 %cmp1, label %dest_1, label %cond_2 cond_2: %cmp2 = icmp eq i32 %a2, %a3 br i1 %cmp2, label %dest_2, label %cond_3 cond_3: %cmp3 = icmp eq i32 %t1, %t2 br i1 %cmp3, label %dest_3, label %space space: call void asm sideeffect ".space 1048576", ""() br label %dest_1 dest_1: call void asm sideeffect "# dest 1", ""() br label %dest_2 dest_2: call void asm sideeffect "# dest 2", ""() br label %dest_3 dest_3: call void asm sideeffect "# dest 3", ""() br label %tail tail: call void asm sideeffect "# reg use $0", "{ra}"(i32 %ra) call void asm sideeffect "# reg use $0", "{t0}"(i32 %t0) call void asm sideeffect "# reg use $0", "{t1}"(i32 %t1) call void asm sideeffect "# reg use $0", "{t2}"(i32 %t2) call void asm sideeffect "# reg use $0", "{s0}"(i32 %s0) call void asm sideeffect "# reg use $0", "{s1}"(i32 %s1) call void asm sideeffect "# reg use $0", "{a0}"(i32 %a0) call void asm sideeffect "# reg use $0", "{a1}"(i32 %a1) call void asm sideeffect "# reg use $0", "{a2}"(i32 %a2) call void asm sideeffect "# reg use $0", "{a3}"(i32 %a3) call void asm sideeffect "# reg use $0", "{a4}"(i32 %a4) call void asm sideeffect "# reg use $0", "{a5}"(i32 %a5) ret void }