552 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+e -verify-machineinstrs -filetype=obj < %s \3; RUN: -o /dev/null 2>&14; RUN: llc -mtriple=riscv32 -mattr=+e -relocation-model=pic -verify-machineinstrs \5; RUN: -filetype=obj < %s -o /dev/null 2>&16; RUN: llc -mtriple=riscv32 -mattr=+e -verify-machineinstrs < %s \7; RUN: | FileCheck %s8; RUN: llc -mtriple=riscv32 -mattr=+e -relocation-model=pic -verify-machineinstrs < %s \9; RUN: | FileCheck %s10 11define void @relax_bcc(i1 %a) nounwind {12; CHECK-LABEL: relax_bcc:13; CHECK: # %bb.0:14; CHECK-NEXT: andi a0, a0, 115; CHECK-NEXT: bnez a0, .LBB0_116; CHECK-NEXT: j .LBB0_217; CHECK-NEXT: .LBB0_1: # %iftrue18; CHECK-NEXT: #APP19; CHECK-NEXT: .zero 409620; CHECK-NEXT: #NO_APP21; CHECK-NEXT: .LBB0_2: # %tail22; CHECK-NEXT: ret23 br i1 %a, label %iftrue, label %tail24 25iftrue:26 call void asm sideeffect ".space 4096", ""()27 br label %tail28 29tail:30 ret void31}32 33define i32 @relax_jal(i1 %a) nounwind {34; CHECK-LABEL: relax_jal:35; CHECK: # %bb.0:36; CHECK-NEXT: addi sp, sp, -437; CHECK-NEXT: andi a0, a0, 138; CHECK-NEXT: bnez a0, .LBB1_139; CHECK-NEXT: # %bb.4:40; CHECK-NEXT: jump .LBB1_2, a041; CHECK-NEXT: .LBB1_1: # %iftrue42; CHECK-NEXT: #APP43; CHECK-NEXT: #NO_APP44; CHECK-NEXT: #APP45; CHECK-NEXT: .zero 104857646; CHECK-NEXT: #NO_APP47; CHECK-NEXT: j .LBB1_348; CHECK-NEXT: .LBB1_2: # %jmp49; CHECK-NEXT: #APP50; CHECK-NEXT: #NO_APP51; CHECK-NEXT: .LBB1_3: # %tail52; CHECK-NEXT: li a0, 153; CHECK-NEXT: addi sp, sp, 454; CHECK-NEXT: ret55 br i1 %a, label %iftrue, label %jmp56 57jmp:58 call void asm sideeffect "", ""()59 br label %tail60 61iftrue:62 call void asm sideeffect "", ""()63 br label %space64 65space:66 call void asm sideeffect ".space 1048576", ""()67 br label %tail68 69tail:70 ret i32 171}72 73define void @relax_jal_spill_32() {74; CHECK-LABEL: relax_jal_spill_32:75; CHECK: # %bb.0:76; CHECK-NEXT: addi sp, sp, -1677; CHECK-NEXT: .cfi_def_cfa_offset 1678; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill79; CHECK-NEXT: sw s0, 8(sp) # 4-byte Folded Spill80; CHECK-NEXT: sw s1, 4(sp) # 4-byte Folded Spill81; CHECK-NEXT: .cfi_offset ra, -482; CHECK-NEXT: .cfi_offset s0, -883; CHECK-NEXT: .cfi_offset s1, -1284; CHECK-NEXT: #APP85; CHECK-NEXT: li ra, 186; CHECK-NEXT: #NO_APP87; CHECK-NEXT: #APP88; CHECK-NEXT: li t0, 589; CHECK-NEXT: #NO_APP90; CHECK-NEXT: #APP91; CHECK-NEXT: li t1, 692; CHECK-NEXT: #NO_APP93; CHECK-NEXT: #APP94; CHECK-NEXT: li t2, 795; CHECK-NEXT: #NO_APP96; CHECK-NEXT: #APP97; CHECK-NEXT: li s0, 898; CHECK-NEXT: #NO_APP99; CHECK-NEXT: #APP100; CHECK-NEXT: li s1, 9101; CHECK-NEXT: #NO_APP102; CHECK-NEXT: #APP103; CHECK-NEXT: li a0, 10104; CHECK-NEXT: #NO_APP105; CHECK-NEXT: #APP106; CHECK-NEXT: li a1, 11107; CHECK-NEXT: #NO_APP108; CHECK-NEXT: #APP109; CHECK-NEXT: li a2, 12110; CHECK-NEXT: #NO_APP111; CHECK-NEXT: #APP112; CHECK-NEXT: li a3, 13113; CHECK-NEXT: #NO_APP114; CHECK-NEXT: #APP115; CHECK-NEXT: li a4, 14116; CHECK-NEXT: #NO_APP117; CHECK-NEXT: #APP118; CHECK-NEXT: li a5, 15119; CHECK-NEXT: #NO_APP120; CHECK-NEXT: beq a4, a5, .LBB2_1121; CHECK-NEXT: # %bb.3:122; CHECK-NEXT: sw s1, 0(sp) # 4-byte Folded Spill123; CHECK-NEXT: jump .LBB2_4, s1124; CHECK-NEXT: .LBB2_1: # %branch_1125; CHECK-NEXT: #APP126; CHECK-NEXT: .zero 1048576127; CHECK-NEXT: #NO_APP128; CHECK-NEXT: j .LBB2_2129; CHECK-NEXT: .LBB2_4: # %branch_2130; CHECK-NEXT: lw s1, 0(sp) # 4-byte Folded Reload131; CHECK-NEXT: .LBB2_2: # %branch_2132; CHECK-NEXT: #APP133; CHECK-NEXT: # reg use ra134; CHECK-NEXT: #NO_APP135; CHECK-NEXT: #APP136; CHECK-NEXT: # reg use t0137; CHECK-NEXT: #NO_APP138; CHECK-NEXT: #APP139; CHECK-NEXT: # reg use t1140; CHECK-NEXT: #NO_APP141; CHECK-NEXT: #APP142; CHECK-NEXT: # reg use t2143; CHECK-NEXT: #NO_APP144; CHECK-NEXT: #APP145; CHECK-NEXT: # reg use s0146; CHECK-NEXT: #NO_APP147; CHECK-NEXT: #APP148; CHECK-NEXT: # reg use s1149; CHECK-NEXT: #NO_APP150; CHECK-NEXT: #APP151; CHECK-NEXT: # reg use a0152; CHECK-NEXT: #NO_APP153; CHECK-NEXT: #APP154; CHECK-NEXT: # reg use a1155; CHECK-NEXT: #NO_APP156; CHECK-NEXT: #APP157; CHECK-NEXT: # reg use a2158; CHECK-NEXT: #NO_APP159; CHECK-NEXT: #APP160; CHECK-NEXT: # reg use a3161; CHECK-NEXT: #NO_APP162; CHECK-NEXT: #APP163; CHECK-NEXT: # reg use a4164; CHECK-NEXT: #NO_APP165; CHECK-NEXT: #APP166; CHECK-NEXT: # reg use a5167; CHECK-NEXT: #NO_APP168; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload169; CHECK-NEXT: lw s0, 8(sp) # 4-byte Folded Reload170; CHECK-NEXT: lw s1, 4(sp) # 4-byte Folded Reload171; CHECK-NEXT: .cfi_restore ra172; CHECK-NEXT: .cfi_restore s0173; CHECK-NEXT: .cfi_restore s1174; CHECK-NEXT: addi sp, sp, 16175; CHECK-NEXT: .cfi_def_cfa_offset 0176; CHECK-NEXT: ret177 %ra = call i32 asm sideeffect "addi ra, x0, 1", "={ra}"()178 %t0 = call i32 asm sideeffect "addi t0, x0, 5", "={t0}"()179 %t1 = call i32 asm sideeffect "addi t1, x0, 6", "={t1}"()180 %t2 = call i32 asm sideeffect "addi t2, x0, 7", "={t2}"()181 %s0 = call i32 asm sideeffect "addi s0, x0, 8", "={s0}"()182 %s1 = call i32 asm sideeffect "addi s1, x0, 9", "={s1}"()183 %a0 = call i32 asm sideeffect "addi a0, x0, 10", "={a0}"()184 %a1 = call i32 asm sideeffect "addi a1, x0, 11", "={a1}"()185 %a2 = call i32 asm sideeffect "addi a2, x0, 12", "={a2}"()186 %a3 = call i32 asm sideeffect "addi a3, x0, 13", "={a3}"()187 %a4 = call i32 asm sideeffect "addi a4, x0, 14", "={a4}"()188 %a5 = call i32 asm sideeffect "addi a5, x0, 15", "={a5}"()189 190 %cmp = icmp eq i32 %a4, %a5191 br i1 %cmp, label %branch_1, label %branch_2192 193branch_1:194 call void asm sideeffect ".space 1048576", ""()195 br label %branch_2196 197branch_2:198 call void asm sideeffect "# reg use $0", "{ra}"(i32 %ra)199 call void asm sideeffect "# reg use $0", "{t0}"(i32 %t0)200 call void asm sideeffect "# reg use $0", "{t1}"(i32 %t1)201 call void asm sideeffect "# reg use $0", "{t2}"(i32 %t2)202 call void asm sideeffect "# reg use $0", "{s0}"(i32 %s0)203 call void asm sideeffect "# reg use $0", "{s1}"(i32 %s1)204 call void asm sideeffect "# reg use $0", "{a0}"(i32 %a0)205 call void asm sideeffect "# reg use $0", "{a1}"(i32 %a1)206 call void asm sideeffect "# reg use $0", "{a2}"(i32 %a2)207 call void asm sideeffect "# reg use $0", "{a3}"(i32 %a3)208 call void asm sideeffect "# reg use $0", "{a4}"(i32 %a4)209 call void asm sideeffect "# reg use $0", "{a5}"(i32 %a5)210 211 ret void212}213 214define void @relax_jal_spill_32_adjust_spill_slot() {215 ; If the stack is large and the offset of BranchRelaxationScratchFrameIndex216 ; is out the range of 12-bit signed integer, check whether the spill slot is217 ; adjusted to close to the stack base register.218; CHECK-LABEL: relax_jal_spill_32_adjust_spill_slot:219; CHECK: # %bb.0:220; CHECK-NEXT: addi sp, sp, -2044221; CHECK-NEXT: .cfi_def_cfa_offset 2044222; CHECK-NEXT: sw ra, 2040(sp) # 4-byte Folded Spill223; CHECK-NEXT: sw s0, 2036(sp) # 4-byte Folded Spill224; CHECK-NEXT: sw s1, 2032(sp) # 4-byte Folded Spill225; CHECK-NEXT: .cfi_offset ra, -4226; CHECK-NEXT: .cfi_offset s0, -8227; CHECK-NEXT: .cfi_offset s1, -12228; CHECK-NEXT: addi s0, sp, 2044229; CHECK-NEXT: .cfi_def_cfa s0, 0230; CHECK-NEXT: lui a0, 2231; CHECK-NEXT: addi a0, a0, -2044232; CHECK-NEXT: sub sp, sp, a0233; CHECK-NEXT: srli a0, sp, 12234; CHECK-NEXT: slli sp, a0, 12235; CHECK-NEXT: #APP236; CHECK-NEXT: li ra, 1237; CHECK-NEXT: #NO_APP238; CHECK-NEXT: #APP239; CHECK-NEXT: li t0, 5240; CHECK-NEXT: #NO_APP241; CHECK-NEXT: #APP242; CHECK-NEXT: li t1, 6243; CHECK-NEXT: #NO_APP244; CHECK-NEXT: #APP245; CHECK-NEXT: li t2, 7246; CHECK-NEXT: #NO_APP247; CHECK-NEXT: #APP248; CHECK-NEXT: li s0, 8249; CHECK-NEXT: #NO_APP250; CHECK-NEXT: #APP251; CHECK-NEXT: li s1, 9252; CHECK-NEXT: #NO_APP253; CHECK-NEXT: #APP254; CHECK-NEXT: li a0, 10255; CHECK-NEXT: #NO_APP256; CHECK-NEXT: #APP257; CHECK-NEXT: li a1, 11258; CHECK-NEXT: #NO_APP259; CHECK-NEXT: #APP260; CHECK-NEXT: li a2, 12261; CHECK-NEXT: #NO_APP262; CHECK-NEXT: #APP263; CHECK-NEXT: li a3, 13264; CHECK-NEXT: #NO_APP265; CHECK-NEXT: #APP266; CHECK-NEXT: li a4, 14267; CHECK-NEXT: #NO_APP268; CHECK-NEXT: #APP269; CHECK-NEXT: li a5, 15270; CHECK-NEXT: #NO_APP271; CHECK-NEXT: beq a4, a5, .LBB3_1272; CHECK-NEXT: # %bb.3:273; CHECK-NEXT: sw s1, 0(sp) # 4-byte Folded Spill274; CHECK-NEXT: jump .LBB3_4, s1275; CHECK-NEXT: .LBB3_1: # %branch_1276; CHECK-NEXT: #APP277; CHECK-NEXT: .zero 1048576278; CHECK-NEXT: #NO_APP279; CHECK-NEXT: j .LBB3_2280; CHECK-NEXT: .LBB3_4: # %branch_2281; CHECK-NEXT: lw s1, 0(sp) # 4-byte Folded Reload282; CHECK-NEXT: .LBB3_2: # %branch_2283; CHECK-NEXT: #APP284; CHECK-NEXT: # reg use ra285; CHECK-NEXT: #NO_APP286; CHECK-NEXT: #APP287; CHECK-NEXT: # reg use t0288; CHECK-NEXT: #NO_APP289; CHECK-NEXT: #APP290; CHECK-NEXT: # reg use t1291; CHECK-NEXT: #NO_APP292; CHECK-NEXT: #APP293; CHECK-NEXT: # reg use t2294; CHECK-NEXT: #NO_APP295; CHECK-NEXT: #APP296; CHECK-NEXT: # reg use s0297; CHECK-NEXT: #NO_APP298; CHECK-NEXT: #APP299; CHECK-NEXT: # reg use s1300; CHECK-NEXT: #NO_APP301; CHECK-NEXT: #APP302; CHECK-NEXT: # reg use a0303; CHECK-NEXT: #NO_APP304; CHECK-NEXT: #APP305; CHECK-NEXT: # reg use a1306; CHECK-NEXT: #NO_APP307; CHECK-NEXT: #APP308; CHECK-NEXT: # reg use a2309; CHECK-NEXT: #NO_APP310; CHECK-NEXT: #APP311; CHECK-NEXT: # reg use a3312; CHECK-NEXT: #NO_APP313; CHECK-NEXT: #APP314; CHECK-NEXT: # reg use a4315; CHECK-NEXT: #NO_APP316; CHECK-NEXT: #APP317; CHECK-NEXT: # reg use a5318; CHECK-NEXT: #NO_APP319; CHECK-NEXT: addi sp, s0, -2044320; CHECK-NEXT: .cfi_def_cfa sp, 2044321; CHECK-NEXT: lw ra, 2040(sp) # 4-byte Folded Reload322; CHECK-NEXT: lw s0, 2036(sp) # 4-byte Folded Reload323; CHECK-NEXT: lw s1, 2032(sp) # 4-byte Folded Reload324; CHECK-NEXT: .cfi_restore ra325; CHECK-NEXT: .cfi_restore s0326; CHECK-NEXT: .cfi_restore s1327; CHECK-NEXT: addi sp, sp, 2044328; CHECK-NEXT: .cfi_def_cfa_offset 0329; CHECK-NEXT: ret330 %stack_obj = alloca i32, align 4096331 332 %ra = call i32 asm sideeffect "addi ra, x0, 1", "={ra}"()333 %t0 = call i32 asm sideeffect "addi t0, x0, 5", "={t0}"()334 %t1 = call i32 asm sideeffect "addi t1, x0, 6", "={t1}"()335 %t2 = call i32 asm sideeffect "addi t2, x0, 7", "={t2}"()336 %s0 = call i32 asm sideeffect "addi s0, x0, 8", "={s0}"()337 %s1 = call i32 asm sideeffect "addi s1, x0, 9", "={s1}"()338 %a0 = call i32 asm sideeffect "addi a0, x0, 10", "={a0}"()339 %a1 = call i32 asm sideeffect "addi a1, x0, 11", "={a1}"()340 %a2 = call i32 asm sideeffect "addi a2, x0, 12", "={a2}"()341 %a3 = call i32 asm sideeffect "addi a3, x0, 13", "={a3}"()342 %a4 = call i32 asm sideeffect "addi a4, x0, 14", "={a4}"()343 %a5 = call i32 asm sideeffect "addi a5, x0, 15", "={a5}"()344 345 %cmp = icmp eq i32 %a4, %a5346 br i1 %cmp, label %branch_1, label %branch_2347 348branch_1:349 call void asm sideeffect ".space 1048576", ""()350 br label %branch_2351 352branch_2:353 call void asm sideeffect "# reg use $0", "{ra}"(i32 %ra)354 call void asm sideeffect "# reg use $0", "{t0}"(i32 %t0)355 call void asm sideeffect "# reg use $0", "{t1}"(i32 %t1)356 call void asm sideeffect "# reg use $0", "{t2}"(i32 %t2)357 call void asm sideeffect "# reg use $0", "{s0}"(i32 %s0)358 call void asm sideeffect "# reg use $0", "{s1}"(i32 %s1)359 call void asm sideeffect "# reg use $0", "{a0}"(i32 %a0)360 call void asm sideeffect "# reg use $0", "{a1}"(i32 %a1)361 call void asm sideeffect "# reg use $0", "{a2}"(i32 %a2)362 call void asm sideeffect "# reg use $0", "{a3}"(i32 %a3)363 call void asm sideeffect "# reg use $0", "{a4}"(i32 %a4)364 call void asm sideeffect "# reg use $0", "{a5}"(i32 %a5)365 366 ret void367}368 369define void @relax_jal_spill_32_restore_block_correspondence() {370; CHECK-LABEL: relax_jal_spill_32_restore_block_correspondence:371; CHECK: # %bb.0: # %entry372; CHECK-NEXT: addi sp, sp, -16373; CHECK-NEXT: .cfi_def_cfa_offset 16374; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill375; CHECK-NEXT: sw s0, 8(sp) # 4-byte Folded Spill376; CHECK-NEXT: sw s1, 4(sp) # 4-byte Folded Spill377; CHECK-NEXT: .cfi_offset ra, -4378; CHECK-NEXT: .cfi_offset s0, -8379; CHECK-NEXT: .cfi_offset s1, -12380; CHECK-NEXT: .cfi_remember_state381; CHECK-NEXT: #APP382; CHECK-NEXT: li ra, 1383; CHECK-NEXT: #NO_APP384; CHECK-NEXT: #APP385; CHECK-NEXT: li t0, 5386; CHECK-NEXT: #NO_APP387; CHECK-NEXT: #APP388; CHECK-NEXT: li t1, 6389; CHECK-NEXT: #NO_APP390; CHECK-NEXT: #APP391; CHECK-NEXT: li t2, 7392; CHECK-NEXT: #NO_APP393; CHECK-NEXT: #APP394; CHECK-NEXT: li s0, 8395; CHECK-NEXT: #NO_APP396; CHECK-NEXT: #APP397; CHECK-NEXT: li s1, 9398; CHECK-NEXT: #NO_APP399; CHECK-NEXT: #APP400; CHECK-NEXT: li a0, 10401; CHECK-NEXT: #NO_APP402; CHECK-NEXT: #APP403; CHECK-NEXT: li a1, 11404; CHECK-NEXT: #NO_APP405; CHECK-NEXT: #APP406; CHECK-NEXT: li a2, 12407; CHECK-NEXT: #NO_APP408; CHECK-NEXT: #APP409; CHECK-NEXT: li a3, 13410; CHECK-NEXT: #NO_APP411; CHECK-NEXT: #APP412; CHECK-NEXT: li a4, 14413; CHECK-NEXT: #NO_APP414; CHECK-NEXT: #APP415; CHECK-NEXT: li a5, 15416; CHECK-NEXT: #NO_APP417; CHECK-NEXT: bne a4, a5, .LBB4_2418; CHECK-NEXT: j .LBB4_1419; CHECK-NEXT: .LBB4_8: # %dest_1420; CHECK-NEXT: lw s1, 0(sp) # 4-byte Folded Reload421; CHECK-NEXT: .LBB4_1: # %dest_1422; CHECK-NEXT: #APP423; CHECK-NEXT: # dest 1424; CHECK-NEXT: #NO_APP425; CHECK-NEXT: j .LBB4_3426; CHECK-NEXT: .LBB4_2: # %cond_2427; CHECK-NEXT: bne a2, a3, .LBB4_5428; CHECK-NEXT: .LBB4_3: # %dest_2429; CHECK-NEXT: #APP430; CHECK-NEXT: # dest 2431; CHECK-NEXT: #NO_APP432; CHECK-NEXT: .LBB4_4: # %dest_3433; CHECK-NEXT: #APP434; CHECK-NEXT: # dest 3435; CHECK-NEXT: #NO_APP436; CHECK-NEXT: #APP437; CHECK-NEXT: # reg use ra438; CHECK-NEXT: #NO_APP439; CHECK-NEXT: #APP440; CHECK-NEXT: # reg use t0441; CHECK-NEXT: #NO_APP442; CHECK-NEXT: #APP443; CHECK-NEXT: # reg use t1444; CHECK-NEXT: #NO_APP445; CHECK-NEXT: #APP446; CHECK-NEXT: # reg use t2447; CHECK-NEXT: #NO_APP448; CHECK-NEXT: #APP449; CHECK-NEXT: # reg use s0450; CHECK-NEXT: #NO_APP451; CHECK-NEXT: #APP452; CHECK-NEXT: # reg use s1453; CHECK-NEXT: #NO_APP454; CHECK-NEXT: #APP455; CHECK-NEXT: # reg use a0456; CHECK-NEXT: #NO_APP457; CHECK-NEXT: #APP458; CHECK-NEXT: # reg use a1459; CHECK-NEXT: #NO_APP460; CHECK-NEXT: #APP461; CHECK-NEXT: # reg use a2462; CHECK-NEXT: #NO_APP463; CHECK-NEXT: #APP464; CHECK-NEXT: # reg use a3465; CHECK-NEXT: #NO_APP466; CHECK-NEXT: #APP467; CHECK-NEXT: # reg use a4468; CHECK-NEXT: #NO_APP469; CHECK-NEXT: #APP470; CHECK-NEXT: # reg use a5471; CHECK-NEXT: #NO_APP472; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload473; CHECK-NEXT: lw s0, 8(sp) # 4-byte Folded Reload474; CHECK-NEXT: lw s1, 4(sp) # 4-byte Folded Reload475; CHECK-NEXT: .cfi_restore ra476; CHECK-NEXT: .cfi_restore s0477; CHECK-NEXT: .cfi_restore s1478; CHECK-NEXT: addi sp, sp, 16479; CHECK-NEXT: .cfi_def_cfa_offset 0480; CHECK-NEXT: ret481; CHECK-NEXT: .LBB4_5: # %cond_3482; CHECK-NEXT: .cfi_restore_state483; CHECK-NEXT: beq t1, t2, .LBB4_4484; CHECK-NEXT: # %bb.6: # %space485; CHECK-NEXT: #APP486; CHECK-NEXT: .zero 1048576487; CHECK-NEXT: #NO_APP488; CHECK-NEXT: # %bb.7: # %space489; CHECK-NEXT: sw s1, 0(sp) # 4-byte Folded Spill490; CHECK-NEXT: jump .LBB4_8, s1491entry:492 %ra = call i32 asm sideeffect "addi ra, x0, 1", "={ra}"()493 %t0 = call i32 asm sideeffect "addi t0, x0, 5", "={t0}"()494 %t1 = call i32 asm sideeffect "addi t1, x0, 6", "={t1}"()495 %t2 = call i32 asm sideeffect "addi t2, x0, 7", "={t2}"()496 %s0 = call i32 asm sideeffect "addi s0, x0, 8", "={s0}"()497 %s1 = call i32 asm sideeffect "addi s1, x0, 9", "={s1}"()498 %a0 = call i32 asm sideeffect "addi a0, x0, 10", "={a0}"()499 %a1 = call i32 asm sideeffect "addi a1, x0, 11", "={a1}"()500 %a2 = call i32 asm sideeffect "addi a2, x0, 12", "={a2}"()501 %a3 = call i32 asm sideeffect "addi a3, x0, 13", "={a3}"()502 %a4 = call i32 asm sideeffect "addi a4, x0, 14", "={a4}"()503 %a5 = call i32 asm sideeffect "addi a5, x0, 15", "={a5}"()504 505 br label %cond_1506 507cond_1:508 %cmp1 = icmp eq i32 %a4, %a5509 br i1 %cmp1, label %dest_1, label %cond_2510 511cond_2:512 %cmp2 = icmp eq i32 %a2, %a3513 br i1 %cmp2, label %dest_2, label %cond_3514 515cond_3:516 %cmp3 = icmp eq i32 %t1, %t2517 br i1 %cmp3, label %dest_3, label %space518 519space:520 call void asm sideeffect ".space 1048576", ""()521 br label %dest_1522 523dest_1:524 call void asm sideeffect "# dest 1", ""()525 br label %dest_2526 527dest_2:528 call void asm sideeffect "# dest 2", ""()529 br label %dest_3530 531dest_3:532 call void asm sideeffect "# dest 3", ""()533 br label %tail534 535tail:536 call void asm sideeffect "# reg use $0", "{ra}"(i32 %ra)537 call void asm sideeffect "# reg use $0", "{t0}"(i32 %t0)538 call void asm sideeffect "# reg use $0", "{t1}"(i32 %t1)539 call void asm sideeffect "# reg use $0", "{t2}"(i32 %t2)540 call void asm sideeffect "# reg use $0", "{s0}"(i32 %s0)541 call void asm sideeffect "# reg use $0", "{s1}"(i32 %s1)542 call void asm sideeffect "# reg use $0", "{a0}"(i32 %a0)543 call void asm sideeffect "# reg use $0", "{a1}"(i32 %a1)544 call void asm sideeffect "# reg use $0", "{a2}"(i32 %a2)545 call void asm sideeffect "# reg use $0", "{a3}"(i32 %a3)546 call void asm sideeffect "# reg use $0", "{a4}"(i32 %a4)547 call void asm sideeffect "# reg use $0", "{a5}"(i32 %a5)548 549 ret void550}551 552