brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.5 KiB · 4979c9f Raw
543 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 < %s \3; RUN:   | FileCheck -check-prefix=RV32 %s4; RUN: llc -mtriple=riscv64 < %s \5; RUN:   | FileCheck -check-prefix=RV64 %s6; RUN: llc -mtriple=riscv32 -frame-pointer=all -verify-machineinstrs < %s \7; RUN:   | FileCheck -check-prefix=RV32-WITHFP %s8; RUN: llc -mtriple=riscv64 -frame-pointer=all -verify-machineinstrs < %s \9; RUN:   | FileCheck -check-prefix=RV64-WITHFP %s10 11; RUN: llc -mtriple=riscv32 --enable-shrink-wrap=false < %s \12; RUN:   | FileCheck -check-prefix=RV32-DISABLESW %s13; RUN: llc -mtriple=riscv64 --enable-shrink-wrap=false < %s \14; RUN:   | FileCheck -check-prefix=RV64-DISABLESW %s15; RUN: llc -mtriple=riscv32 -frame-pointer=all --enable-shrink-wrap=false -verify-machineinstrs < %s \16; RUN:   | FileCheck -check-prefix=RV32-WITHFP-DISABLESW %s17; RUN: llc -mtriple=riscv64 -frame-pointer=all --enable-shrink-wrap=false -verify-machineinstrs < %s \18; RUN:   | FileCheck -check-prefix=RV64-WITHFP-DISABLESW %s19 20define void @trivial() {21; RV32-LABEL: trivial:22; RV32:       # %bb.0:23; RV32-NEXT:    ret24;25; RV64-LABEL: trivial:26; RV64:       # %bb.0:27; RV64-NEXT:    ret28;29; RV32-WITHFP-LABEL: trivial:30; RV32-WITHFP:       # %bb.0:31; RV32-WITHFP-NEXT:    addi sp, sp, -1632; RV32-WITHFP-NEXT:    .cfi_def_cfa_offset 1633; RV32-WITHFP-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill34; RV32-WITHFP-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill35; RV32-WITHFP-NEXT:    .cfi_offset ra, -436; RV32-WITHFP-NEXT:    .cfi_offset s0, -837; RV32-WITHFP-NEXT:    addi s0, sp, 1638; RV32-WITHFP-NEXT:    .cfi_def_cfa s0, 039; RV32-WITHFP-NEXT:    .cfi_def_cfa sp, 1640; RV32-WITHFP-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload41; RV32-WITHFP-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload42; RV32-WITHFP-NEXT:    .cfi_restore ra43; RV32-WITHFP-NEXT:    .cfi_restore s044; RV32-WITHFP-NEXT:    addi sp, sp, 1645; RV32-WITHFP-NEXT:    .cfi_def_cfa_offset 046; RV32-WITHFP-NEXT:    ret47;48; RV64-WITHFP-LABEL: trivial:49; RV64-WITHFP:       # %bb.0:50; RV64-WITHFP-NEXT:    addi sp, sp, -1651; RV64-WITHFP-NEXT:    .cfi_def_cfa_offset 1652; RV64-WITHFP-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill53; RV64-WITHFP-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill54; RV64-WITHFP-NEXT:    .cfi_offset ra, -855; RV64-WITHFP-NEXT:    .cfi_offset s0, -1656; RV64-WITHFP-NEXT:    addi s0, sp, 1657; RV64-WITHFP-NEXT:    .cfi_def_cfa s0, 058; RV64-WITHFP-NEXT:    .cfi_def_cfa sp, 1659; RV64-WITHFP-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload60; RV64-WITHFP-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload61; RV64-WITHFP-NEXT:    .cfi_restore ra62; RV64-WITHFP-NEXT:    .cfi_restore s063; RV64-WITHFP-NEXT:    addi sp, sp, 1664; RV64-WITHFP-NEXT:    .cfi_def_cfa_offset 065; RV64-WITHFP-NEXT:    ret66;67; RV32-DISABLESW-LABEL: trivial:68; RV32-DISABLESW:       # %bb.0:69; RV32-DISABLESW-NEXT:    ret70;71; RV64-DISABLESW-LABEL: trivial:72; RV64-DISABLESW:       # %bb.0:73; RV64-DISABLESW-NEXT:    ret74;75; RV32-WITHFP-DISABLESW-LABEL: trivial:76; RV32-WITHFP-DISABLESW:       # %bb.0:77; RV32-WITHFP-DISABLESW-NEXT:    addi sp, sp, -1678; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 1679; RV32-WITHFP-DISABLESW-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill80; RV32-WITHFP-DISABLESW-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill81; RV32-WITHFP-DISABLESW-NEXT:    .cfi_offset ra, -482; RV32-WITHFP-DISABLESW-NEXT:    .cfi_offset s0, -883; RV32-WITHFP-DISABLESW-NEXT:    addi s0, sp, 1684; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa s0, 085; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa sp, 1686; RV32-WITHFP-DISABLESW-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload87; RV32-WITHFP-DISABLESW-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload88; RV32-WITHFP-DISABLESW-NEXT:    .cfi_restore ra89; RV32-WITHFP-DISABLESW-NEXT:    .cfi_restore s090; RV32-WITHFP-DISABLESW-NEXT:    addi sp, sp, 1691; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 092; RV32-WITHFP-DISABLESW-NEXT:    ret93;94; RV64-WITHFP-DISABLESW-LABEL: trivial:95; RV64-WITHFP-DISABLESW:       # %bb.0:96; RV64-WITHFP-DISABLESW-NEXT:    addi sp, sp, -1697; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 1698; RV64-WITHFP-DISABLESW-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill99; RV64-WITHFP-DISABLESW-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill100; RV64-WITHFP-DISABLESW-NEXT:    .cfi_offset ra, -8101; RV64-WITHFP-DISABLESW-NEXT:    .cfi_offset s0, -16102; RV64-WITHFP-DISABLESW-NEXT:    addi s0, sp, 16103; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa s0, 0104; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa sp, 16105; RV64-WITHFP-DISABLESW-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload106; RV64-WITHFP-DISABLESW-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload107; RV64-WITHFP-DISABLESW-NEXT:    .cfi_restore ra108; RV64-WITHFP-DISABLESW-NEXT:    .cfi_restore s0109; RV64-WITHFP-DISABLESW-NEXT:    addi sp, sp, 16110; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 0111; RV64-WITHFP-DISABLESW-NEXT:    ret112  ret void113}114 115define void @stack_alloc(i32 signext %size) {116; RV32-LABEL: stack_alloc:117; RV32:       # %bb.0: # %entry118; RV32-NEXT:    addi sp, sp, -16119; RV32-NEXT:    .cfi_def_cfa_offset 16120; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill121; RV32-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill122; RV32-NEXT:    .cfi_offset ra, -4123; RV32-NEXT:    .cfi_offset s0, -8124; RV32-NEXT:    addi s0, sp, 16125; RV32-NEXT:    .cfi_def_cfa s0, 0126; RV32-NEXT:    addi a0, a0, 15127; RV32-NEXT:    andi a0, a0, -16128; RV32-NEXT:    sub a0, sp, a0129; RV32-NEXT:    mv sp, a0130; RV32-NEXT:    call callee_with_args131; RV32-NEXT:    addi sp, s0, -16132; RV32-NEXT:    .cfi_def_cfa sp, 16133; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload134; RV32-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload135; RV32-NEXT:    .cfi_restore ra136; RV32-NEXT:    .cfi_restore s0137; RV32-NEXT:    addi sp, sp, 16138; RV32-NEXT:    .cfi_def_cfa_offset 0139; RV32-NEXT:    ret140;141; RV64-LABEL: stack_alloc:142; RV64:       # %bb.0: # %entry143; RV64-NEXT:    addi sp, sp, -16144; RV64-NEXT:    .cfi_def_cfa_offset 16145; RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill146; RV64-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill147; RV64-NEXT:    .cfi_offset ra, -8148; RV64-NEXT:    .cfi_offset s0, -16149; RV64-NEXT:    addi s0, sp, 16150; RV64-NEXT:    .cfi_def_cfa s0, 0151; RV64-NEXT:    slli a0, a0, 32152; RV64-NEXT:    srli a0, a0, 32153; RV64-NEXT:    addi a0, a0, 15154; RV64-NEXT:    andi a0, a0, -16155; RV64-NEXT:    sub a0, sp, a0156; RV64-NEXT:    mv sp, a0157; RV64-NEXT:    call callee_with_args158; RV64-NEXT:    addi sp, s0, -16159; RV64-NEXT:    .cfi_def_cfa sp, 16160; RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload161; RV64-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload162; RV64-NEXT:    .cfi_restore ra163; RV64-NEXT:    .cfi_restore s0164; RV64-NEXT:    addi sp, sp, 16165; RV64-NEXT:    .cfi_def_cfa_offset 0166; RV64-NEXT:    ret167;168; RV32-WITHFP-LABEL: stack_alloc:169; RV32-WITHFP:       # %bb.0: # %entry170; RV32-WITHFP-NEXT:    addi sp, sp, -16171; RV32-WITHFP-NEXT:    .cfi_def_cfa_offset 16172; RV32-WITHFP-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill173; RV32-WITHFP-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill174; RV32-WITHFP-NEXT:    .cfi_offset ra, -4175; RV32-WITHFP-NEXT:    .cfi_offset s0, -8176; RV32-WITHFP-NEXT:    addi s0, sp, 16177; RV32-WITHFP-NEXT:    .cfi_def_cfa s0, 0178; RV32-WITHFP-NEXT:    addi a0, a0, 15179; RV32-WITHFP-NEXT:    andi a0, a0, -16180; RV32-WITHFP-NEXT:    sub a0, sp, a0181; RV32-WITHFP-NEXT:    mv sp, a0182; RV32-WITHFP-NEXT:    call callee_with_args183; RV32-WITHFP-NEXT:    addi sp, s0, -16184; RV32-WITHFP-NEXT:    .cfi_def_cfa sp, 16185; RV32-WITHFP-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload186; RV32-WITHFP-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload187; RV32-WITHFP-NEXT:    .cfi_restore ra188; RV32-WITHFP-NEXT:    .cfi_restore s0189; RV32-WITHFP-NEXT:    addi sp, sp, 16190; RV32-WITHFP-NEXT:    .cfi_def_cfa_offset 0191; RV32-WITHFP-NEXT:    ret192;193; RV64-WITHFP-LABEL: stack_alloc:194; RV64-WITHFP:       # %bb.0: # %entry195; RV64-WITHFP-NEXT:    addi sp, sp, -16196; RV64-WITHFP-NEXT:    .cfi_def_cfa_offset 16197; RV64-WITHFP-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill198; RV64-WITHFP-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill199; RV64-WITHFP-NEXT:    .cfi_offset ra, -8200; RV64-WITHFP-NEXT:    .cfi_offset s0, -16201; RV64-WITHFP-NEXT:    addi s0, sp, 16202; RV64-WITHFP-NEXT:    .cfi_def_cfa s0, 0203; RV64-WITHFP-NEXT:    slli a0, a0, 32204; RV64-WITHFP-NEXT:    srli a0, a0, 32205; RV64-WITHFP-NEXT:    addi a0, a0, 15206; RV64-WITHFP-NEXT:    andi a0, a0, -16207; RV64-WITHFP-NEXT:    sub a0, sp, a0208; RV64-WITHFP-NEXT:    mv sp, a0209; RV64-WITHFP-NEXT:    call callee_with_args210; RV64-WITHFP-NEXT:    addi sp, s0, -16211; RV64-WITHFP-NEXT:    .cfi_def_cfa sp, 16212; RV64-WITHFP-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload213; RV64-WITHFP-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload214; RV64-WITHFP-NEXT:    .cfi_restore ra215; RV64-WITHFP-NEXT:    .cfi_restore s0216; RV64-WITHFP-NEXT:    addi sp, sp, 16217; RV64-WITHFP-NEXT:    .cfi_def_cfa_offset 0218; RV64-WITHFP-NEXT:    ret219;220; RV32-DISABLESW-LABEL: stack_alloc:221; RV32-DISABLESW:       # %bb.0: # %entry222; RV32-DISABLESW-NEXT:    addi sp, sp, -16223; RV32-DISABLESW-NEXT:    .cfi_def_cfa_offset 16224; RV32-DISABLESW-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill225; RV32-DISABLESW-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill226; RV32-DISABLESW-NEXT:    .cfi_offset ra, -4227; RV32-DISABLESW-NEXT:    .cfi_offset s0, -8228; RV32-DISABLESW-NEXT:    addi s0, sp, 16229; RV32-DISABLESW-NEXT:    .cfi_def_cfa s0, 0230; RV32-DISABLESW-NEXT:    addi a0, a0, 15231; RV32-DISABLESW-NEXT:    andi a0, a0, -16232; RV32-DISABLESW-NEXT:    sub a0, sp, a0233; RV32-DISABLESW-NEXT:    mv sp, a0234; RV32-DISABLESW-NEXT:    call callee_with_args235; RV32-DISABLESW-NEXT:    addi sp, s0, -16236; RV32-DISABLESW-NEXT:    .cfi_def_cfa sp, 16237; RV32-DISABLESW-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload238; RV32-DISABLESW-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload239; RV32-DISABLESW-NEXT:    .cfi_restore ra240; RV32-DISABLESW-NEXT:    .cfi_restore s0241; RV32-DISABLESW-NEXT:    addi sp, sp, 16242; RV32-DISABLESW-NEXT:    .cfi_def_cfa_offset 0243; RV32-DISABLESW-NEXT:    ret244;245; RV64-DISABLESW-LABEL: stack_alloc:246; RV64-DISABLESW:       # %bb.0: # %entry247; RV64-DISABLESW-NEXT:    addi sp, sp, -16248; RV64-DISABLESW-NEXT:    .cfi_def_cfa_offset 16249; RV64-DISABLESW-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill250; RV64-DISABLESW-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill251; RV64-DISABLESW-NEXT:    .cfi_offset ra, -8252; RV64-DISABLESW-NEXT:    .cfi_offset s0, -16253; RV64-DISABLESW-NEXT:    addi s0, sp, 16254; RV64-DISABLESW-NEXT:    .cfi_def_cfa s0, 0255; RV64-DISABLESW-NEXT:    slli a0, a0, 32256; RV64-DISABLESW-NEXT:    srli a0, a0, 32257; RV64-DISABLESW-NEXT:    addi a0, a0, 15258; RV64-DISABLESW-NEXT:    andi a0, a0, -16259; RV64-DISABLESW-NEXT:    sub a0, sp, a0260; RV64-DISABLESW-NEXT:    mv sp, a0261; RV64-DISABLESW-NEXT:    call callee_with_args262; RV64-DISABLESW-NEXT:    addi sp, s0, -16263; RV64-DISABLESW-NEXT:    .cfi_def_cfa sp, 16264; RV64-DISABLESW-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload265; RV64-DISABLESW-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload266; RV64-DISABLESW-NEXT:    .cfi_restore ra267; RV64-DISABLESW-NEXT:    .cfi_restore s0268; RV64-DISABLESW-NEXT:    addi sp, sp, 16269; RV64-DISABLESW-NEXT:    .cfi_def_cfa_offset 0270; RV64-DISABLESW-NEXT:    ret271;272; RV32-WITHFP-DISABLESW-LABEL: stack_alloc:273; RV32-WITHFP-DISABLESW:       # %bb.0: # %entry274; RV32-WITHFP-DISABLESW-NEXT:    addi sp, sp, -16275; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 16276; RV32-WITHFP-DISABLESW-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill277; RV32-WITHFP-DISABLESW-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill278; RV32-WITHFP-DISABLESW-NEXT:    .cfi_offset ra, -4279; RV32-WITHFP-DISABLESW-NEXT:    .cfi_offset s0, -8280; RV32-WITHFP-DISABLESW-NEXT:    addi s0, sp, 16281; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa s0, 0282; RV32-WITHFP-DISABLESW-NEXT:    addi a0, a0, 15283; RV32-WITHFP-DISABLESW-NEXT:    andi a0, a0, -16284; RV32-WITHFP-DISABLESW-NEXT:    sub a0, sp, a0285; RV32-WITHFP-DISABLESW-NEXT:    mv sp, a0286; RV32-WITHFP-DISABLESW-NEXT:    call callee_with_args287; RV32-WITHFP-DISABLESW-NEXT:    addi sp, s0, -16288; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa sp, 16289; RV32-WITHFP-DISABLESW-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload290; RV32-WITHFP-DISABLESW-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload291; RV32-WITHFP-DISABLESW-NEXT:    .cfi_restore ra292; RV32-WITHFP-DISABLESW-NEXT:    .cfi_restore s0293; RV32-WITHFP-DISABLESW-NEXT:    addi sp, sp, 16294; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 0295; RV32-WITHFP-DISABLESW-NEXT:    ret296;297; RV64-WITHFP-DISABLESW-LABEL: stack_alloc:298; RV64-WITHFP-DISABLESW:       # %bb.0: # %entry299; RV64-WITHFP-DISABLESW-NEXT:    addi sp, sp, -16300; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 16301; RV64-WITHFP-DISABLESW-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill302; RV64-WITHFP-DISABLESW-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill303; RV64-WITHFP-DISABLESW-NEXT:    .cfi_offset ra, -8304; RV64-WITHFP-DISABLESW-NEXT:    .cfi_offset s0, -16305; RV64-WITHFP-DISABLESW-NEXT:    addi s0, sp, 16306; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa s0, 0307; RV64-WITHFP-DISABLESW-NEXT:    slli a0, a0, 32308; RV64-WITHFP-DISABLESW-NEXT:    srli a0, a0, 32309; RV64-WITHFP-DISABLESW-NEXT:    addi a0, a0, 15310; RV64-WITHFP-DISABLESW-NEXT:    andi a0, a0, -16311; RV64-WITHFP-DISABLESW-NEXT:    sub a0, sp, a0312; RV64-WITHFP-DISABLESW-NEXT:    mv sp, a0313; RV64-WITHFP-DISABLESW-NEXT:    call callee_with_args314; RV64-WITHFP-DISABLESW-NEXT:    addi sp, s0, -16315; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa sp, 16316; RV64-WITHFP-DISABLESW-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload317; RV64-WITHFP-DISABLESW-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload318; RV64-WITHFP-DISABLESW-NEXT:    .cfi_restore ra319; RV64-WITHFP-DISABLESW-NEXT:    .cfi_restore s0320; RV64-WITHFP-DISABLESW-NEXT:    addi sp, sp, 16321; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 0322; RV64-WITHFP-DISABLESW-NEXT:    ret323entry:324  %0 = alloca i8, i32 %size, align 16325  call void @callee_with_args(ptr nonnull %0)326  ret void327}328 329define void @branch_and_tail_call(i1 %a) {330; RV32-LABEL: branch_and_tail_call:331; RV32:       # %bb.0:332; RV32-NEXT:    andi a0, a0, 1333; RV32-NEXT:    beqz a0, .LBB2_2334; RV32-NEXT:  # %bb.1: # %blue_pill335; RV32-NEXT:    tail callee1336; RV32-NEXT:  .LBB2_2: # %red_pill337; RV32-NEXT:    addi sp, sp, -16338; RV32-NEXT:    .cfi_def_cfa_offset 16339; RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill340; RV32-NEXT:    .cfi_offset ra, -4341; RV32-NEXT:    call callee2342; RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload343; RV32-NEXT:    .cfi_restore ra344; RV32-NEXT:    addi sp, sp, 16345; RV32-NEXT:    .cfi_def_cfa_offset 0346; RV32-NEXT:    ret347;348; RV64-LABEL: branch_and_tail_call:349; RV64:       # %bb.0:350; RV64-NEXT:    andi a0, a0, 1351; RV64-NEXT:    beqz a0, .LBB2_2352; RV64-NEXT:  # %bb.1: # %blue_pill353; RV64-NEXT:    tail callee1354; RV64-NEXT:  .LBB2_2: # %red_pill355; RV64-NEXT:    addi sp, sp, -16356; RV64-NEXT:    .cfi_def_cfa_offset 16357; RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill358; RV64-NEXT:    .cfi_offset ra, -8359; RV64-NEXT:    call callee2360; RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload361; RV64-NEXT:    .cfi_restore ra362; RV64-NEXT:    addi sp, sp, 16363; RV64-NEXT:    .cfi_def_cfa_offset 0364; RV64-NEXT:    ret365;366; RV32-WITHFP-LABEL: branch_and_tail_call:367; RV32-WITHFP:       # %bb.0:368; RV32-WITHFP-NEXT:    andi a0, a0, 1369; RV32-WITHFP-NEXT:    beqz a0, .LBB2_2370; RV32-WITHFP-NEXT:  # %bb.1: # %blue_pill371; RV32-WITHFP-NEXT:    tail callee1372; RV32-WITHFP-NEXT:  .LBB2_2: # %red_pill373; RV32-WITHFP-NEXT:    addi sp, sp, -16374; RV32-WITHFP-NEXT:    .cfi_def_cfa_offset 16375; RV32-WITHFP-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill376; RV32-WITHFP-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill377; RV32-WITHFP-NEXT:    .cfi_offset ra, -4378; RV32-WITHFP-NEXT:    .cfi_offset s0, -8379; RV32-WITHFP-NEXT:    addi s0, sp, 16380; RV32-WITHFP-NEXT:    .cfi_def_cfa s0, 0381; RV32-WITHFP-NEXT:    call callee2382; RV32-WITHFP-NEXT:    .cfi_def_cfa sp, 16383; RV32-WITHFP-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload384; RV32-WITHFP-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload385; RV32-WITHFP-NEXT:    .cfi_restore ra386; RV32-WITHFP-NEXT:    .cfi_restore s0387; RV32-WITHFP-NEXT:    addi sp, sp, 16388; RV32-WITHFP-NEXT:    .cfi_def_cfa_offset 0389; RV32-WITHFP-NEXT:    ret390;391; RV64-WITHFP-LABEL: branch_and_tail_call:392; RV64-WITHFP:       # %bb.0:393; RV64-WITHFP-NEXT:    andi a0, a0, 1394; RV64-WITHFP-NEXT:    beqz a0, .LBB2_2395; RV64-WITHFP-NEXT:  # %bb.1: # %blue_pill396; RV64-WITHFP-NEXT:    tail callee1397; RV64-WITHFP-NEXT:  .LBB2_2: # %red_pill398; RV64-WITHFP-NEXT:    addi sp, sp, -16399; RV64-WITHFP-NEXT:    .cfi_def_cfa_offset 16400; RV64-WITHFP-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill401; RV64-WITHFP-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill402; RV64-WITHFP-NEXT:    .cfi_offset ra, -8403; RV64-WITHFP-NEXT:    .cfi_offset s0, -16404; RV64-WITHFP-NEXT:    addi s0, sp, 16405; RV64-WITHFP-NEXT:    .cfi_def_cfa s0, 0406; RV64-WITHFP-NEXT:    call callee2407; RV64-WITHFP-NEXT:    .cfi_def_cfa sp, 16408; RV64-WITHFP-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload409; RV64-WITHFP-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload410; RV64-WITHFP-NEXT:    .cfi_restore ra411; RV64-WITHFP-NEXT:    .cfi_restore s0412; RV64-WITHFP-NEXT:    addi sp, sp, 16413; RV64-WITHFP-NEXT:    .cfi_def_cfa_offset 0414; RV64-WITHFP-NEXT:    ret415;416; RV32-DISABLESW-LABEL: branch_and_tail_call:417; RV32-DISABLESW:       # %bb.0:418; RV32-DISABLESW-NEXT:    addi sp, sp, -16419; RV32-DISABLESW-NEXT:    .cfi_def_cfa_offset 16420; RV32-DISABLESW-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill421; RV32-DISABLESW-NEXT:    .cfi_offset ra, -4422; RV32-DISABLESW-NEXT:    .cfi_remember_state423; RV32-DISABLESW-NEXT:    andi a0, a0, 1424; RV32-DISABLESW-NEXT:    beqz a0, .LBB2_2425; RV32-DISABLESW-NEXT:  # %bb.1: # %blue_pill426; RV32-DISABLESW-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload427; RV32-DISABLESW-NEXT:    .cfi_restore ra428; RV32-DISABLESW-NEXT:    addi sp, sp, 16429; RV32-DISABLESW-NEXT:    .cfi_def_cfa_offset 0430; RV32-DISABLESW-NEXT:    tail callee1431; RV32-DISABLESW-NEXT:  .LBB2_2: # %red_pill432; RV32-DISABLESW-NEXT:    .cfi_restore_state433; RV32-DISABLESW-NEXT:    call callee2434; RV32-DISABLESW-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload435; RV32-DISABLESW-NEXT:    .cfi_restore ra436; RV32-DISABLESW-NEXT:    addi sp, sp, 16437; RV32-DISABLESW-NEXT:    .cfi_def_cfa_offset 0438; RV32-DISABLESW-NEXT:    ret439;440; RV64-DISABLESW-LABEL: branch_and_tail_call:441; RV64-DISABLESW:       # %bb.0:442; RV64-DISABLESW-NEXT:    addi sp, sp, -16443; RV64-DISABLESW-NEXT:    .cfi_def_cfa_offset 16444; RV64-DISABLESW-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill445; RV64-DISABLESW-NEXT:    .cfi_offset ra, -8446; RV64-DISABLESW-NEXT:    .cfi_remember_state447; RV64-DISABLESW-NEXT:    andi a0, a0, 1448; RV64-DISABLESW-NEXT:    beqz a0, .LBB2_2449; RV64-DISABLESW-NEXT:  # %bb.1: # %blue_pill450; RV64-DISABLESW-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload451; RV64-DISABLESW-NEXT:    .cfi_restore ra452; RV64-DISABLESW-NEXT:    addi sp, sp, 16453; RV64-DISABLESW-NEXT:    .cfi_def_cfa_offset 0454; RV64-DISABLESW-NEXT:    tail callee1455; RV64-DISABLESW-NEXT:  .LBB2_2: # %red_pill456; RV64-DISABLESW-NEXT:    .cfi_restore_state457; RV64-DISABLESW-NEXT:    call callee2458; RV64-DISABLESW-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload459; RV64-DISABLESW-NEXT:    .cfi_restore ra460; RV64-DISABLESW-NEXT:    addi sp, sp, 16461; RV64-DISABLESW-NEXT:    .cfi_def_cfa_offset 0462; RV64-DISABLESW-NEXT:    ret463;464; RV32-WITHFP-DISABLESW-LABEL: branch_and_tail_call:465; RV32-WITHFP-DISABLESW:       # %bb.0:466; RV32-WITHFP-DISABLESW-NEXT:    addi sp, sp, -16467; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 16468; RV32-WITHFP-DISABLESW-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill469; RV32-WITHFP-DISABLESW-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill470; RV32-WITHFP-DISABLESW-NEXT:    .cfi_offset ra, -4471; RV32-WITHFP-DISABLESW-NEXT:    .cfi_offset s0, -8472; RV32-WITHFP-DISABLESW-NEXT:    addi s0, sp, 16473; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa s0, 0474; RV32-WITHFP-DISABLESW-NEXT:    .cfi_remember_state475; RV32-WITHFP-DISABLESW-NEXT:    andi a0, a0, 1476; RV32-WITHFP-DISABLESW-NEXT:    beqz a0, .LBB2_2477; RV32-WITHFP-DISABLESW-NEXT:  # %bb.1: # %blue_pill478; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa sp, 16479; RV32-WITHFP-DISABLESW-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload480; RV32-WITHFP-DISABLESW-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload481; RV32-WITHFP-DISABLESW-NEXT:    .cfi_restore ra482; RV32-WITHFP-DISABLESW-NEXT:    .cfi_restore s0483; RV32-WITHFP-DISABLESW-NEXT:    addi sp, sp, 16484; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 0485; RV32-WITHFP-DISABLESW-NEXT:    tail callee1486; RV32-WITHFP-DISABLESW-NEXT:  .LBB2_2: # %red_pill487; RV32-WITHFP-DISABLESW-NEXT:    .cfi_restore_state488; RV32-WITHFP-DISABLESW-NEXT:    call callee2489; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa sp, 16490; RV32-WITHFP-DISABLESW-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload491; RV32-WITHFP-DISABLESW-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload492; RV32-WITHFP-DISABLESW-NEXT:    .cfi_restore ra493; RV32-WITHFP-DISABLESW-NEXT:    .cfi_restore s0494; RV32-WITHFP-DISABLESW-NEXT:    addi sp, sp, 16495; RV32-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 0496; RV32-WITHFP-DISABLESW-NEXT:    ret497;498; RV64-WITHFP-DISABLESW-LABEL: branch_and_tail_call:499; RV64-WITHFP-DISABLESW:       # %bb.0:500; RV64-WITHFP-DISABLESW-NEXT:    addi sp, sp, -16501; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 16502; RV64-WITHFP-DISABLESW-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill503; RV64-WITHFP-DISABLESW-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill504; RV64-WITHFP-DISABLESW-NEXT:    .cfi_offset ra, -8505; RV64-WITHFP-DISABLESW-NEXT:    .cfi_offset s0, -16506; RV64-WITHFP-DISABLESW-NEXT:    addi s0, sp, 16507; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa s0, 0508; RV64-WITHFP-DISABLESW-NEXT:    .cfi_remember_state509; RV64-WITHFP-DISABLESW-NEXT:    andi a0, a0, 1510; RV64-WITHFP-DISABLESW-NEXT:    beqz a0, .LBB2_2511; RV64-WITHFP-DISABLESW-NEXT:  # %bb.1: # %blue_pill512; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa sp, 16513; RV64-WITHFP-DISABLESW-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload514; RV64-WITHFP-DISABLESW-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload515; RV64-WITHFP-DISABLESW-NEXT:    .cfi_restore ra516; RV64-WITHFP-DISABLESW-NEXT:    .cfi_restore s0517; RV64-WITHFP-DISABLESW-NEXT:    addi sp, sp, 16518; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 0519; RV64-WITHFP-DISABLESW-NEXT:    tail callee1520; RV64-WITHFP-DISABLESW-NEXT:  .LBB2_2: # %red_pill521; RV64-WITHFP-DISABLESW-NEXT:    .cfi_restore_state522; RV64-WITHFP-DISABLESW-NEXT:    call callee2523; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa sp, 16524; RV64-WITHFP-DISABLESW-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload525; RV64-WITHFP-DISABLESW-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload526; RV64-WITHFP-DISABLESW-NEXT:    .cfi_restore ra527; RV64-WITHFP-DISABLESW-NEXT:    .cfi_restore s0528; RV64-WITHFP-DISABLESW-NEXT:    addi sp, sp, 16529; RV64-WITHFP-DISABLESW-NEXT:    .cfi_def_cfa_offset 0530; RV64-WITHFP-DISABLESW-NEXT:    ret531  br i1 %a, label %blue_pill, label %red_pill532blue_pill:533  tail call void @callee1()534  ret void535red_pill:536  call void @callee2()537  ret void538}539 540declare void @callee1()541declare void @callee2()542declare void @callee_with_args(ptr)543