brintos

brintos / llvm-project-archived public Read only

0
0
Text · 160.3 KiB · 0d289c6 Raw
4212 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=riscv32 -mattr=+zcmp -verify-machineinstrs < %s \3; RUN: | FileCheck %s -check-prefixes=RV32IZCMP4; RUN: llc -mtriple=riscv64 -mattr=+zcmp -verify-machineinstrs < %s \5; RUN: | FileCheck %s -check-prefixes=RV64IZCMP6; RUN: llc -mtriple=riscv32 -mattr=+zcmp,+save-restore \7; RUN: -verify-machineinstrs < %s | FileCheck %s -check-prefixes=RV32IZCMP-SR8; RUN: llc -mtriple=riscv64 -mattr=+zcmp,+save-restore \9; RUN: -verify-machineinstrs < %s | FileCheck %s -check-prefixes=RV64IZCMP-SR10; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \11; RUN: | FileCheck -check-prefixes=RV32I %s12; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \13; RUN: | FileCheck -check-prefixes=RV64I %s14 15declare void @test(ptr)16declare void @callee_void(ptr)17declare i32 @callee(ptr)18 19define i32 @foo() {20; RV32IZCMP-LABEL: foo:21; RV32IZCMP:       # %bb.0:22; RV32IZCMP-NEXT:    cm.push {ra}, -6423; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 6424; RV32IZCMP-NEXT:    .cfi_offset ra, -425; RV32IZCMP-NEXT:    addi sp, sp, -46426; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 52827; RV32IZCMP-NEXT:    mv a0, sp28; RV32IZCMP-NEXT:    call test29; RV32IZCMP-NEXT:    addi sp, sp, 46430; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 6431; RV32IZCMP-NEXT:    cm.popretz {ra}, 6432;33; RV64IZCMP-LABEL: foo:34; RV64IZCMP:       # %bb.0:35; RV64IZCMP-NEXT:    cm.push {ra}, -6436; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 6437; RV64IZCMP-NEXT:    .cfi_offset ra, -838; RV64IZCMP-NEXT:    addi sp, sp, -46439; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 52840; RV64IZCMP-NEXT:    mv a0, sp41; RV64IZCMP-NEXT:    call test42; RV64IZCMP-NEXT:    addi sp, sp, 46443; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 6444; RV64IZCMP-NEXT:    cm.popretz {ra}, 6445;46; RV32IZCMP-SR-LABEL: foo:47; RV32IZCMP-SR:       # %bb.0:48; RV32IZCMP-SR-NEXT:    cm.push {ra}, -6449; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 6450; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -451; RV32IZCMP-SR-NEXT:    addi sp, sp, -46452; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 52853; RV32IZCMP-SR-NEXT:    mv a0, sp54; RV32IZCMP-SR-NEXT:    call test55; RV32IZCMP-SR-NEXT:    addi sp, sp, 46456; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 6457; RV32IZCMP-SR-NEXT:    cm.popretz {ra}, 6458;59; RV64IZCMP-SR-LABEL: foo:60; RV64IZCMP-SR:       # %bb.0:61; RV64IZCMP-SR-NEXT:    cm.push {ra}, -6462; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 6463; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -864; RV64IZCMP-SR-NEXT:    addi sp, sp, -46465; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 52866; RV64IZCMP-SR-NEXT:    mv a0, sp67; RV64IZCMP-SR-NEXT:    call test68; RV64IZCMP-SR-NEXT:    addi sp, sp, 46469; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 6470; RV64IZCMP-SR-NEXT:    cm.popretz {ra}, 6471;72; RV32I-LABEL: foo:73; RV32I:       # %bb.0:74; RV32I-NEXT:    addi sp, sp, -52875; RV32I-NEXT:    .cfi_def_cfa_offset 52876; RV32I-NEXT:    sw ra, 524(sp) # 4-byte Folded Spill77; RV32I-NEXT:    .cfi_offset ra, -478; RV32I-NEXT:    addi a0, sp, 1279; RV32I-NEXT:    call test80; RV32I-NEXT:    li a0, 081; RV32I-NEXT:    lw ra, 524(sp) # 4-byte Folded Reload82; RV32I-NEXT:    .cfi_restore ra83; RV32I-NEXT:    addi sp, sp, 52884; RV32I-NEXT:    .cfi_def_cfa_offset 085; RV32I-NEXT:    ret86;87; RV64I-LABEL: foo:88; RV64I:       # %bb.0:89; RV64I-NEXT:    addi sp, sp, -52890; RV64I-NEXT:    .cfi_def_cfa_offset 52891; RV64I-NEXT:    sd ra, 520(sp) # 8-byte Folded Spill92; RV64I-NEXT:    .cfi_offset ra, -893; RV64I-NEXT:    addi a0, sp, 894; RV64I-NEXT:    call test95; RV64I-NEXT:    li a0, 096; RV64I-NEXT:    ld ra, 520(sp) # 8-byte Folded Reload97; RV64I-NEXT:    .cfi_restore ra98; RV64I-NEXT:    addi sp, sp, 52899; RV64I-NEXT:    .cfi_def_cfa_offset 0100; RV64I-NEXT:    ret101  %1 = alloca [512 x i8]102  %2 = getelementptr [512 x i8], ptr %1, i32 0, i32 0103  call void @test(ptr %2)104  ret i32 0105}106 107define i32 @pushpopret0(i32 signext %size) {108; RV32IZCMP-LABEL: pushpopret0:109; RV32IZCMP:       # %bb.0: # %entry110; RV32IZCMP-NEXT:    cm.push {ra, s0}, -16111; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 16112; RV32IZCMP-NEXT:    .cfi_offset ra, -8113; RV32IZCMP-NEXT:    .cfi_offset s0, -4114; RV32IZCMP-NEXT:    addi s0, sp, 16115; RV32IZCMP-NEXT:    .cfi_def_cfa s0, 0116; RV32IZCMP-NEXT:    addi a0, a0, 15117; RV32IZCMP-NEXT:    andi a0, a0, -16118; RV32IZCMP-NEXT:    sub a0, sp, a0119; RV32IZCMP-NEXT:    mv sp, a0120; RV32IZCMP-NEXT:    call callee_void121; RV32IZCMP-NEXT:    addi sp, s0, -16122; RV32IZCMP-NEXT:    .cfi_def_cfa sp, 16123; RV32IZCMP-NEXT:    cm.popretz {ra, s0}, 16124;125; RV64IZCMP-LABEL: pushpopret0:126; RV64IZCMP:       # %bb.0: # %entry127; RV64IZCMP-NEXT:    cm.push {ra, s0}, -16128; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 16129; RV64IZCMP-NEXT:    .cfi_offset ra, -16130; RV64IZCMP-NEXT:    .cfi_offset s0, -8131; RV64IZCMP-NEXT:    addi s0, sp, 16132; RV64IZCMP-NEXT:    .cfi_def_cfa s0, 0133; RV64IZCMP-NEXT:    slli a0, a0, 32134; RV64IZCMP-NEXT:    srli a0, a0, 32135; RV64IZCMP-NEXT:    addi a0, a0, 15136; RV64IZCMP-NEXT:    andi a0, a0, -16137; RV64IZCMP-NEXT:    sub a0, sp, a0138; RV64IZCMP-NEXT:    mv sp, a0139; RV64IZCMP-NEXT:    call callee_void140; RV64IZCMP-NEXT:    addi sp, s0, -16141; RV64IZCMP-NEXT:    .cfi_def_cfa sp, 16142; RV64IZCMP-NEXT:    cm.popretz {ra, s0}, 16143;144; RV32IZCMP-SR-LABEL: pushpopret0:145; RV32IZCMP-SR:       # %bb.0: # %entry146; RV32IZCMP-SR-NEXT:    cm.push {ra, s0}, -16147; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 16148; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -8149; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -4150; RV32IZCMP-SR-NEXT:    addi s0, sp, 16151; RV32IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0152; RV32IZCMP-SR-NEXT:    addi a0, a0, 15153; RV32IZCMP-SR-NEXT:    andi a0, a0, -16154; RV32IZCMP-SR-NEXT:    sub a0, sp, a0155; RV32IZCMP-SR-NEXT:    mv sp, a0156; RV32IZCMP-SR-NEXT:    call callee_void157; RV32IZCMP-SR-NEXT:    addi sp, s0, -16158; RV32IZCMP-SR-NEXT:    .cfi_def_cfa sp, 16159; RV32IZCMP-SR-NEXT:    cm.popretz {ra, s0}, 16160;161; RV64IZCMP-SR-LABEL: pushpopret0:162; RV64IZCMP-SR:       # %bb.0: # %entry163; RV64IZCMP-SR-NEXT:    cm.push {ra, s0}, -16164; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 16165; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -16166; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -8167; RV64IZCMP-SR-NEXT:    addi s0, sp, 16168; RV64IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0169; RV64IZCMP-SR-NEXT:    slli a0, a0, 32170; RV64IZCMP-SR-NEXT:    srli a0, a0, 32171; RV64IZCMP-SR-NEXT:    addi a0, a0, 15172; RV64IZCMP-SR-NEXT:    andi a0, a0, -16173; RV64IZCMP-SR-NEXT:    sub a0, sp, a0174; RV64IZCMP-SR-NEXT:    mv sp, a0175; RV64IZCMP-SR-NEXT:    call callee_void176; RV64IZCMP-SR-NEXT:    addi sp, s0, -16177; RV64IZCMP-SR-NEXT:    .cfi_def_cfa sp, 16178; RV64IZCMP-SR-NEXT:    cm.popretz {ra, s0}, 16179;180; RV32I-LABEL: pushpopret0:181; RV32I:       # %bb.0: # %entry182; RV32I-NEXT:    addi sp, sp, -16183; RV32I-NEXT:    .cfi_def_cfa_offset 16184; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill185; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill186; RV32I-NEXT:    .cfi_offset ra, -4187; RV32I-NEXT:    .cfi_offset s0, -8188; RV32I-NEXT:    addi s0, sp, 16189; RV32I-NEXT:    .cfi_def_cfa s0, 0190; RV32I-NEXT:    addi a0, a0, 15191; RV32I-NEXT:    andi a0, a0, -16192; RV32I-NEXT:    sub a0, sp, a0193; RV32I-NEXT:    mv sp, a0194; RV32I-NEXT:    call callee_void195; RV32I-NEXT:    li a0, 0196; RV32I-NEXT:    addi sp, s0, -16197; RV32I-NEXT:    .cfi_def_cfa sp, 16198; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload199; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload200; RV32I-NEXT:    .cfi_restore ra201; RV32I-NEXT:    .cfi_restore s0202; RV32I-NEXT:    addi sp, sp, 16203; RV32I-NEXT:    .cfi_def_cfa_offset 0204; RV32I-NEXT:    ret205;206; RV64I-LABEL: pushpopret0:207; RV64I:       # %bb.0: # %entry208; RV64I-NEXT:    addi sp, sp, -16209; RV64I-NEXT:    .cfi_def_cfa_offset 16210; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill211; RV64I-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill212; RV64I-NEXT:    .cfi_offset ra, -8213; RV64I-NEXT:    .cfi_offset s0, -16214; RV64I-NEXT:    addi s0, sp, 16215; RV64I-NEXT:    .cfi_def_cfa s0, 0216; RV64I-NEXT:    slli a0, a0, 32217; RV64I-NEXT:    srli a0, a0, 32218; RV64I-NEXT:    addi a0, a0, 15219; RV64I-NEXT:    andi a0, a0, -16220; RV64I-NEXT:    sub a0, sp, a0221; RV64I-NEXT:    mv sp, a0222; RV64I-NEXT:    call callee_void223; RV64I-NEXT:    li a0, 0224; RV64I-NEXT:    addi sp, s0, -16225; RV64I-NEXT:    .cfi_def_cfa sp, 16226; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload227; RV64I-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload228; RV64I-NEXT:    .cfi_restore ra229; RV64I-NEXT:    .cfi_restore s0230; RV64I-NEXT:    addi sp, sp, 16231; RV64I-NEXT:    .cfi_def_cfa_offset 0232; RV64I-NEXT:    ret233entry:234  %0 = alloca i8, i32 %size, align 16235  call void @callee_void(ptr nonnull %0)236  ret i32 0237}238 239define i32 @pushpopret1(i32 signext %size) {240; RV32IZCMP-LABEL: pushpopret1:241; RV32IZCMP:       # %bb.0: # %entry242; RV32IZCMP-NEXT:    cm.push {ra, s0}, -16243; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 16244; RV32IZCMP-NEXT:    .cfi_offset ra, -8245; RV32IZCMP-NEXT:    .cfi_offset s0, -4246; RV32IZCMP-NEXT:    addi s0, sp, 16247; RV32IZCMP-NEXT:    .cfi_def_cfa s0, 0248; RV32IZCMP-NEXT:    addi a0, a0, 15249; RV32IZCMP-NEXT:    andi a0, a0, -16250; RV32IZCMP-NEXT:    sub a0, sp, a0251; RV32IZCMP-NEXT:    mv sp, a0252; RV32IZCMP-NEXT:    call callee_void253; RV32IZCMP-NEXT:    li a0, 1254; RV32IZCMP-NEXT:    addi sp, s0, -16255; RV32IZCMP-NEXT:    .cfi_def_cfa sp, 16256; RV32IZCMP-NEXT:    cm.popret {ra, s0}, 16257;258; RV64IZCMP-LABEL: pushpopret1:259; RV64IZCMP:       # %bb.0: # %entry260; RV64IZCMP-NEXT:    cm.push {ra, s0}, -16261; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 16262; RV64IZCMP-NEXT:    .cfi_offset ra, -16263; RV64IZCMP-NEXT:    .cfi_offset s0, -8264; RV64IZCMP-NEXT:    addi s0, sp, 16265; RV64IZCMP-NEXT:    .cfi_def_cfa s0, 0266; RV64IZCMP-NEXT:    slli a0, a0, 32267; RV64IZCMP-NEXT:    srli a0, a0, 32268; RV64IZCMP-NEXT:    addi a0, a0, 15269; RV64IZCMP-NEXT:    andi a0, a0, -16270; RV64IZCMP-NEXT:    sub a0, sp, a0271; RV64IZCMP-NEXT:    mv sp, a0272; RV64IZCMP-NEXT:    call callee_void273; RV64IZCMP-NEXT:    li a0, 1274; RV64IZCMP-NEXT:    addi sp, s0, -16275; RV64IZCMP-NEXT:    .cfi_def_cfa sp, 16276; RV64IZCMP-NEXT:    cm.popret {ra, s0}, 16277;278; RV32IZCMP-SR-LABEL: pushpopret1:279; RV32IZCMP-SR:       # %bb.0: # %entry280; RV32IZCMP-SR-NEXT:    cm.push {ra, s0}, -16281; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 16282; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -8283; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -4284; RV32IZCMP-SR-NEXT:    addi s0, sp, 16285; RV32IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0286; RV32IZCMP-SR-NEXT:    addi a0, a0, 15287; RV32IZCMP-SR-NEXT:    andi a0, a0, -16288; RV32IZCMP-SR-NEXT:    sub a0, sp, a0289; RV32IZCMP-SR-NEXT:    mv sp, a0290; RV32IZCMP-SR-NEXT:    call callee_void291; RV32IZCMP-SR-NEXT:    li a0, 1292; RV32IZCMP-SR-NEXT:    addi sp, s0, -16293; RV32IZCMP-SR-NEXT:    .cfi_def_cfa sp, 16294; RV32IZCMP-SR-NEXT:    cm.popret {ra, s0}, 16295;296; RV64IZCMP-SR-LABEL: pushpopret1:297; RV64IZCMP-SR:       # %bb.0: # %entry298; RV64IZCMP-SR-NEXT:    cm.push {ra, s0}, -16299; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 16300; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -16301; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -8302; RV64IZCMP-SR-NEXT:    addi s0, sp, 16303; RV64IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0304; RV64IZCMP-SR-NEXT:    slli a0, a0, 32305; RV64IZCMP-SR-NEXT:    srli a0, a0, 32306; RV64IZCMP-SR-NEXT:    addi a0, a0, 15307; RV64IZCMP-SR-NEXT:    andi a0, a0, -16308; RV64IZCMP-SR-NEXT:    sub a0, sp, a0309; RV64IZCMP-SR-NEXT:    mv sp, a0310; RV64IZCMP-SR-NEXT:    call callee_void311; RV64IZCMP-SR-NEXT:    li a0, 1312; RV64IZCMP-SR-NEXT:    addi sp, s0, -16313; RV64IZCMP-SR-NEXT:    .cfi_def_cfa sp, 16314; RV64IZCMP-SR-NEXT:    cm.popret {ra, s0}, 16315;316; RV32I-LABEL: pushpopret1:317; RV32I:       # %bb.0: # %entry318; RV32I-NEXT:    addi sp, sp, -16319; RV32I-NEXT:    .cfi_def_cfa_offset 16320; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill321; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill322; RV32I-NEXT:    .cfi_offset ra, -4323; RV32I-NEXT:    .cfi_offset s0, -8324; RV32I-NEXT:    addi s0, sp, 16325; RV32I-NEXT:    .cfi_def_cfa s0, 0326; RV32I-NEXT:    addi a0, a0, 15327; RV32I-NEXT:    andi a0, a0, -16328; RV32I-NEXT:    sub a0, sp, a0329; RV32I-NEXT:    mv sp, a0330; RV32I-NEXT:    call callee_void331; RV32I-NEXT:    li a0, 1332; RV32I-NEXT:    addi sp, s0, -16333; RV32I-NEXT:    .cfi_def_cfa sp, 16334; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload335; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload336; RV32I-NEXT:    .cfi_restore ra337; RV32I-NEXT:    .cfi_restore s0338; RV32I-NEXT:    addi sp, sp, 16339; RV32I-NEXT:    .cfi_def_cfa_offset 0340; RV32I-NEXT:    ret341;342; RV64I-LABEL: pushpopret1:343; RV64I:       # %bb.0: # %entry344; RV64I-NEXT:    addi sp, sp, -16345; RV64I-NEXT:    .cfi_def_cfa_offset 16346; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill347; RV64I-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill348; RV64I-NEXT:    .cfi_offset ra, -8349; RV64I-NEXT:    .cfi_offset s0, -16350; RV64I-NEXT:    addi s0, sp, 16351; RV64I-NEXT:    .cfi_def_cfa s0, 0352; RV64I-NEXT:    slli a0, a0, 32353; RV64I-NEXT:    srli a0, a0, 32354; RV64I-NEXT:    addi a0, a0, 15355; RV64I-NEXT:    andi a0, a0, -16356; RV64I-NEXT:    sub a0, sp, a0357; RV64I-NEXT:    mv sp, a0358; RV64I-NEXT:    call callee_void359; RV64I-NEXT:    li a0, 1360; RV64I-NEXT:    addi sp, s0, -16361; RV64I-NEXT:    .cfi_def_cfa sp, 16362; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload363; RV64I-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload364; RV64I-NEXT:    .cfi_restore ra365; RV64I-NEXT:    .cfi_restore s0366; RV64I-NEXT:    addi sp, sp, 16367; RV64I-NEXT:    .cfi_def_cfa_offset 0368; RV64I-NEXT:    ret369entry:370  %0 = alloca i8, i32 %size, align 16371  call void @callee_void(ptr nonnull %0)372  ret i32 1373}374 375define i32 @pushpopretneg1(i32 signext %size) {376; RV32IZCMP-LABEL: pushpopretneg1:377; RV32IZCMP:       # %bb.0: # %entry378; RV32IZCMP-NEXT:    cm.push {ra, s0}, -16379; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 16380; RV32IZCMP-NEXT:    .cfi_offset ra, -8381; RV32IZCMP-NEXT:    .cfi_offset s0, -4382; RV32IZCMP-NEXT:    addi s0, sp, 16383; RV32IZCMP-NEXT:    .cfi_def_cfa s0, 0384; RV32IZCMP-NEXT:    addi a0, a0, 15385; RV32IZCMP-NEXT:    andi a0, a0, -16386; RV32IZCMP-NEXT:    sub a0, sp, a0387; RV32IZCMP-NEXT:    mv sp, a0388; RV32IZCMP-NEXT:    call callee_void389; RV32IZCMP-NEXT:    li a0, -1390; RV32IZCMP-NEXT:    addi sp, s0, -16391; RV32IZCMP-NEXT:    .cfi_def_cfa sp, 16392; RV32IZCMP-NEXT:    cm.popret {ra, s0}, 16393;394; RV64IZCMP-LABEL: pushpopretneg1:395; RV64IZCMP:       # %bb.0: # %entry396; RV64IZCMP-NEXT:    cm.push {ra, s0}, -16397; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 16398; RV64IZCMP-NEXT:    .cfi_offset ra, -16399; RV64IZCMP-NEXT:    .cfi_offset s0, -8400; RV64IZCMP-NEXT:    addi s0, sp, 16401; RV64IZCMP-NEXT:    .cfi_def_cfa s0, 0402; RV64IZCMP-NEXT:    slli a0, a0, 32403; RV64IZCMP-NEXT:    srli a0, a0, 32404; RV64IZCMP-NEXT:    addi a0, a0, 15405; RV64IZCMP-NEXT:    andi a0, a0, -16406; RV64IZCMP-NEXT:    sub a0, sp, a0407; RV64IZCMP-NEXT:    mv sp, a0408; RV64IZCMP-NEXT:    call callee_void409; RV64IZCMP-NEXT:    li a0, -1410; RV64IZCMP-NEXT:    addi sp, s0, -16411; RV64IZCMP-NEXT:    .cfi_def_cfa sp, 16412; RV64IZCMP-NEXT:    cm.popret {ra, s0}, 16413;414; RV32IZCMP-SR-LABEL: pushpopretneg1:415; RV32IZCMP-SR:       # %bb.0: # %entry416; RV32IZCMP-SR-NEXT:    cm.push {ra, s0}, -16417; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 16418; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -8419; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -4420; RV32IZCMP-SR-NEXT:    addi s0, sp, 16421; RV32IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0422; RV32IZCMP-SR-NEXT:    addi a0, a0, 15423; RV32IZCMP-SR-NEXT:    andi a0, a0, -16424; RV32IZCMP-SR-NEXT:    sub a0, sp, a0425; RV32IZCMP-SR-NEXT:    mv sp, a0426; RV32IZCMP-SR-NEXT:    call callee_void427; RV32IZCMP-SR-NEXT:    li a0, -1428; RV32IZCMP-SR-NEXT:    addi sp, s0, -16429; RV32IZCMP-SR-NEXT:    .cfi_def_cfa sp, 16430; RV32IZCMP-SR-NEXT:    cm.popret {ra, s0}, 16431;432; RV64IZCMP-SR-LABEL: pushpopretneg1:433; RV64IZCMP-SR:       # %bb.0: # %entry434; RV64IZCMP-SR-NEXT:    cm.push {ra, s0}, -16435; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 16436; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -16437; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -8438; RV64IZCMP-SR-NEXT:    addi s0, sp, 16439; RV64IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0440; RV64IZCMP-SR-NEXT:    slli a0, a0, 32441; RV64IZCMP-SR-NEXT:    srli a0, a0, 32442; RV64IZCMP-SR-NEXT:    addi a0, a0, 15443; RV64IZCMP-SR-NEXT:    andi a0, a0, -16444; RV64IZCMP-SR-NEXT:    sub a0, sp, a0445; RV64IZCMP-SR-NEXT:    mv sp, a0446; RV64IZCMP-SR-NEXT:    call callee_void447; RV64IZCMP-SR-NEXT:    li a0, -1448; RV64IZCMP-SR-NEXT:    addi sp, s0, -16449; RV64IZCMP-SR-NEXT:    .cfi_def_cfa sp, 16450; RV64IZCMP-SR-NEXT:    cm.popret {ra, s0}, 16451;452; RV32I-LABEL: pushpopretneg1:453; RV32I:       # %bb.0: # %entry454; RV32I-NEXT:    addi sp, sp, -16455; RV32I-NEXT:    .cfi_def_cfa_offset 16456; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill457; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill458; RV32I-NEXT:    .cfi_offset ra, -4459; RV32I-NEXT:    .cfi_offset s0, -8460; RV32I-NEXT:    addi s0, sp, 16461; RV32I-NEXT:    .cfi_def_cfa s0, 0462; RV32I-NEXT:    addi a0, a0, 15463; RV32I-NEXT:    andi a0, a0, -16464; RV32I-NEXT:    sub a0, sp, a0465; RV32I-NEXT:    mv sp, a0466; RV32I-NEXT:    call callee_void467; RV32I-NEXT:    li a0, -1468; RV32I-NEXT:    addi sp, s0, -16469; RV32I-NEXT:    .cfi_def_cfa sp, 16470; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload471; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload472; RV32I-NEXT:    .cfi_restore ra473; RV32I-NEXT:    .cfi_restore s0474; RV32I-NEXT:    addi sp, sp, 16475; RV32I-NEXT:    .cfi_def_cfa_offset 0476; RV32I-NEXT:    ret477;478; RV64I-LABEL: pushpopretneg1:479; RV64I:       # %bb.0: # %entry480; RV64I-NEXT:    addi sp, sp, -16481; RV64I-NEXT:    .cfi_def_cfa_offset 16482; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill483; RV64I-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill484; RV64I-NEXT:    .cfi_offset ra, -8485; RV64I-NEXT:    .cfi_offset s0, -16486; RV64I-NEXT:    addi s0, sp, 16487; RV64I-NEXT:    .cfi_def_cfa s0, 0488; RV64I-NEXT:    slli a0, a0, 32489; RV64I-NEXT:    srli a0, a0, 32490; RV64I-NEXT:    addi a0, a0, 15491; RV64I-NEXT:    andi a0, a0, -16492; RV64I-NEXT:    sub a0, sp, a0493; RV64I-NEXT:    mv sp, a0494; RV64I-NEXT:    call callee_void495; RV64I-NEXT:    li a0, -1496; RV64I-NEXT:    addi sp, s0, -16497; RV64I-NEXT:    .cfi_def_cfa sp, 16498; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload499; RV64I-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload500; RV64I-NEXT:    .cfi_restore ra501; RV64I-NEXT:    .cfi_restore s0502; RV64I-NEXT:    addi sp, sp, 16503; RV64I-NEXT:    .cfi_def_cfa_offset 0504; RV64I-NEXT:    ret505entry:506  %0 = alloca i8, i32 %size, align 16507  call void @callee_void(ptr nonnull %0)508  ret i32 -1509}510 511define i32 @pushpopret2(i32 signext %size) {512; RV32IZCMP-LABEL: pushpopret2:513; RV32IZCMP:       # %bb.0: # %entry514; RV32IZCMP-NEXT:    cm.push {ra, s0}, -16515; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 16516; RV32IZCMP-NEXT:    .cfi_offset ra, -8517; RV32IZCMP-NEXT:    .cfi_offset s0, -4518; RV32IZCMP-NEXT:    addi s0, sp, 16519; RV32IZCMP-NEXT:    .cfi_def_cfa s0, 0520; RV32IZCMP-NEXT:    addi a0, a0, 15521; RV32IZCMP-NEXT:    andi a0, a0, -16522; RV32IZCMP-NEXT:    sub a0, sp, a0523; RV32IZCMP-NEXT:    mv sp, a0524; RV32IZCMP-NEXT:    call callee_void525; RV32IZCMP-NEXT:    li a0, 2526; RV32IZCMP-NEXT:    addi sp, s0, -16527; RV32IZCMP-NEXT:    .cfi_def_cfa sp, 16528; RV32IZCMP-NEXT:    cm.popret {ra, s0}, 16529;530; RV64IZCMP-LABEL: pushpopret2:531; RV64IZCMP:       # %bb.0: # %entry532; RV64IZCMP-NEXT:    cm.push {ra, s0}, -16533; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 16534; RV64IZCMP-NEXT:    .cfi_offset ra, -16535; RV64IZCMP-NEXT:    .cfi_offset s0, -8536; RV64IZCMP-NEXT:    addi s0, sp, 16537; RV64IZCMP-NEXT:    .cfi_def_cfa s0, 0538; RV64IZCMP-NEXT:    slli a0, a0, 32539; RV64IZCMP-NEXT:    srli a0, a0, 32540; RV64IZCMP-NEXT:    addi a0, a0, 15541; RV64IZCMP-NEXT:    andi a0, a0, -16542; RV64IZCMP-NEXT:    sub a0, sp, a0543; RV64IZCMP-NEXT:    mv sp, a0544; RV64IZCMP-NEXT:    call callee_void545; RV64IZCMP-NEXT:    li a0, 2546; RV64IZCMP-NEXT:    addi sp, s0, -16547; RV64IZCMP-NEXT:    .cfi_def_cfa sp, 16548; RV64IZCMP-NEXT:    cm.popret {ra, s0}, 16549;550; RV32IZCMP-SR-LABEL: pushpopret2:551; RV32IZCMP-SR:       # %bb.0: # %entry552; RV32IZCMP-SR-NEXT:    cm.push {ra, s0}, -16553; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 16554; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -8555; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -4556; RV32IZCMP-SR-NEXT:    addi s0, sp, 16557; RV32IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0558; RV32IZCMP-SR-NEXT:    addi a0, a0, 15559; RV32IZCMP-SR-NEXT:    andi a0, a0, -16560; RV32IZCMP-SR-NEXT:    sub a0, sp, a0561; RV32IZCMP-SR-NEXT:    mv sp, a0562; RV32IZCMP-SR-NEXT:    call callee_void563; RV32IZCMP-SR-NEXT:    li a0, 2564; RV32IZCMP-SR-NEXT:    addi sp, s0, -16565; RV32IZCMP-SR-NEXT:    .cfi_def_cfa sp, 16566; RV32IZCMP-SR-NEXT:    cm.popret {ra, s0}, 16567;568; RV64IZCMP-SR-LABEL: pushpopret2:569; RV64IZCMP-SR:       # %bb.0: # %entry570; RV64IZCMP-SR-NEXT:    cm.push {ra, s0}, -16571; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 16572; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -16573; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -8574; RV64IZCMP-SR-NEXT:    addi s0, sp, 16575; RV64IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0576; RV64IZCMP-SR-NEXT:    slli a0, a0, 32577; RV64IZCMP-SR-NEXT:    srli a0, a0, 32578; RV64IZCMP-SR-NEXT:    addi a0, a0, 15579; RV64IZCMP-SR-NEXT:    andi a0, a0, -16580; RV64IZCMP-SR-NEXT:    sub a0, sp, a0581; RV64IZCMP-SR-NEXT:    mv sp, a0582; RV64IZCMP-SR-NEXT:    call callee_void583; RV64IZCMP-SR-NEXT:    li a0, 2584; RV64IZCMP-SR-NEXT:    addi sp, s0, -16585; RV64IZCMP-SR-NEXT:    .cfi_def_cfa sp, 16586; RV64IZCMP-SR-NEXT:    cm.popret {ra, s0}, 16587;588; RV32I-LABEL: pushpopret2:589; RV32I:       # %bb.0: # %entry590; RV32I-NEXT:    addi sp, sp, -16591; RV32I-NEXT:    .cfi_def_cfa_offset 16592; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill593; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill594; RV32I-NEXT:    .cfi_offset ra, -4595; RV32I-NEXT:    .cfi_offset s0, -8596; RV32I-NEXT:    addi s0, sp, 16597; RV32I-NEXT:    .cfi_def_cfa s0, 0598; RV32I-NEXT:    addi a0, a0, 15599; RV32I-NEXT:    andi a0, a0, -16600; RV32I-NEXT:    sub a0, sp, a0601; RV32I-NEXT:    mv sp, a0602; RV32I-NEXT:    call callee_void603; RV32I-NEXT:    li a0, 2604; RV32I-NEXT:    addi sp, s0, -16605; RV32I-NEXT:    .cfi_def_cfa sp, 16606; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload607; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload608; RV32I-NEXT:    .cfi_restore ra609; RV32I-NEXT:    .cfi_restore s0610; RV32I-NEXT:    addi sp, sp, 16611; RV32I-NEXT:    .cfi_def_cfa_offset 0612; RV32I-NEXT:    ret613;614; RV64I-LABEL: pushpopret2:615; RV64I:       # %bb.0: # %entry616; RV64I-NEXT:    addi sp, sp, -16617; RV64I-NEXT:    .cfi_def_cfa_offset 16618; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill619; RV64I-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill620; RV64I-NEXT:    .cfi_offset ra, -8621; RV64I-NEXT:    .cfi_offset s0, -16622; RV64I-NEXT:    addi s0, sp, 16623; RV64I-NEXT:    .cfi_def_cfa s0, 0624; RV64I-NEXT:    slli a0, a0, 32625; RV64I-NEXT:    srli a0, a0, 32626; RV64I-NEXT:    addi a0, a0, 15627; RV64I-NEXT:    andi a0, a0, -16628; RV64I-NEXT:    sub a0, sp, a0629; RV64I-NEXT:    mv sp, a0630; RV64I-NEXT:    call callee_void631; RV64I-NEXT:    li a0, 2632; RV64I-NEXT:    addi sp, s0, -16633; RV64I-NEXT:    .cfi_def_cfa sp, 16634; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload635; RV64I-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload636; RV64I-NEXT:    .cfi_restore ra637; RV64I-NEXT:    .cfi_restore s0638; RV64I-NEXT:    addi sp, sp, 16639; RV64I-NEXT:    .cfi_def_cfa_offset 0640; RV64I-NEXT:    ret641entry:642  %0 = alloca i8, i32 %size, align 16643  call void @callee_void(ptr nonnull %0)644  ret i32 2645}646 647define dso_local i32 @tailcall(i32 signext %size) local_unnamed_addr #0 {648; RV32IZCMP-LABEL: tailcall:649; RV32IZCMP:       # %bb.0: # %entry650; RV32IZCMP-NEXT:    cm.push {ra, s0}, -16651; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 16652; RV32IZCMP-NEXT:    .cfi_offset ra, -8653; RV32IZCMP-NEXT:    .cfi_offset s0, -4654; RV32IZCMP-NEXT:    addi s0, sp, 16655; RV32IZCMP-NEXT:    .cfi_def_cfa s0, 0656; RV32IZCMP-NEXT:    addi a0, a0, 15657; RV32IZCMP-NEXT:    andi a0, a0, -16658; RV32IZCMP-NEXT:    sub a0, sp, a0659; RV32IZCMP-NEXT:    mv sp, a0660; RV32IZCMP-NEXT:    addi sp, s0, -16661; RV32IZCMP-NEXT:    .cfi_def_cfa sp, 16662; RV32IZCMP-NEXT:    cm.pop {ra, s0}, 16663; RV32IZCMP-NEXT:    .cfi_restore ra664; RV32IZCMP-NEXT:    .cfi_restore s0665; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 0666; RV32IZCMP-NEXT:    tail callee667;668; RV64IZCMP-LABEL: tailcall:669; RV64IZCMP:       # %bb.0: # %entry670; RV64IZCMP-NEXT:    cm.push {ra, s0}, -16671; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 16672; RV64IZCMP-NEXT:    .cfi_offset ra, -16673; RV64IZCMP-NEXT:    .cfi_offset s0, -8674; RV64IZCMP-NEXT:    addi s0, sp, 16675; RV64IZCMP-NEXT:    .cfi_def_cfa s0, 0676; RV64IZCMP-NEXT:    slli a0, a0, 32677; RV64IZCMP-NEXT:    srli a0, a0, 32678; RV64IZCMP-NEXT:    addi a0, a0, 15679; RV64IZCMP-NEXT:    andi a0, a0, -16680; RV64IZCMP-NEXT:    sub a0, sp, a0681; RV64IZCMP-NEXT:    mv sp, a0682; RV64IZCMP-NEXT:    addi sp, s0, -16683; RV64IZCMP-NEXT:    .cfi_def_cfa sp, 16684; RV64IZCMP-NEXT:    cm.pop {ra, s0}, 16685; RV64IZCMP-NEXT:    .cfi_restore ra686; RV64IZCMP-NEXT:    .cfi_restore s0687; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 0688; RV64IZCMP-NEXT:    tail callee689;690; RV32IZCMP-SR-LABEL: tailcall:691; RV32IZCMP-SR:       # %bb.0: # %entry692; RV32IZCMP-SR-NEXT:    cm.push {ra, s0}, -16693; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 16694; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -8695; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -4696; RV32IZCMP-SR-NEXT:    addi s0, sp, 16697; RV32IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0698; RV32IZCMP-SR-NEXT:    addi a0, a0, 15699; RV32IZCMP-SR-NEXT:    andi a0, a0, -16700; RV32IZCMP-SR-NEXT:    sub a0, sp, a0701; RV32IZCMP-SR-NEXT:    mv sp, a0702; RV32IZCMP-SR-NEXT:    addi sp, s0, -16703; RV32IZCMP-SR-NEXT:    .cfi_def_cfa sp, 16704; RV32IZCMP-SR-NEXT:    cm.pop {ra, s0}, 16705; RV32IZCMP-SR-NEXT:    .cfi_restore ra706; RV32IZCMP-SR-NEXT:    .cfi_restore s0707; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 0708; RV32IZCMP-SR-NEXT:    tail callee709;710; RV64IZCMP-SR-LABEL: tailcall:711; RV64IZCMP-SR:       # %bb.0: # %entry712; RV64IZCMP-SR-NEXT:    cm.push {ra, s0}, -16713; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 16714; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -16715; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -8716; RV64IZCMP-SR-NEXT:    addi s0, sp, 16717; RV64IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0718; RV64IZCMP-SR-NEXT:    slli a0, a0, 32719; RV64IZCMP-SR-NEXT:    srli a0, a0, 32720; RV64IZCMP-SR-NEXT:    addi a0, a0, 15721; RV64IZCMP-SR-NEXT:    andi a0, a0, -16722; RV64IZCMP-SR-NEXT:    sub a0, sp, a0723; RV64IZCMP-SR-NEXT:    mv sp, a0724; RV64IZCMP-SR-NEXT:    addi sp, s0, -16725; RV64IZCMP-SR-NEXT:    .cfi_def_cfa sp, 16726; RV64IZCMP-SR-NEXT:    cm.pop {ra, s0}, 16727; RV64IZCMP-SR-NEXT:    .cfi_restore ra728; RV64IZCMP-SR-NEXT:    .cfi_restore s0729; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 0730; RV64IZCMP-SR-NEXT:    tail callee731;732; RV32I-LABEL: tailcall:733; RV32I:       # %bb.0: # %entry734; RV32I-NEXT:    addi sp, sp, -16735; RV32I-NEXT:    .cfi_def_cfa_offset 16736; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill737; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill738; RV32I-NEXT:    .cfi_offset ra, -4739; RV32I-NEXT:    .cfi_offset s0, -8740; RV32I-NEXT:    addi s0, sp, 16741; RV32I-NEXT:    .cfi_def_cfa s0, 0742; RV32I-NEXT:    addi a0, a0, 15743; RV32I-NEXT:    andi a0, a0, -16744; RV32I-NEXT:    sub a0, sp, a0745; RV32I-NEXT:    mv sp, a0746; RV32I-NEXT:    addi sp, s0, -16747; RV32I-NEXT:    .cfi_def_cfa sp, 16748; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload749; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload750; RV32I-NEXT:    .cfi_restore ra751; RV32I-NEXT:    .cfi_restore s0752; RV32I-NEXT:    addi sp, sp, 16753; RV32I-NEXT:    .cfi_def_cfa_offset 0754; RV32I-NEXT:    tail callee755;756; RV64I-LABEL: tailcall:757; RV64I:       # %bb.0: # %entry758; RV64I-NEXT:    addi sp, sp, -16759; RV64I-NEXT:    .cfi_def_cfa_offset 16760; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill761; RV64I-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill762; RV64I-NEXT:    .cfi_offset ra, -8763; RV64I-NEXT:    .cfi_offset s0, -16764; RV64I-NEXT:    addi s0, sp, 16765; RV64I-NEXT:    .cfi_def_cfa s0, 0766; RV64I-NEXT:    slli a0, a0, 32767; RV64I-NEXT:    srli a0, a0, 32768; RV64I-NEXT:    addi a0, a0, 15769; RV64I-NEXT:    andi a0, a0, -16770; RV64I-NEXT:    sub a0, sp, a0771; RV64I-NEXT:    mv sp, a0772; RV64I-NEXT:    addi sp, s0, -16773; RV64I-NEXT:    .cfi_def_cfa sp, 16774; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload775; RV64I-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload776; RV64I-NEXT:    .cfi_restore ra777; RV64I-NEXT:    .cfi_restore s0778; RV64I-NEXT:    addi sp, sp, 16779; RV64I-NEXT:    .cfi_def_cfa_offset 0780; RV64I-NEXT:    tail callee781entry:782  %0 = alloca i8, i32 %size, align 16783  %1 = tail call i32 @callee(ptr nonnull %0)784  ret i32 %1785}786 787@var = global [5 x i32] zeroinitializer788define i32 @nocompress(i32 signext %size) {789; RV32IZCMP-LABEL: nocompress:790; RV32IZCMP:       # %bb.0: # %entry791; RV32IZCMP-NEXT:    cm.push {ra, s0-s7}, -48792; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 48793; RV32IZCMP-NEXT:    .cfi_offset ra, -36794; RV32IZCMP-NEXT:    .cfi_offset s0, -32795; RV32IZCMP-NEXT:    .cfi_offset s1, -28796; RV32IZCMP-NEXT:    .cfi_offset s2, -24797; RV32IZCMP-NEXT:    .cfi_offset s3, -20798; RV32IZCMP-NEXT:    .cfi_offset s4, -16799; RV32IZCMP-NEXT:    .cfi_offset s5, -12800; RV32IZCMP-NEXT:    .cfi_offset s6, -8801; RV32IZCMP-NEXT:    .cfi_offset s7, -4802; RV32IZCMP-NEXT:    addi s0, sp, 48803; RV32IZCMP-NEXT:    .cfi_def_cfa s0, 0804; RV32IZCMP-NEXT:    addi a0, a0, 15805; RV32IZCMP-NEXT:    andi a0, a0, -16806; RV32IZCMP-NEXT:    sub s2, sp, a0807; RV32IZCMP-NEXT:    mv sp, s2808; RV32IZCMP-NEXT:    lui s1, %hi(var)809; RV32IZCMP-NEXT:    addi s1, s1, %lo(var)810; RV32IZCMP-NEXT:    lw s3, 0(s1)811; RV32IZCMP-NEXT:    lw s4, 4(s1)812; RV32IZCMP-NEXT:    lw s5, 8(s1)813; RV32IZCMP-NEXT:    lw s6, 12(s1)814; RV32IZCMP-NEXT:    lw s7, 16(s1)815; RV32IZCMP-NEXT:    mv a0, s2816; RV32IZCMP-NEXT:    call callee_void817; RV32IZCMP-NEXT:    sw s7, 16(s1)818; RV32IZCMP-NEXT:    sw s6, 12(s1)819; RV32IZCMP-NEXT:    sw s5, 8(s1)820; RV32IZCMP-NEXT:    sw s4, 4(s1)821; RV32IZCMP-NEXT:    sw s3, 0(s1)822; RV32IZCMP-NEXT:    mv a0, s2823; RV32IZCMP-NEXT:    addi sp, s0, -48824; RV32IZCMP-NEXT:    .cfi_def_cfa sp, 48825; RV32IZCMP-NEXT:    cm.pop {ra, s0-s7}, 48826; RV32IZCMP-NEXT:    .cfi_restore ra827; RV32IZCMP-NEXT:    .cfi_restore s0828; RV32IZCMP-NEXT:    .cfi_restore s1829; RV32IZCMP-NEXT:    .cfi_restore s2830; RV32IZCMP-NEXT:    .cfi_restore s3831; RV32IZCMP-NEXT:    .cfi_restore s4832; RV32IZCMP-NEXT:    .cfi_restore s5833; RV32IZCMP-NEXT:    .cfi_restore s6834; RV32IZCMP-NEXT:    .cfi_restore s7835; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 0836; RV32IZCMP-NEXT:    tail callee837;838; RV64IZCMP-LABEL: nocompress:839; RV64IZCMP:       # %bb.0: # %entry840; RV64IZCMP-NEXT:    cm.push {ra, s0-s7}, -80841; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 80842; RV64IZCMP-NEXT:    .cfi_offset ra, -72843; RV64IZCMP-NEXT:    .cfi_offset s0, -64844; RV64IZCMP-NEXT:    .cfi_offset s1, -56845; RV64IZCMP-NEXT:    .cfi_offset s2, -48846; RV64IZCMP-NEXT:    .cfi_offset s3, -40847; RV64IZCMP-NEXT:    .cfi_offset s4, -32848; RV64IZCMP-NEXT:    .cfi_offset s5, -24849; RV64IZCMP-NEXT:    .cfi_offset s6, -16850; RV64IZCMP-NEXT:    .cfi_offset s7, -8851; RV64IZCMP-NEXT:    addi s0, sp, 80852; RV64IZCMP-NEXT:    .cfi_def_cfa s0, 0853; RV64IZCMP-NEXT:    slli a0, a0, 32854; RV64IZCMP-NEXT:    srli a0, a0, 32855; RV64IZCMP-NEXT:    addi a0, a0, 15856; RV64IZCMP-NEXT:    andi a0, a0, -16857; RV64IZCMP-NEXT:    sub s2, sp, a0858; RV64IZCMP-NEXT:    mv sp, s2859; RV64IZCMP-NEXT:    lui s1, %hi(var)860; RV64IZCMP-NEXT:    addi s1, s1, %lo(var)861; RV64IZCMP-NEXT:    lw s3, 0(s1)862; RV64IZCMP-NEXT:    lw s4, 4(s1)863; RV64IZCMP-NEXT:    lw s5, 8(s1)864; RV64IZCMP-NEXT:    lw s6, 12(s1)865; RV64IZCMP-NEXT:    lw s7, 16(s1)866; RV64IZCMP-NEXT:    mv a0, s2867; RV64IZCMP-NEXT:    call callee_void868; RV64IZCMP-NEXT:    sw s7, 16(s1)869; RV64IZCMP-NEXT:    sw s6, 12(s1)870; RV64IZCMP-NEXT:    sw s5, 8(s1)871; RV64IZCMP-NEXT:    sw s4, 4(s1)872; RV64IZCMP-NEXT:    sw s3, 0(s1)873; RV64IZCMP-NEXT:    mv a0, s2874; RV64IZCMP-NEXT:    addi sp, s0, -80875; RV64IZCMP-NEXT:    .cfi_def_cfa sp, 80876; RV64IZCMP-NEXT:    cm.pop {ra, s0-s7}, 80877; RV64IZCMP-NEXT:    .cfi_restore ra878; RV64IZCMP-NEXT:    .cfi_restore s0879; RV64IZCMP-NEXT:    .cfi_restore s1880; RV64IZCMP-NEXT:    .cfi_restore s2881; RV64IZCMP-NEXT:    .cfi_restore s3882; RV64IZCMP-NEXT:    .cfi_restore s4883; RV64IZCMP-NEXT:    .cfi_restore s5884; RV64IZCMP-NEXT:    .cfi_restore s6885; RV64IZCMP-NEXT:    .cfi_restore s7886; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 0887; RV64IZCMP-NEXT:    tail callee888;889; RV32IZCMP-SR-LABEL: nocompress:890; RV32IZCMP-SR:       # %bb.0: # %entry891; RV32IZCMP-SR-NEXT:    cm.push {ra, s0-s7}, -48892; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 48893; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -36894; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -32895; RV32IZCMP-SR-NEXT:    .cfi_offset s1, -28896; RV32IZCMP-SR-NEXT:    .cfi_offset s2, -24897; RV32IZCMP-SR-NEXT:    .cfi_offset s3, -20898; RV32IZCMP-SR-NEXT:    .cfi_offset s4, -16899; RV32IZCMP-SR-NEXT:    .cfi_offset s5, -12900; RV32IZCMP-SR-NEXT:    .cfi_offset s6, -8901; RV32IZCMP-SR-NEXT:    .cfi_offset s7, -4902; RV32IZCMP-SR-NEXT:    addi s0, sp, 48903; RV32IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0904; RV32IZCMP-SR-NEXT:    addi a0, a0, 15905; RV32IZCMP-SR-NEXT:    andi a0, a0, -16906; RV32IZCMP-SR-NEXT:    sub s2, sp, a0907; RV32IZCMP-SR-NEXT:    mv sp, s2908; RV32IZCMP-SR-NEXT:    lui s1, %hi(var)909; RV32IZCMP-SR-NEXT:    addi s1, s1, %lo(var)910; RV32IZCMP-SR-NEXT:    lw s3, 0(s1)911; RV32IZCMP-SR-NEXT:    lw s4, 4(s1)912; RV32IZCMP-SR-NEXT:    lw s5, 8(s1)913; RV32IZCMP-SR-NEXT:    lw s6, 12(s1)914; RV32IZCMP-SR-NEXT:    lw s7, 16(s1)915; RV32IZCMP-SR-NEXT:    mv a0, s2916; RV32IZCMP-SR-NEXT:    call callee_void917; RV32IZCMP-SR-NEXT:    sw s7, 16(s1)918; RV32IZCMP-SR-NEXT:    sw s6, 12(s1)919; RV32IZCMP-SR-NEXT:    sw s5, 8(s1)920; RV32IZCMP-SR-NEXT:    sw s4, 4(s1)921; RV32IZCMP-SR-NEXT:    sw s3, 0(s1)922; RV32IZCMP-SR-NEXT:    mv a0, s2923; RV32IZCMP-SR-NEXT:    addi sp, s0, -48924; RV32IZCMP-SR-NEXT:    .cfi_def_cfa sp, 48925; RV32IZCMP-SR-NEXT:    cm.pop {ra, s0-s7}, 48926; RV32IZCMP-SR-NEXT:    .cfi_restore ra927; RV32IZCMP-SR-NEXT:    .cfi_restore s0928; RV32IZCMP-SR-NEXT:    .cfi_restore s1929; RV32IZCMP-SR-NEXT:    .cfi_restore s2930; RV32IZCMP-SR-NEXT:    .cfi_restore s3931; RV32IZCMP-SR-NEXT:    .cfi_restore s4932; RV32IZCMP-SR-NEXT:    .cfi_restore s5933; RV32IZCMP-SR-NEXT:    .cfi_restore s6934; RV32IZCMP-SR-NEXT:    .cfi_restore s7935; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 0936; RV32IZCMP-SR-NEXT:    tail callee937;938; RV64IZCMP-SR-LABEL: nocompress:939; RV64IZCMP-SR:       # %bb.0: # %entry940; RV64IZCMP-SR-NEXT:    cm.push {ra, s0-s7}, -80941; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 80942; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -72943; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -64944; RV64IZCMP-SR-NEXT:    .cfi_offset s1, -56945; RV64IZCMP-SR-NEXT:    .cfi_offset s2, -48946; RV64IZCMP-SR-NEXT:    .cfi_offset s3, -40947; RV64IZCMP-SR-NEXT:    .cfi_offset s4, -32948; RV64IZCMP-SR-NEXT:    .cfi_offset s5, -24949; RV64IZCMP-SR-NEXT:    .cfi_offset s6, -16950; RV64IZCMP-SR-NEXT:    .cfi_offset s7, -8951; RV64IZCMP-SR-NEXT:    addi s0, sp, 80952; RV64IZCMP-SR-NEXT:    .cfi_def_cfa s0, 0953; RV64IZCMP-SR-NEXT:    slli a0, a0, 32954; RV64IZCMP-SR-NEXT:    srli a0, a0, 32955; RV64IZCMP-SR-NEXT:    addi a0, a0, 15956; RV64IZCMP-SR-NEXT:    andi a0, a0, -16957; RV64IZCMP-SR-NEXT:    sub s2, sp, a0958; RV64IZCMP-SR-NEXT:    mv sp, s2959; RV64IZCMP-SR-NEXT:    lui s1, %hi(var)960; RV64IZCMP-SR-NEXT:    addi s1, s1, %lo(var)961; RV64IZCMP-SR-NEXT:    lw s3, 0(s1)962; RV64IZCMP-SR-NEXT:    lw s4, 4(s1)963; RV64IZCMP-SR-NEXT:    lw s5, 8(s1)964; RV64IZCMP-SR-NEXT:    lw s6, 12(s1)965; RV64IZCMP-SR-NEXT:    lw s7, 16(s1)966; RV64IZCMP-SR-NEXT:    mv a0, s2967; RV64IZCMP-SR-NEXT:    call callee_void968; RV64IZCMP-SR-NEXT:    sw s7, 16(s1)969; RV64IZCMP-SR-NEXT:    sw s6, 12(s1)970; RV64IZCMP-SR-NEXT:    sw s5, 8(s1)971; RV64IZCMP-SR-NEXT:    sw s4, 4(s1)972; RV64IZCMP-SR-NEXT:    sw s3, 0(s1)973; RV64IZCMP-SR-NEXT:    mv a0, s2974; RV64IZCMP-SR-NEXT:    addi sp, s0, -80975; RV64IZCMP-SR-NEXT:    .cfi_def_cfa sp, 80976; RV64IZCMP-SR-NEXT:    cm.pop {ra, s0-s7}, 80977; RV64IZCMP-SR-NEXT:    .cfi_restore ra978; RV64IZCMP-SR-NEXT:    .cfi_restore s0979; RV64IZCMP-SR-NEXT:    .cfi_restore s1980; RV64IZCMP-SR-NEXT:    .cfi_restore s2981; RV64IZCMP-SR-NEXT:    .cfi_restore s3982; RV64IZCMP-SR-NEXT:    .cfi_restore s4983; RV64IZCMP-SR-NEXT:    .cfi_restore s5984; RV64IZCMP-SR-NEXT:    .cfi_restore s6985; RV64IZCMP-SR-NEXT:    .cfi_restore s7986; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 0987; RV64IZCMP-SR-NEXT:    tail callee988;989; RV32I-LABEL: nocompress:990; RV32I:       # %bb.0: # %entry991; RV32I-NEXT:    addi sp, sp, -48992; RV32I-NEXT:    .cfi_def_cfa_offset 48993; RV32I-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill994; RV32I-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill995; RV32I-NEXT:    sw s1, 36(sp) # 4-byte Folded Spill996; RV32I-NEXT:    sw s2, 32(sp) # 4-byte Folded Spill997; RV32I-NEXT:    sw s3, 28(sp) # 4-byte Folded Spill998; RV32I-NEXT:    sw s4, 24(sp) # 4-byte Folded Spill999; RV32I-NEXT:    sw s5, 20(sp) # 4-byte Folded Spill1000; RV32I-NEXT:    sw s6, 16(sp) # 4-byte Folded Spill1001; RV32I-NEXT:    sw s7, 12(sp) # 4-byte Folded Spill1002; RV32I-NEXT:    .cfi_offset ra, -41003; RV32I-NEXT:    .cfi_offset s0, -81004; RV32I-NEXT:    .cfi_offset s1, -121005; RV32I-NEXT:    .cfi_offset s2, -161006; RV32I-NEXT:    .cfi_offset s3, -201007; RV32I-NEXT:    .cfi_offset s4, -241008; RV32I-NEXT:    .cfi_offset s5, -281009; RV32I-NEXT:    .cfi_offset s6, -321010; RV32I-NEXT:    .cfi_offset s7, -361011; RV32I-NEXT:    addi s0, sp, 481012; RV32I-NEXT:    .cfi_def_cfa s0, 01013; RV32I-NEXT:    addi a0, a0, 151014; RV32I-NEXT:    andi a0, a0, -161015; RV32I-NEXT:    sub s1, sp, a01016; RV32I-NEXT:    mv sp, s11017; RV32I-NEXT:    lui s2, %hi(var)1018; RV32I-NEXT:    addi s2, s2, %lo(var)1019; RV32I-NEXT:    lw s3, 0(s2)1020; RV32I-NEXT:    lw s4, 4(s2)1021; RV32I-NEXT:    lw s5, 8(s2)1022; RV32I-NEXT:    lw s6, 12(s2)1023; RV32I-NEXT:    lw s7, 16(s2)1024; RV32I-NEXT:    mv a0, s11025; RV32I-NEXT:    call callee_void1026; RV32I-NEXT:    sw s7, 16(s2)1027; RV32I-NEXT:    sw s6, 12(s2)1028; RV32I-NEXT:    sw s5, 8(s2)1029; RV32I-NEXT:    sw s4, 4(s2)1030; RV32I-NEXT:    sw s3, 0(s2)1031; RV32I-NEXT:    mv a0, s11032; RV32I-NEXT:    addi sp, s0, -481033; RV32I-NEXT:    .cfi_def_cfa sp, 481034; RV32I-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1035; RV32I-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1036; RV32I-NEXT:    lw s1, 36(sp) # 4-byte Folded Reload1037; RV32I-NEXT:    lw s2, 32(sp) # 4-byte Folded Reload1038; RV32I-NEXT:    lw s3, 28(sp) # 4-byte Folded Reload1039; RV32I-NEXT:    lw s4, 24(sp) # 4-byte Folded Reload1040; RV32I-NEXT:    lw s5, 20(sp) # 4-byte Folded Reload1041; RV32I-NEXT:    lw s6, 16(sp) # 4-byte Folded Reload1042; RV32I-NEXT:    lw s7, 12(sp) # 4-byte Folded Reload1043; RV32I-NEXT:    .cfi_restore ra1044; RV32I-NEXT:    .cfi_restore s01045; RV32I-NEXT:    .cfi_restore s11046; RV32I-NEXT:    .cfi_restore s21047; RV32I-NEXT:    .cfi_restore s31048; RV32I-NEXT:    .cfi_restore s41049; RV32I-NEXT:    .cfi_restore s51050; RV32I-NEXT:    .cfi_restore s61051; RV32I-NEXT:    .cfi_restore s71052; RV32I-NEXT:    addi sp, sp, 481053; RV32I-NEXT:    .cfi_def_cfa_offset 01054; RV32I-NEXT:    tail callee1055;1056; RV64I-LABEL: nocompress:1057; RV64I:       # %bb.0: # %entry1058; RV64I-NEXT:    addi sp, sp, -801059; RV64I-NEXT:    .cfi_def_cfa_offset 801060; RV64I-NEXT:    sd ra, 72(sp) # 8-byte Folded Spill1061; RV64I-NEXT:    sd s0, 64(sp) # 8-byte Folded Spill1062; RV64I-NEXT:    sd s1, 56(sp) # 8-byte Folded Spill1063; RV64I-NEXT:    sd s2, 48(sp) # 8-byte Folded Spill1064; RV64I-NEXT:    sd s3, 40(sp) # 8-byte Folded Spill1065; RV64I-NEXT:    sd s4, 32(sp) # 8-byte Folded Spill1066; RV64I-NEXT:    sd s5, 24(sp) # 8-byte Folded Spill1067; RV64I-NEXT:    sd s6, 16(sp) # 8-byte Folded Spill1068; RV64I-NEXT:    sd s7, 8(sp) # 8-byte Folded Spill1069; RV64I-NEXT:    .cfi_offset ra, -81070; RV64I-NEXT:    .cfi_offset s0, -161071; RV64I-NEXT:    .cfi_offset s1, -241072; RV64I-NEXT:    .cfi_offset s2, -321073; RV64I-NEXT:    .cfi_offset s3, -401074; RV64I-NEXT:    .cfi_offset s4, -481075; RV64I-NEXT:    .cfi_offset s5, -561076; RV64I-NEXT:    .cfi_offset s6, -641077; RV64I-NEXT:    .cfi_offset s7, -721078; RV64I-NEXT:    addi s0, sp, 801079; RV64I-NEXT:    .cfi_def_cfa s0, 01080; RV64I-NEXT:    slli a0, a0, 321081; RV64I-NEXT:    srli a0, a0, 321082; RV64I-NEXT:    addi a0, a0, 151083; RV64I-NEXT:    andi a0, a0, -161084; RV64I-NEXT:    sub s1, sp, a01085; RV64I-NEXT:    mv sp, s11086; RV64I-NEXT:    lui s2, %hi(var)1087; RV64I-NEXT:    addi s2, s2, %lo(var)1088; RV64I-NEXT:    lw s3, 0(s2)1089; RV64I-NEXT:    lw s4, 4(s2)1090; RV64I-NEXT:    lw s5, 8(s2)1091; RV64I-NEXT:    lw s6, 12(s2)1092; RV64I-NEXT:    lw s7, 16(s2)1093; RV64I-NEXT:    mv a0, s11094; RV64I-NEXT:    call callee_void1095; RV64I-NEXT:    sw s7, 16(s2)1096; RV64I-NEXT:    sw s6, 12(s2)1097; RV64I-NEXT:    sw s5, 8(s2)1098; RV64I-NEXT:    sw s4, 4(s2)1099; RV64I-NEXT:    sw s3, 0(s2)1100; RV64I-NEXT:    mv a0, s11101; RV64I-NEXT:    addi sp, s0, -801102; RV64I-NEXT:    .cfi_def_cfa sp, 801103; RV64I-NEXT:    ld ra, 72(sp) # 8-byte Folded Reload1104; RV64I-NEXT:    ld s0, 64(sp) # 8-byte Folded Reload1105; RV64I-NEXT:    ld s1, 56(sp) # 8-byte Folded Reload1106; RV64I-NEXT:    ld s2, 48(sp) # 8-byte Folded Reload1107; RV64I-NEXT:    ld s3, 40(sp) # 8-byte Folded Reload1108; RV64I-NEXT:    ld s4, 32(sp) # 8-byte Folded Reload1109; RV64I-NEXT:    ld s5, 24(sp) # 8-byte Folded Reload1110; RV64I-NEXT:    ld s6, 16(sp) # 8-byte Folded Reload1111; RV64I-NEXT:    ld s7, 8(sp) # 8-byte Folded Reload1112; RV64I-NEXT:    .cfi_restore ra1113; RV64I-NEXT:    .cfi_restore s01114; RV64I-NEXT:    .cfi_restore s11115; RV64I-NEXT:    .cfi_restore s21116; RV64I-NEXT:    .cfi_restore s31117; RV64I-NEXT:    .cfi_restore s41118; RV64I-NEXT:    .cfi_restore s51119; RV64I-NEXT:    .cfi_restore s61120; RV64I-NEXT:    .cfi_restore s71121; RV64I-NEXT:    addi sp, sp, 801122; RV64I-NEXT:    .cfi_def_cfa_offset 01123; RV64I-NEXT:    tail callee1124entry:1125  %0 = alloca i8, i32 %size, align 161126  %val = load [5 x i32], ptr @var1127  call void @callee_void(ptr nonnull %0)1128  store volatile [5 x i32] %val, ptr @var1129  %1 = tail call i32 @callee(ptr nonnull %0)1130  ret i32 %11131}1132 1133; Check that functions with varargs do not use save/restore code1134 1135define i32 @varargs(ptr %fmt, ...) {1136; RV32IZCMP-LABEL: varargs:1137; RV32IZCMP:       # %bb.0:1138; RV32IZCMP-NEXT:    addi sp, sp, -481139; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 481140; RV32IZCMP-NEXT:    mv a0, a11141; RV32IZCMP-NEXT:    sw a5, 36(sp)1142; RV32IZCMP-NEXT:    sw a6, 40(sp)1143; RV32IZCMP-NEXT:    sw a7, 44(sp)1144; RV32IZCMP-NEXT:    sw a1, 20(sp)1145; RV32IZCMP-NEXT:    sw a2, 24(sp)1146; RV32IZCMP-NEXT:    sw a3, 28(sp)1147; RV32IZCMP-NEXT:    sw a4, 32(sp)1148; RV32IZCMP-NEXT:    addi a1, sp, 241149; RV32IZCMP-NEXT:    sw a1, 12(sp)1150; RV32IZCMP-NEXT:    addi sp, sp, 481151; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 01152; RV32IZCMP-NEXT:    ret1153;1154; RV64IZCMP-LABEL: varargs:1155; RV64IZCMP:       # %bb.0:1156; RV64IZCMP-NEXT:    addi sp, sp, -801157; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 801158; RV64IZCMP-NEXT:    sd a1, 24(sp)1159; RV64IZCMP-NEXT:    addi a0, sp, 281160; RV64IZCMP-NEXT:    sd a0, 8(sp)1161; RV64IZCMP-NEXT:    lw a0, 24(sp)1162; RV64IZCMP-NEXT:    sd a5, 56(sp)1163; RV64IZCMP-NEXT:    sd a6, 64(sp)1164; RV64IZCMP-NEXT:    sd a7, 72(sp)1165; RV64IZCMP-NEXT:    sd a2, 32(sp)1166; RV64IZCMP-NEXT:    sd a3, 40(sp)1167; RV64IZCMP-NEXT:    sd a4, 48(sp)1168; RV64IZCMP-NEXT:    addi sp, sp, 801169; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 01170; RV64IZCMP-NEXT:    ret1171;1172; RV32IZCMP-SR-LABEL: varargs:1173; RV32IZCMP-SR:       # %bb.0:1174; RV32IZCMP-SR-NEXT:    addi sp, sp, -481175; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 481176; RV32IZCMP-SR-NEXT:    mv a0, a11177; RV32IZCMP-SR-NEXT:    sw a5, 36(sp)1178; RV32IZCMP-SR-NEXT:    sw a6, 40(sp)1179; RV32IZCMP-SR-NEXT:    sw a7, 44(sp)1180; RV32IZCMP-SR-NEXT:    sw a1, 20(sp)1181; RV32IZCMP-SR-NEXT:    sw a2, 24(sp)1182; RV32IZCMP-SR-NEXT:    sw a3, 28(sp)1183; RV32IZCMP-SR-NEXT:    sw a4, 32(sp)1184; RV32IZCMP-SR-NEXT:    addi a1, sp, 241185; RV32IZCMP-SR-NEXT:    sw a1, 12(sp)1186; RV32IZCMP-SR-NEXT:    addi sp, sp, 481187; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 01188; RV32IZCMP-SR-NEXT:    ret1189;1190; RV64IZCMP-SR-LABEL: varargs:1191; RV64IZCMP-SR:       # %bb.0:1192; RV64IZCMP-SR-NEXT:    addi sp, sp, -801193; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 801194; RV64IZCMP-SR-NEXT:    sd a1, 24(sp)1195; RV64IZCMP-SR-NEXT:    addi a0, sp, 281196; RV64IZCMP-SR-NEXT:    sd a0, 8(sp)1197; RV64IZCMP-SR-NEXT:    lw a0, 24(sp)1198; RV64IZCMP-SR-NEXT:    sd a5, 56(sp)1199; RV64IZCMP-SR-NEXT:    sd a6, 64(sp)1200; RV64IZCMP-SR-NEXT:    sd a7, 72(sp)1201; RV64IZCMP-SR-NEXT:    sd a2, 32(sp)1202; RV64IZCMP-SR-NEXT:    sd a3, 40(sp)1203; RV64IZCMP-SR-NEXT:    sd a4, 48(sp)1204; RV64IZCMP-SR-NEXT:    addi sp, sp, 801205; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 01206; RV64IZCMP-SR-NEXT:    ret1207;1208; RV32I-LABEL: varargs:1209; RV32I:       # %bb.0:1210; RV32I-NEXT:    addi sp, sp, -481211; RV32I-NEXT:    .cfi_def_cfa_offset 481212; RV32I-NEXT:    mv a0, a11213; RV32I-NEXT:    sw a5, 36(sp)1214; RV32I-NEXT:    sw a6, 40(sp)1215; RV32I-NEXT:    sw a7, 44(sp)1216; RV32I-NEXT:    sw a1, 20(sp)1217; RV32I-NEXT:    sw a2, 24(sp)1218; RV32I-NEXT:    sw a3, 28(sp)1219; RV32I-NEXT:    sw a4, 32(sp)1220; RV32I-NEXT:    addi a1, sp, 241221; RV32I-NEXT:    sw a1, 12(sp)1222; RV32I-NEXT:    addi sp, sp, 481223; RV32I-NEXT:    .cfi_def_cfa_offset 01224; RV32I-NEXT:    ret1225;1226; RV64I-LABEL: varargs:1227; RV64I:       # %bb.0:1228; RV64I-NEXT:    addi sp, sp, -801229; RV64I-NEXT:    .cfi_def_cfa_offset 801230; RV64I-NEXT:    sd a1, 24(sp)1231; RV64I-NEXT:    addi a0, sp, 281232; RV64I-NEXT:    sd a0, 8(sp)1233; RV64I-NEXT:    lw a0, 24(sp)1234; RV64I-NEXT:    sd a5, 56(sp)1235; RV64I-NEXT:    sd a6, 64(sp)1236; RV64I-NEXT:    sd a7, 72(sp)1237; RV64I-NEXT:    sd a2, 32(sp)1238; RV64I-NEXT:    sd a3, 40(sp)1239; RV64I-NEXT:    sd a4, 48(sp)1240; RV64I-NEXT:    addi sp, sp, 801241; RV64I-NEXT:    .cfi_def_cfa_offset 01242; RV64I-NEXT:    ret1243  %va = alloca ptr1244  call void @llvm.va_start(ptr %va)1245  %argp.cur = load ptr, ptr %va1246  %argp.next = getelementptr inbounds i8, ptr %argp.cur, i32 41247  store ptr %argp.next, ptr %va1248  %1 = load i32, ptr %argp.cur1249  call void @llvm.va_end(ptr %va)1250  ret i32 %11251}1252 1253@var0 = global [18 x i32] zeroinitializer1254 1255define void @many_args(i32, i32, i32, i32, i32, i32, i32, i32, i32) {1256; RV32IZCMP-LABEL: many_args:1257; RV32IZCMP:       # %bb.0: # %entry1258; RV32IZCMP-NEXT:    cm.push {ra, s0-s3}, -321259; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 321260; RV32IZCMP-NEXT:    .cfi_offset s0, -161261; RV32IZCMP-NEXT:    .cfi_offset s1, -121262; RV32IZCMP-NEXT:    .cfi_offset s2, -81263; RV32IZCMP-NEXT:    .cfi_offset s3, -41264; RV32IZCMP-NEXT:    lui a0, %hi(var0)1265; RV32IZCMP-NEXT:    addi a0, a0, %lo(var0)1266; RV32IZCMP-NEXT:    lw a6, 0(a0)1267; RV32IZCMP-NEXT:    lw a7, 4(a0)1268; RV32IZCMP-NEXT:    lw t0, 8(a0)1269; RV32IZCMP-NEXT:    lw t1, 12(a0)1270; RV32IZCMP-NEXT:    lw t2, 16(a0)1271; RV32IZCMP-NEXT:    lw t3, 20(a0)1272; RV32IZCMP-NEXT:    lw t4, 24(a0)1273; RV32IZCMP-NEXT:    lw t5, 28(a0)1274; RV32IZCMP-NEXT:    lw t6, 48(a0)1275; RV32IZCMP-NEXT:    lw s2, 52(a0)1276; RV32IZCMP-NEXT:    lw a1, 56(a0)1277; RV32IZCMP-NEXT:    lw a2, 60(a0)1278; RV32IZCMP-NEXT:    lw a3, 64(a0)1279; RV32IZCMP-NEXT:    lw a4, 68(a0)1280; RV32IZCMP-NEXT:    lw s3, 32(a0)1281; RV32IZCMP-NEXT:    lw s1, 36(a0)1282; RV32IZCMP-NEXT:    lw a5, 40(a0)1283; RV32IZCMP-NEXT:    lw s0, 44(a0)1284; RV32IZCMP-NEXT:    sw a4, 68(a0)1285; RV32IZCMP-NEXT:    sw a3, 64(a0)1286; RV32IZCMP-NEXT:    sw a2, 60(a0)1287; RV32IZCMP-NEXT:    sw a1, 56(a0)1288; RV32IZCMP-NEXT:    sw s2, 52(a0)1289; RV32IZCMP-NEXT:    sw t6, 48(a0)1290; RV32IZCMP-NEXT:    sw s0, 44(a0)1291; RV32IZCMP-NEXT:    sw a5, 40(a0)1292; RV32IZCMP-NEXT:    sw s1, 36(a0)1293; RV32IZCMP-NEXT:    sw s3, 32(a0)1294; RV32IZCMP-NEXT:    sw t5, 28(a0)1295; RV32IZCMP-NEXT:    sw t4, 24(a0)1296; RV32IZCMP-NEXT:    sw t3, 20(a0)1297; RV32IZCMP-NEXT:    sw t2, 16(a0)1298; RV32IZCMP-NEXT:    sw t1, 12(a0)1299; RV32IZCMP-NEXT:    sw t0, 8(a0)1300; RV32IZCMP-NEXT:    sw a7, 4(a0)1301; RV32IZCMP-NEXT:    sw a6, 0(a0)1302; RV32IZCMP-NEXT:    cm.popret {ra, s0-s3}, 321303;1304; RV64IZCMP-LABEL: many_args:1305; RV64IZCMP:       # %bb.0: # %entry1306; RV64IZCMP-NEXT:    cm.push {ra, s0-s3}, -481307; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 481308; RV64IZCMP-NEXT:    .cfi_offset s0, -321309; RV64IZCMP-NEXT:    .cfi_offset s1, -241310; RV64IZCMP-NEXT:    .cfi_offset s2, -161311; RV64IZCMP-NEXT:    .cfi_offset s3, -81312; RV64IZCMP-NEXT:    lui a0, %hi(var0)1313; RV64IZCMP-NEXT:    addi a0, a0, %lo(var0)1314; RV64IZCMP-NEXT:    lw a6, 0(a0)1315; RV64IZCMP-NEXT:    lw a7, 4(a0)1316; RV64IZCMP-NEXT:    lw t0, 8(a0)1317; RV64IZCMP-NEXT:    lw t1, 12(a0)1318; RV64IZCMP-NEXT:    lw t2, 16(a0)1319; RV64IZCMP-NEXT:    lw t3, 20(a0)1320; RV64IZCMP-NEXT:    lw t4, 24(a0)1321; RV64IZCMP-NEXT:    lw t5, 28(a0)1322; RV64IZCMP-NEXT:    lw t6, 48(a0)1323; RV64IZCMP-NEXT:    lw s2, 52(a0)1324; RV64IZCMP-NEXT:    lw a1, 56(a0)1325; RV64IZCMP-NEXT:    lw a2, 60(a0)1326; RV64IZCMP-NEXT:    lw a3, 64(a0)1327; RV64IZCMP-NEXT:    lw a4, 68(a0)1328; RV64IZCMP-NEXT:    lw s3, 32(a0)1329; RV64IZCMP-NEXT:    lw s1, 36(a0)1330; RV64IZCMP-NEXT:    lw a5, 40(a0)1331; RV64IZCMP-NEXT:    lw s0, 44(a0)1332; RV64IZCMP-NEXT:    sw a4, 68(a0)1333; RV64IZCMP-NEXT:    sw a3, 64(a0)1334; RV64IZCMP-NEXT:    sw a2, 60(a0)1335; RV64IZCMP-NEXT:    sw a1, 56(a0)1336; RV64IZCMP-NEXT:    sw s2, 52(a0)1337; RV64IZCMP-NEXT:    sw t6, 48(a0)1338; RV64IZCMP-NEXT:    sw s0, 44(a0)1339; RV64IZCMP-NEXT:    sw a5, 40(a0)1340; RV64IZCMP-NEXT:    sw s1, 36(a0)1341; RV64IZCMP-NEXT:    sw s3, 32(a0)1342; RV64IZCMP-NEXT:    sw t5, 28(a0)1343; RV64IZCMP-NEXT:    sw t4, 24(a0)1344; RV64IZCMP-NEXT:    sw t3, 20(a0)1345; RV64IZCMP-NEXT:    sw t2, 16(a0)1346; RV64IZCMP-NEXT:    sw t1, 12(a0)1347; RV64IZCMP-NEXT:    sw t0, 8(a0)1348; RV64IZCMP-NEXT:    sw a7, 4(a0)1349; RV64IZCMP-NEXT:    sw a6, 0(a0)1350; RV64IZCMP-NEXT:    cm.popret {ra, s0-s3}, 481351;1352; RV32IZCMP-SR-LABEL: many_args:1353; RV32IZCMP-SR:       # %bb.0: # %entry1354; RV32IZCMP-SR-NEXT:    cm.push {ra, s0-s3}, -321355; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 321356; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -161357; RV32IZCMP-SR-NEXT:    .cfi_offset s1, -121358; RV32IZCMP-SR-NEXT:    .cfi_offset s2, -81359; RV32IZCMP-SR-NEXT:    .cfi_offset s3, -41360; RV32IZCMP-SR-NEXT:    lui a0, %hi(var0)1361; RV32IZCMP-SR-NEXT:    addi a0, a0, %lo(var0)1362; RV32IZCMP-SR-NEXT:    lw a6, 0(a0)1363; RV32IZCMP-SR-NEXT:    lw a7, 4(a0)1364; RV32IZCMP-SR-NEXT:    lw t0, 8(a0)1365; RV32IZCMP-SR-NEXT:    lw t1, 12(a0)1366; RV32IZCMP-SR-NEXT:    lw t2, 16(a0)1367; RV32IZCMP-SR-NEXT:    lw t3, 20(a0)1368; RV32IZCMP-SR-NEXT:    lw t4, 24(a0)1369; RV32IZCMP-SR-NEXT:    lw t5, 28(a0)1370; RV32IZCMP-SR-NEXT:    lw t6, 48(a0)1371; RV32IZCMP-SR-NEXT:    lw s2, 52(a0)1372; RV32IZCMP-SR-NEXT:    lw a1, 56(a0)1373; RV32IZCMP-SR-NEXT:    lw a2, 60(a0)1374; RV32IZCMP-SR-NEXT:    lw a3, 64(a0)1375; RV32IZCMP-SR-NEXT:    lw a4, 68(a0)1376; RV32IZCMP-SR-NEXT:    lw s3, 32(a0)1377; RV32IZCMP-SR-NEXT:    lw s1, 36(a0)1378; RV32IZCMP-SR-NEXT:    lw a5, 40(a0)1379; RV32IZCMP-SR-NEXT:    lw s0, 44(a0)1380; RV32IZCMP-SR-NEXT:    sw a4, 68(a0)1381; RV32IZCMP-SR-NEXT:    sw a3, 64(a0)1382; RV32IZCMP-SR-NEXT:    sw a2, 60(a0)1383; RV32IZCMP-SR-NEXT:    sw a1, 56(a0)1384; RV32IZCMP-SR-NEXT:    sw s2, 52(a0)1385; RV32IZCMP-SR-NEXT:    sw t6, 48(a0)1386; RV32IZCMP-SR-NEXT:    sw s0, 44(a0)1387; RV32IZCMP-SR-NEXT:    sw a5, 40(a0)1388; RV32IZCMP-SR-NEXT:    sw s1, 36(a0)1389; RV32IZCMP-SR-NEXT:    sw s3, 32(a0)1390; RV32IZCMP-SR-NEXT:    sw t5, 28(a0)1391; RV32IZCMP-SR-NEXT:    sw t4, 24(a0)1392; RV32IZCMP-SR-NEXT:    sw t3, 20(a0)1393; RV32IZCMP-SR-NEXT:    sw t2, 16(a0)1394; RV32IZCMP-SR-NEXT:    sw t1, 12(a0)1395; RV32IZCMP-SR-NEXT:    sw t0, 8(a0)1396; RV32IZCMP-SR-NEXT:    sw a7, 4(a0)1397; RV32IZCMP-SR-NEXT:    sw a6, 0(a0)1398; RV32IZCMP-SR-NEXT:    cm.popret {ra, s0-s3}, 321399;1400; RV64IZCMP-SR-LABEL: many_args:1401; RV64IZCMP-SR:       # %bb.0: # %entry1402; RV64IZCMP-SR-NEXT:    cm.push {ra, s0-s3}, -481403; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 481404; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -321405; RV64IZCMP-SR-NEXT:    .cfi_offset s1, -241406; RV64IZCMP-SR-NEXT:    .cfi_offset s2, -161407; RV64IZCMP-SR-NEXT:    .cfi_offset s3, -81408; RV64IZCMP-SR-NEXT:    lui a0, %hi(var0)1409; RV64IZCMP-SR-NEXT:    addi a0, a0, %lo(var0)1410; RV64IZCMP-SR-NEXT:    lw a6, 0(a0)1411; RV64IZCMP-SR-NEXT:    lw a7, 4(a0)1412; RV64IZCMP-SR-NEXT:    lw t0, 8(a0)1413; RV64IZCMP-SR-NEXT:    lw t1, 12(a0)1414; RV64IZCMP-SR-NEXT:    lw t2, 16(a0)1415; RV64IZCMP-SR-NEXT:    lw t3, 20(a0)1416; RV64IZCMP-SR-NEXT:    lw t4, 24(a0)1417; RV64IZCMP-SR-NEXT:    lw t5, 28(a0)1418; RV64IZCMP-SR-NEXT:    lw t6, 48(a0)1419; RV64IZCMP-SR-NEXT:    lw s2, 52(a0)1420; RV64IZCMP-SR-NEXT:    lw a1, 56(a0)1421; RV64IZCMP-SR-NEXT:    lw a2, 60(a0)1422; RV64IZCMP-SR-NEXT:    lw a3, 64(a0)1423; RV64IZCMP-SR-NEXT:    lw a4, 68(a0)1424; RV64IZCMP-SR-NEXT:    lw s3, 32(a0)1425; RV64IZCMP-SR-NEXT:    lw s1, 36(a0)1426; RV64IZCMP-SR-NEXT:    lw a5, 40(a0)1427; RV64IZCMP-SR-NEXT:    lw s0, 44(a0)1428; RV64IZCMP-SR-NEXT:    sw a4, 68(a0)1429; RV64IZCMP-SR-NEXT:    sw a3, 64(a0)1430; RV64IZCMP-SR-NEXT:    sw a2, 60(a0)1431; RV64IZCMP-SR-NEXT:    sw a1, 56(a0)1432; RV64IZCMP-SR-NEXT:    sw s2, 52(a0)1433; RV64IZCMP-SR-NEXT:    sw t6, 48(a0)1434; RV64IZCMP-SR-NEXT:    sw s0, 44(a0)1435; RV64IZCMP-SR-NEXT:    sw a5, 40(a0)1436; RV64IZCMP-SR-NEXT:    sw s1, 36(a0)1437; RV64IZCMP-SR-NEXT:    sw s3, 32(a0)1438; RV64IZCMP-SR-NEXT:    sw t5, 28(a0)1439; RV64IZCMP-SR-NEXT:    sw t4, 24(a0)1440; RV64IZCMP-SR-NEXT:    sw t3, 20(a0)1441; RV64IZCMP-SR-NEXT:    sw t2, 16(a0)1442; RV64IZCMP-SR-NEXT:    sw t1, 12(a0)1443; RV64IZCMP-SR-NEXT:    sw t0, 8(a0)1444; RV64IZCMP-SR-NEXT:    sw a7, 4(a0)1445; RV64IZCMP-SR-NEXT:    sw a6, 0(a0)1446; RV64IZCMP-SR-NEXT:    cm.popret {ra, s0-s3}, 481447;1448; RV32I-LABEL: many_args:1449; RV32I:       # %bb.0: # %entry1450; RV32I-NEXT:    addi sp, sp, -161451; RV32I-NEXT:    .cfi_def_cfa_offset 161452; RV32I-NEXT:    sw s0, 12(sp) # 4-byte Folded Spill1453; RV32I-NEXT:    sw s1, 8(sp) # 4-byte Folded Spill1454; RV32I-NEXT:    sw s2, 4(sp) # 4-byte Folded Spill1455; RV32I-NEXT:    sw s3, 0(sp) # 4-byte Folded Spill1456; RV32I-NEXT:    .cfi_offset s0, -41457; RV32I-NEXT:    .cfi_offset s1, -81458; RV32I-NEXT:    .cfi_offset s2, -121459; RV32I-NEXT:    .cfi_offset s3, -161460; RV32I-NEXT:    lui a0, %hi(var0)1461; RV32I-NEXT:    addi a0, a0, %lo(var0)1462; RV32I-NEXT:    lw a1, 0(a0)1463; RV32I-NEXT:    lw a2, 4(a0)1464; RV32I-NEXT:    lw a3, 8(a0)1465; RV32I-NEXT:    lw a4, 12(a0)1466; RV32I-NEXT:    lw a5, 16(a0)1467; RV32I-NEXT:    lw a6, 20(a0)1468; RV32I-NEXT:    lw a7, 24(a0)1469; RV32I-NEXT:    lw t0, 28(a0)1470; RV32I-NEXT:    lw t1, 48(a0)1471; RV32I-NEXT:    lw t2, 52(a0)1472; RV32I-NEXT:    lw t3, 56(a0)1473; RV32I-NEXT:    lw t4, 60(a0)1474; RV32I-NEXT:    lw t5, 64(a0)1475; RV32I-NEXT:    lw t6, 68(a0)1476; RV32I-NEXT:    lw s0, 32(a0)1477; RV32I-NEXT:    lw s1, 36(a0)1478; RV32I-NEXT:    lw s2, 40(a0)1479; RV32I-NEXT:    lw s3, 44(a0)1480; RV32I-NEXT:    sw t6, 68(a0)1481; RV32I-NEXT:    sw t5, 64(a0)1482; RV32I-NEXT:    sw t4, 60(a0)1483; RV32I-NEXT:    sw t3, 56(a0)1484; RV32I-NEXT:    sw t2, 52(a0)1485; RV32I-NEXT:    sw t1, 48(a0)1486; RV32I-NEXT:    sw s3, 44(a0)1487; RV32I-NEXT:    sw s2, 40(a0)1488; RV32I-NEXT:    sw s1, 36(a0)1489; RV32I-NEXT:    sw s0, 32(a0)1490; RV32I-NEXT:    sw t0, 28(a0)1491; RV32I-NEXT:    sw a7, 24(a0)1492; RV32I-NEXT:    sw a6, 20(a0)1493; RV32I-NEXT:    sw a5, 16(a0)1494; RV32I-NEXT:    sw a4, 12(a0)1495; RV32I-NEXT:    sw a3, 8(a0)1496; RV32I-NEXT:    sw a2, 4(a0)1497; RV32I-NEXT:    sw a1, 0(a0)1498; RV32I-NEXT:    lw s0, 12(sp) # 4-byte Folded Reload1499; RV32I-NEXT:    lw s1, 8(sp) # 4-byte Folded Reload1500; RV32I-NEXT:    lw s2, 4(sp) # 4-byte Folded Reload1501; RV32I-NEXT:    lw s3, 0(sp) # 4-byte Folded Reload1502; RV32I-NEXT:    .cfi_restore s01503; RV32I-NEXT:    .cfi_restore s11504; RV32I-NEXT:    .cfi_restore s21505; RV32I-NEXT:    .cfi_restore s31506; RV32I-NEXT:    addi sp, sp, 161507; RV32I-NEXT:    .cfi_def_cfa_offset 01508; RV32I-NEXT:    ret1509;1510; RV64I-LABEL: many_args:1511; RV64I:       # %bb.0: # %entry1512; RV64I-NEXT:    addi sp, sp, -321513; RV64I-NEXT:    .cfi_def_cfa_offset 321514; RV64I-NEXT:    sd s0, 24(sp) # 8-byte Folded Spill1515; RV64I-NEXT:    sd s1, 16(sp) # 8-byte Folded Spill1516; RV64I-NEXT:    sd s2, 8(sp) # 8-byte Folded Spill1517; RV64I-NEXT:    sd s3, 0(sp) # 8-byte Folded Spill1518; RV64I-NEXT:    .cfi_offset s0, -81519; RV64I-NEXT:    .cfi_offset s1, -161520; RV64I-NEXT:    .cfi_offset s2, -241521; RV64I-NEXT:    .cfi_offset s3, -321522; RV64I-NEXT:    lui a0, %hi(var0)1523; RV64I-NEXT:    addi a0, a0, %lo(var0)1524; RV64I-NEXT:    lw a1, 0(a0)1525; RV64I-NEXT:    lw a2, 4(a0)1526; RV64I-NEXT:    lw a3, 8(a0)1527; RV64I-NEXT:    lw a4, 12(a0)1528; RV64I-NEXT:    lw a5, 16(a0)1529; RV64I-NEXT:    lw a6, 20(a0)1530; RV64I-NEXT:    lw a7, 24(a0)1531; RV64I-NEXT:    lw t0, 28(a0)1532; RV64I-NEXT:    lw t1, 48(a0)1533; RV64I-NEXT:    lw t2, 52(a0)1534; RV64I-NEXT:    lw t3, 56(a0)1535; RV64I-NEXT:    lw t4, 60(a0)1536; RV64I-NEXT:    lw t5, 64(a0)1537; RV64I-NEXT:    lw t6, 68(a0)1538; RV64I-NEXT:    lw s0, 32(a0)1539; RV64I-NEXT:    lw s1, 36(a0)1540; RV64I-NEXT:    lw s2, 40(a0)1541; RV64I-NEXT:    lw s3, 44(a0)1542; RV64I-NEXT:    sw t6, 68(a0)1543; RV64I-NEXT:    sw t5, 64(a0)1544; RV64I-NEXT:    sw t4, 60(a0)1545; RV64I-NEXT:    sw t3, 56(a0)1546; RV64I-NEXT:    sw t2, 52(a0)1547; RV64I-NEXT:    sw t1, 48(a0)1548; RV64I-NEXT:    sw s3, 44(a0)1549; RV64I-NEXT:    sw s2, 40(a0)1550; RV64I-NEXT:    sw s1, 36(a0)1551; RV64I-NEXT:    sw s0, 32(a0)1552; RV64I-NEXT:    sw t0, 28(a0)1553; RV64I-NEXT:    sw a7, 24(a0)1554; RV64I-NEXT:    sw a6, 20(a0)1555; RV64I-NEXT:    sw a5, 16(a0)1556; RV64I-NEXT:    sw a4, 12(a0)1557; RV64I-NEXT:    sw a3, 8(a0)1558; RV64I-NEXT:    sw a2, 4(a0)1559; RV64I-NEXT:    sw a1, 0(a0)1560; RV64I-NEXT:    ld s0, 24(sp) # 8-byte Folded Reload1561; RV64I-NEXT:    ld s1, 16(sp) # 8-byte Folded Reload1562; RV64I-NEXT:    ld s2, 8(sp) # 8-byte Folded Reload1563; RV64I-NEXT:    ld s3, 0(sp) # 8-byte Folded Reload1564; RV64I-NEXT:    .cfi_restore s01565; RV64I-NEXT:    .cfi_restore s11566; RV64I-NEXT:    .cfi_restore s21567; RV64I-NEXT:    .cfi_restore s31568; RV64I-NEXT:    addi sp, sp, 321569; RV64I-NEXT:    .cfi_def_cfa_offset 01570; RV64I-NEXT:    ret1571entry:1572  %val = load [18 x i32], ptr @var01573  store volatile [18 x i32] %val, ptr @var01574  ret void1575}1576 1577; Check that dynamic allocation calculations remain correct1578 1579declare void @notdead(ptr)1580 1581define void @alloca(i32 %n) {1582; RV32IZCMP-LABEL: alloca:1583; RV32IZCMP:       # %bb.0:1584; RV32IZCMP-NEXT:    cm.push {ra, s0-s1}, -161585; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 161586; RV32IZCMP-NEXT:    .cfi_offset ra, -121587; RV32IZCMP-NEXT:    .cfi_offset s0, -81588; RV32IZCMP-NEXT:    .cfi_offset s1, -41589; RV32IZCMP-NEXT:    addi s0, sp, 161590; RV32IZCMP-NEXT:    .cfi_def_cfa s0, 01591; RV32IZCMP-NEXT:    mv s1, sp1592; RV32IZCMP-NEXT:    addi a0, a0, 151593; RV32IZCMP-NEXT:    andi a0, a0, -161594; RV32IZCMP-NEXT:    sub a0, sp, a01595; RV32IZCMP-NEXT:    mv sp, a01596; RV32IZCMP-NEXT:    call notdead1597; RV32IZCMP-NEXT:    mv sp, s11598; RV32IZCMP-NEXT:    addi sp, s0, -161599; RV32IZCMP-NEXT:    .cfi_def_cfa sp, 161600; RV32IZCMP-NEXT:    cm.popret {ra, s0-s1}, 161601;1602; RV64IZCMP-LABEL: alloca:1603; RV64IZCMP:       # %bb.0:1604; RV64IZCMP-NEXT:    cm.push {ra, s0-s1}, -321605; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 321606; RV64IZCMP-NEXT:    .cfi_offset ra, -241607; RV64IZCMP-NEXT:    .cfi_offset s0, -161608; RV64IZCMP-NEXT:    .cfi_offset s1, -81609; RV64IZCMP-NEXT:    addi s0, sp, 321610; RV64IZCMP-NEXT:    .cfi_def_cfa s0, 01611; RV64IZCMP-NEXT:    mv s1, sp1612; RV64IZCMP-NEXT:    slli a0, a0, 321613; RV64IZCMP-NEXT:    srli a0, a0, 321614; RV64IZCMP-NEXT:    addi a0, a0, 151615; RV64IZCMP-NEXT:    andi a0, a0, -161616; RV64IZCMP-NEXT:    sub a0, sp, a01617; RV64IZCMP-NEXT:    mv sp, a01618; RV64IZCMP-NEXT:    call notdead1619; RV64IZCMP-NEXT:    mv sp, s11620; RV64IZCMP-NEXT:    addi sp, s0, -321621; RV64IZCMP-NEXT:    .cfi_def_cfa sp, 321622; RV64IZCMP-NEXT:    cm.popret {ra, s0-s1}, 321623;1624; RV32IZCMP-SR-LABEL: alloca:1625; RV32IZCMP-SR:       # %bb.0:1626; RV32IZCMP-SR-NEXT:    cm.push {ra, s0-s1}, -161627; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 161628; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -121629; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -81630; RV32IZCMP-SR-NEXT:    .cfi_offset s1, -41631; RV32IZCMP-SR-NEXT:    addi s0, sp, 161632; RV32IZCMP-SR-NEXT:    .cfi_def_cfa s0, 01633; RV32IZCMP-SR-NEXT:    mv s1, sp1634; RV32IZCMP-SR-NEXT:    addi a0, a0, 151635; RV32IZCMP-SR-NEXT:    andi a0, a0, -161636; RV32IZCMP-SR-NEXT:    sub a0, sp, a01637; RV32IZCMP-SR-NEXT:    mv sp, a01638; RV32IZCMP-SR-NEXT:    call notdead1639; RV32IZCMP-SR-NEXT:    mv sp, s11640; RV32IZCMP-SR-NEXT:    addi sp, s0, -161641; RV32IZCMP-SR-NEXT:    .cfi_def_cfa sp, 161642; RV32IZCMP-SR-NEXT:    cm.popret {ra, s0-s1}, 161643;1644; RV64IZCMP-SR-LABEL: alloca:1645; RV64IZCMP-SR:       # %bb.0:1646; RV64IZCMP-SR-NEXT:    cm.push {ra, s0-s1}, -321647; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 321648; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -241649; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -161650; RV64IZCMP-SR-NEXT:    .cfi_offset s1, -81651; RV64IZCMP-SR-NEXT:    addi s0, sp, 321652; RV64IZCMP-SR-NEXT:    .cfi_def_cfa s0, 01653; RV64IZCMP-SR-NEXT:    mv s1, sp1654; RV64IZCMP-SR-NEXT:    slli a0, a0, 321655; RV64IZCMP-SR-NEXT:    srli a0, a0, 321656; RV64IZCMP-SR-NEXT:    addi a0, a0, 151657; RV64IZCMP-SR-NEXT:    andi a0, a0, -161658; RV64IZCMP-SR-NEXT:    sub a0, sp, a01659; RV64IZCMP-SR-NEXT:    mv sp, a01660; RV64IZCMP-SR-NEXT:    call notdead1661; RV64IZCMP-SR-NEXT:    mv sp, s11662; RV64IZCMP-SR-NEXT:    addi sp, s0, -321663; RV64IZCMP-SR-NEXT:    .cfi_def_cfa sp, 321664; RV64IZCMP-SR-NEXT:    cm.popret {ra, s0-s1}, 321665;1666; RV32I-LABEL: alloca:1667; RV32I:       # %bb.0:1668; RV32I-NEXT:    addi sp, sp, -161669; RV32I-NEXT:    .cfi_def_cfa_offset 161670; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1671; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill1672; RV32I-NEXT:    sw s1, 4(sp) # 4-byte Folded Spill1673; RV32I-NEXT:    .cfi_offset ra, -41674; RV32I-NEXT:    .cfi_offset s0, -81675; RV32I-NEXT:    .cfi_offset s1, -121676; RV32I-NEXT:    addi s0, sp, 161677; RV32I-NEXT:    .cfi_def_cfa s0, 01678; RV32I-NEXT:    mv s1, sp1679; RV32I-NEXT:    addi a0, a0, 151680; RV32I-NEXT:    andi a0, a0, -161681; RV32I-NEXT:    sub a0, sp, a01682; RV32I-NEXT:    mv sp, a01683; RV32I-NEXT:    call notdead1684; RV32I-NEXT:    mv sp, s11685; RV32I-NEXT:    addi sp, s0, -161686; RV32I-NEXT:    .cfi_def_cfa sp, 161687; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1688; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload1689; RV32I-NEXT:    lw s1, 4(sp) # 4-byte Folded Reload1690; RV32I-NEXT:    .cfi_restore ra1691; RV32I-NEXT:    .cfi_restore s01692; RV32I-NEXT:    .cfi_restore s11693; RV32I-NEXT:    addi sp, sp, 161694; RV32I-NEXT:    .cfi_def_cfa_offset 01695; RV32I-NEXT:    ret1696;1697; RV64I-LABEL: alloca:1698; RV64I:       # %bb.0:1699; RV64I-NEXT:    addi sp, sp, -321700; RV64I-NEXT:    .cfi_def_cfa_offset 321701; RV64I-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill1702; RV64I-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill1703; RV64I-NEXT:    sd s1, 8(sp) # 8-byte Folded Spill1704; RV64I-NEXT:    .cfi_offset ra, -81705; RV64I-NEXT:    .cfi_offset s0, -161706; RV64I-NEXT:    .cfi_offset s1, -241707; RV64I-NEXT:    addi s0, sp, 321708; RV64I-NEXT:    .cfi_def_cfa s0, 01709; RV64I-NEXT:    mv s1, sp1710; RV64I-NEXT:    slli a0, a0, 321711; RV64I-NEXT:    srli a0, a0, 321712; RV64I-NEXT:    addi a0, a0, 151713; RV64I-NEXT:    andi a0, a0, -161714; RV64I-NEXT:    sub a0, sp, a01715; RV64I-NEXT:    mv sp, a01716; RV64I-NEXT:    call notdead1717; RV64I-NEXT:    mv sp, s11718; RV64I-NEXT:    addi sp, s0, -321719; RV64I-NEXT:    .cfi_def_cfa sp, 321720; RV64I-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload1721; RV64I-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload1722; RV64I-NEXT:    ld s1, 8(sp) # 8-byte Folded Reload1723; RV64I-NEXT:    .cfi_restore ra1724; RV64I-NEXT:    .cfi_restore s01725; RV64I-NEXT:    .cfi_restore s11726; RV64I-NEXT:    addi sp, sp, 321727; RV64I-NEXT:    .cfi_def_cfa_offset 01728; RV64I-NEXT:    ret1729  %sp = call ptr @llvm.stacksave()1730  %addr = alloca i8, i32 %n1731  call void @notdead(ptr %addr)1732  call void @llvm.stackrestore(ptr %sp)1733  ret void1734}1735 1736declare i32 @foo_test_irq(...)1737@var_test_irq = global [32 x i32] zeroinitializer1738 1739define void @foo_with_irq() "interrupt"="machine" {1740; RV32IZCMP-LABEL: foo_with_irq:1741; RV32IZCMP:       # %bb.0:1742; RV32IZCMP-NEXT:    cm.push {ra}, -641743; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 641744; RV32IZCMP-NEXT:    .cfi_offset ra, -41745; RV32IZCMP-NEXT:    addi sp, sp, -161746; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 801747; RV32IZCMP-NEXT:    sw t0, 60(sp) # 4-byte Folded Spill1748; RV32IZCMP-NEXT:    sw t1, 56(sp) # 4-byte Folded Spill1749; RV32IZCMP-NEXT:    sw t2, 52(sp) # 4-byte Folded Spill1750; RV32IZCMP-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill1751; RV32IZCMP-NEXT:    sw a1, 44(sp) # 4-byte Folded Spill1752; RV32IZCMP-NEXT:    sw a2, 40(sp) # 4-byte Folded Spill1753; RV32IZCMP-NEXT:    sw a3, 36(sp) # 4-byte Folded Spill1754; RV32IZCMP-NEXT:    sw a4, 32(sp) # 4-byte Folded Spill1755; RV32IZCMP-NEXT:    sw a5, 28(sp) # 4-byte Folded Spill1756; RV32IZCMP-NEXT:    sw a6, 24(sp) # 4-byte Folded Spill1757; RV32IZCMP-NEXT:    sw a7, 20(sp) # 4-byte Folded Spill1758; RV32IZCMP-NEXT:    sw t3, 16(sp) # 4-byte Folded Spill1759; RV32IZCMP-NEXT:    sw t4, 12(sp) # 4-byte Folded Spill1760; RV32IZCMP-NEXT:    sw t5, 8(sp) # 4-byte Folded Spill1761; RV32IZCMP-NEXT:    sw t6, 4(sp) # 4-byte Folded Spill1762; RV32IZCMP-NEXT:    .cfi_offset t0, -201763; RV32IZCMP-NEXT:    .cfi_offset t1, -241764; RV32IZCMP-NEXT:    .cfi_offset t2, -281765; RV32IZCMP-NEXT:    .cfi_offset a0, -321766; RV32IZCMP-NEXT:    .cfi_offset a1, -361767; RV32IZCMP-NEXT:    .cfi_offset a2, -401768; RV32IZCMP-NEXT:    .cfi_offset a3, -441769; RV32IZCMP-NEXT:    .cfi_offset a4, -481770; RV32IZCMP-NEXT:    .cfi_offset a5, -521771; RV32IZCMP-NEXT:    .cfi_offset a6, -561772; RV32IZCMP-NEXT:    .cfi_offset a7, -601773; RV32IZCMP-NEXT:    .cfi_offset t3, -641774; RV32IZCMP-NEXT:    .cfi_offset t4, -681775; RV32IZCMP-NEXT:    .cfi_offset t5, -721776; RV32IZCMP-NEXT:    .cfi_offset t6, -761777; RV32IZCMP-NEXT:    call foo_test_irq1778; RV32IZCMP-NEXT:    lw t0, 60(sp) # 4-byte Folded Reload1779; RV32IZCMP-NEXT:    lw t1, 56(sp) # 4-byte Folded Reload1780; RV32IZCMP-NEXT:    lw t2, 52(sp) # 4-byte Folded Reload1781; RV32IZCMP-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload1782; RV32IZCMP-NEXT:    lw a1, 44(sp) # 4-byte Folded Reload1783; RV32IZCMP-NEXT:    lw a2, 40(sp) # 4-byte Folded Reload1784; RV32IZCMP-NEXT:    lw a3, 36(sp) # 4-byte Folded Reload1785; RV32IZCMP-NEXT:    lw a4, 32(sp) # 4-byte Folded Reload1786; RV32IZCMP-NEXT:    lw a5, 28(sp) # 4-byte Folded Reload1787; RV32IZCMP-NEXT:    lw a6, 24(sp) # 4-byte Folded Reload1788; RV32IZCMP-NEXT:    lw a7, 20(sp) # 4-byte Folded Reload1789; RV32IZCMP-NEXT:    lw t3, 16(sp) # 4-byte Folded Reload1790; RV32IZCMP-NEXT:    lw t4, 12(sp) # 4-byte Folded Reload1791; RV32IZCMP-NEXT:    lw t5, 8(sp) # 4-byte Folded Reload1792; RV32IZCMP-NEXT:    lw t6, 4(sp) # 4-byte Folded Reload1793; RV32IZCMP-NEXT:    .cfi_restore t01794; RV32IZCMP-NEXT:    .cfi_restore t11795; RV32IZCMP-NEXT:    .cfi_restore t21796; RV32IZCMP-NEXT:    .cfi_restore a01797; RV32IZCMP-NEXT:    .cfi_restore a11798; RV32IZCMP-NEXT:    .cfi_restore a21799; RV32IZCMP-NEXT:    .cfi_restore a31800; RV32IZCMP-NEXT:    .cfi_restore a41801; RV32IZCMP-NEXT:    .cfi_restore a51802; RV32IZCMP-NEXT:    .cfi_restore a61803; RV32IZCMP-NEXT:    .cfi_restore a71804; RV32IZCMP-NEXT:    .cfi_restore t31805; RV32IZCMP-NEXT:    .cfi_restore t41806; RV32IZCMP-NEXT:    .cfi_restore t51807; RV32IZCMP-NEXT:    .cfi_restore t61808; RV32IZCMP-NEXT:    addi sp, sp, 161809; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 641810; RV32IZCMP-NEXT:    cm.pop {ra}, 641811; RV32IZCMP-NEXT:    .cfi_restore ra1812; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 01813; RV32IZCMP-NEXT:    mret1814;1815; RV64IZCMP-LABEL: foo_with_irq:1816; RV64IZCMP:       # %bb.0:1817; RV64IZCMP-NEXT:    cm.push {ra}, -641818; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 641819; RV64IZCMP-NEXT:    .cfi_offset ra, -81820; RV64IZCMP-NEXT:    addi sp, sp, -801821; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 1441822; RV64IZCMP-NEXT:    sd t0, 120(sp) # 8-byte Folded Spill1823; RV64IZCMP-NEXT:    sd t1, 112(sp) # 8-byte Folded Spill1824; RV64IZCMP-NEXT:    sd t2, 104(sp) # 8-byte Folded Spill1825; RV64IZCMP-NEXT:    sd a0, 96(sp) # 8-byte Folded Spill1826; RV64IZCMP-NEXT:    sd a1, 88(sp) # 8-byte Folded Spill1827; RV64IZCMP-NEXT:    sd a2, 80(sp) # 8-byte Folded Spill1828; RV64IZCMP-NEXT:    sd a3, 72(sp) # 8-byte Folded Spill1829; RV64IZCMP-NEXT:    sd a4, 64(sp) # 8-byte Folded Spill1830; RV64IZCMP-NEXT:    sd a5, 56(sp) # 8-byte Folded Spill1831; RV64IZCMP-NEXT:    sd a6, 48(sp) # 8-byte Folded Spill1832; RV64IZCMP-NEXT:    sd a7, 40(sp) # 8-byte Folded Spill1833; RV64IZCMP-NEXT:    sd t3, 32(sp) # 8-byte Folded Spill1834; RV64IZCMP-NEXT:    sd t4, 24(sp) # 8-byte Folded Spill1835; RV64IZCMP-NEXT:    sd t5, 16(sp) # 8-byte Folded Spill1836; RV64IZCMP-NEXT:    sd t6, 8(sp) # 8-byte Folded Spill1837; RV64IZCMP-NEXT:    .cfi_offset t0, -241838; RV64IZCMP-NEXT:    .cfi_offset t1, -321839; RV64IZCMP-NEXT:    .cfi_offset t2, -401840; RV64IZCMP-NEXT:    .cfi_offset a0, -481841; RV64IZCMP-NEXT:    .cfi_offset a1, -561842; RV64IZCMP-NEXT:    .cfi_offset a2, -641843; RV64IZCMP-NEXT:    .cfi_offset a3, -721844; RV64IZCMP-NEXT:    .cfi_offset a4, -801845; RV64IZCMP-NEXT:    .cfi_offset a5, -881846; RV64IZCMP-NEXT:    .cfi_offset a6, -961847; RV64IZCMP-NEXT:    .cfi_offset a7, -1041848; RV64IZCMP-NEXT:    .cfi_offset t3, -1121849; RV64IZCMP-NEXT:    .cfi_offset t4, -1201850; RV64IZCMP-NEXT:    .cfi_offset t5, -1281851; RV64IZCMP-NEXT:    .cfi_offset t6, -1361852; RV64IZCMP-NEXT:    call foo_test_irq1853; RV64IZCMP-NEXT:    ld t0, 120(sp) # 8-byte Folded Reload1854; RV64IZCMP-NEXT:    ld t1, 112(sp) # 8-byte Folded Reload1855; RV64IZCMP-NEXT:    ld t2, 104(sp) # 8-byte Folded Reload1856; RV64IZCMP-NEXT:    ld a0, 96(sp) # 8-byte Folded Reload1857; RV64IZCMP-NEXT:    ld a1, 88(sp) # 8-byte Folded Reload1858; RV64IZCMP-NEXT:    ld a2, 80(sp) # 8-byte Folded Reload1859; RV64IZCMP-NEXT:    ld a3, 72(sp) # 8-byte Folded Reload1860; RV64IZCMP-NEXT:    ld a4, 64(sp) # 8-byte Folded Reload1861; RV64IZCMP-NEXT:    ld a5, 56(sp) # 8-byte Folded Reload1862; RV64IZCMP-NEXT:    ld a6, 48(sp) # 8-byte Folded Reload1863; RV64IZCMP-NEXT:    ld a7, 40(sp) # 8-byte Folded Reload1864; RV64IZCMP-NEXT:    ld t3, 32(sp) # 8-byte Folded Reload1865; RV64IZCMP-NEXT:    ld t4, 24(sp) # 8-byte Folded Reload1866; RV64IZCMP-NEXT:    ld t5, 16(sp) # 8-byte Folded Reload1867; RV64IZCMP-NEXT:    ld t6, 8(sp) # 8-byte Folded Reload1868; RV64IZCMP-NEXT:    .cfi_restore t01869; RV64IZCMP-NEXT:    .cfi_restore t11870; RV64IZCMP-NEXT:    .cfi_restore t21871; RV64IZCMP-NEXT:    .cfi_restore a01872; RV64IZCMP-NEXT:    .cfi_restore a11873; RV64IZCMP-NEXT:    .cfi_restore a21874; RV64IZCMP-NEXT:    .cfi_restore a31875; RV64IZCMP-NEXT:    .cfi_restore a41876; RV64IZCMP-NEXT:    .cfi_restore a51877; RV64IZCMP-NEXT:    .cfi_restore a61878; RV64IZCMP-NEXT:    .cfi_restore a71879; RV64IZCMP-NEXT:    .cfi_restore t31880; RV64IZCMP-NEXT:    .cfi_restore t41881; RV64IZCMP-NEXT:    .cfi_restore t51882; RV64IZCMP-NEXT:    .cfi_restore t61883; RV64IZCMP-NEXT:    addi sp, sp, 801884; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 641885; RV64IZCMP-NEXT:    cm.pop {ra}, 641886; RV64IZCMP-NEXT:    .cfi_restore ra1887; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 01888; RV64IZCMP-NEXT:    mret1889;1890; RV32IZCMP-SR-LABEL: foo_with_irq:1891; RV32IZCMP-SR:       # %bb.0:1892; RV32IZCMP-SR-NEXT:    cm.push {ra}, -641893; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 641894; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -41895; RV32IZCMP-SR-NEXT:    addi sp, sp, -161896; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 801897; RV32IZCMP-SR-NEXT:    sw t0, 60(sp) # 4-byte Folded Spill1898; RV32IZCMP-SR-NEXT:    sw t1, 56(sp) # 4-byte Folded Spill1899; RV32IZCMP-SR-NEXT:    sw t2, 52(sp) # 4-byte Folded Spill1900; RV32IZCMP-SR-NEXT:    sw a0, 48(sp) # 4-byte Folded Spill1901; RV32IZCMP-SR-NEXT:    sw a1, 44(sp) # 4-byte Folded Spill1902; RV32IZCMP-SR-NEXT:    sw a2, 40(sp) # 4-byte Folded Spill1903; RV32IZCMP-SR-NEXT:    sw a3, 36(sp) # 4-byte Folded Spill1904; RV32IZCMP-SR-NEXT:    sw a4, 32(sp) # 4-byte Folded Spill1905; RV32IZCMP-SR-NEXT:    sw a5, 28(sp) # 4-byte Folded Spill1906; RV32IZCMP-SR-NEXT:    sw a6, 24(sp) # 4-byte Folded Spill1907; RV32IZCMP-SR-NEXT:    sw a7, 20(sp) # 4-byte Folded Spill1908; RV32IZCMP-SR-NEXT:    sw t3, 16(sp) # 4-byte Folded Spill1909; RV32IZCMP-SR-NEXT:    sw t4, 12(sp) # 4-byte Folded Spill1910; RV32IZCMP-SR-NEXT:    sw t5, 8(sp) # 4-byte Folded Spill1911; RV32IZCMP-SR-NEXT:    sw t6, 4(sp) # 4-byte Folded Spill1912; RV32IZCMP-SR-NEXT:    .cfi_offset t0, -201913; RV32IZCMP-SR-NEXT:    .cfi_offset t1, -241914; RV32IZCMP-SR-NEXT:    .cfi_offset t2, -281915; RV32IZCMP-SR-NEXT:    .cfi_offset a0, -321916; RV32IZCMP-SR-NEXT:    .cfi_offset a1, -361917; RV32IZCMP-SR-NEXT:    .cfi_offset a2, -401918; RV32IZCMP-SR-NEXT:    .cfi_offset a3, -441919; RV32IZCMP-SR-NEXT:    .cfi_offset a4, -481920; RV32IZCMP-SR-NEXT:    .cfi_offset a5, -521921; RV32IZCMP-SR-NEXT:    .cfi_offset a6, -561922; RV32IZCMP-SR-NEXT:    .cfi_offset a7, -601923; RV32IZCMP-SR-NEXT:    .cfi_offset t3, -641924; RV32IZCMP-SR-NEXT:    .cfi_offset t4, -681925; RV32IZCMP-SR-NEXT:    .cfi_offset t5, -721926; RV32IZCMP-SR-NEXT:    .cfi_offset t6, -761927; RV32IZCMP-SR-NEXT:    call foo_test_irq1928; RV32IZCMP-SR-NEXT:    lw t0, 60(sp) # 4-byte Folded Reload1929; RV32IZCMP-SR-NEXT:    lw t1, 56(sp) # 4-byte Folded Reload1930; RV32IZCMP-SR-NEXT:    lw t2, 52(sp) # 4-byte Folded Reload1931; RV32IZCMP-SR-NEXT:    lw a0, 48(sp) # 4-byte Folded Reload1932; RV32IZCMP-SR-NEXT:    lw a1, 44(sp) # 4-byte Folded Reload1933; RV32IZCMP-SR-NEXT:    lw a2, 40(sp) # 4-byte Folded Reload1934; RV32IZCMP-SR-NEXT:    lw a3, 36(sp) # 4-byte Folded Reload1935; RV32IZCMP-SR-NEXT:    lw a4, 32(sp) # 4-byte Folded Reload1936; RV32IZCMP-SR-NEXT:    lw a5, 28(sp) # 4-byte Folded Reload1937; RV32IZCMP-SR-NEXT:    lw a6, 24(sp) # 4-byte Folded Reload1938; RV32IZCMP-SR-NEXT:    lw a7, 20(sp) # 4-byte Folded Reload1939; RV32IZCMP-SR-NEXT:    lw t3, 16(sp) # 4-byte Folded Reload1940; RV32IZCMP-SR-NEXT:    lw t4, 12(sp) # 4-byte Folded Reload1941; RV32IZCMP-SR-NEXT:    lw t5, 8(sp) # 4-byte Folded Reload1942; RV32IZCMP-SR-NEXT:    lw t6, 4(sp) # 4-byte Folded Reload1943; RV32IZCMP-SR-NEXT:    .cfi_restore t01944; RV32IZCMP-SR-NEXT:    .cfi_restore t11945; RV32IZCMP-SR-NEXT:    .cfi_restore t21946; RV32IZCMP-SR-NEXT:    .cfi_restore a01947; RV32IZCMP-SR-NEXT:    .cfi_restore a11948; RV32IZCMP-SR-NEXT:    .cfi_restore a21949; RV32IZCMP-SR-NEXT:    .cfi_restore a31950; RV32IZCMP-SR-NEXT:    .cfi_restore a41951; RV32IZCMP-SR-NEXT:    .cfi_restore a51952; RV32IZCMP-SR-NEXT:    .cfi_restore a61953; RV32IZCMP-SR-NEXT:    .cfi_restore a71954; RV32IZCMP-SR-NEXT:    .cfi_restore t31955; RV32IZCMP-SR-NEXT:    .cfi_restore t41956; RV32IZCMP-SR-NEXT:    .cfi_restore t51957; RV32IZCMP-SR-NEXT:    .cfi_restore t61958; RV32IZCMP-SR-NEXT:    addi sp, sp, 161959; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 641960; RV32IZCMP-SR-NEXT:    cm.pop {ra}, 641961; RV32IZCMP-SR-NEXT:    .cfi_restore ra1962; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 01963; RV32IZCMP-SR-NEXT:    mret1964;1965; RV64IZCMP-SR-LABEL: foo_with_irq:1966; RV64IZCMP-SR:       # %bb.0:1967; RV64IZCMP-SR-NEXT:    cm.push {ra}, -641968; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 641969; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -81970; RV64IZCMP-SR-NEXT:    addi sp, sp, -801971; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 1441972; RV64IZCMP-SR-NEXT:    sd t0, 120(sp) # 8-byte Folded Spill1973; RV64IZCMP-SR-NEXT:    sd t1, 112(sp) # 8-byte Folded Spill1974; RV64IZCMP-SR-NEXT:    sd t2, 104(sp) # 8-byte Folded Spill1975; RV64IZCMP-SR-NEXT:    sd a0, 96(sp) # 8-byte Folded Spill1976; RV64IZCMP-SR-NEXT:    sd a1, 88(sp) # 8-byte Folded Spill1977; RV64IZCMP-SR-NEXT:    sd a2, 80(sp) # 8-byte Folded Spill1978; RV64IZCMP-SR-NEXT:    sd a3, 72(sp) # 8-byte Folded Spill1979; RV64IZCMP-SR-NEXT:    sd a4, 64(sp) # 8-byte Folded Spill1980; RV64IZCMP-SR-NEXT:    sd a5, 56(sp) # 8-byte Folded Spill1981; RV64IZCMP-SR-NEXT:    sd a6, 48(sp) # 8-byte Folded Spill1982; RV64IZCMP-SR-NEXT:    sd a7, 40(sp) # 8-byte Folded Spill1983; RV64IZCMP-SR-NEXT:    sd t3, 32(sp) # 8-byte Folded Spill1984; RV64IZCMP-SR-NEXT:    sd t4, 24(sp) # 8-byte Folded Spill1985; RV64IZCMP-SR-NEXT:    sd t5, 16(sp) # 8-byte Folded Spill1986; RV64IZCMP-SR-NEXT:    sd t6, 8(sp) # 8-byte Folded Spill1987; RV64IZCMP-SR-NEXT:    .cfi_offset t0, -241988; RV64IZCMP-SR-NEXT:    .cfi_offset t1, -321989; RV64IZCMP-SR-NEXT:    .cfi_offset t2, -401990; RV64IZCMP-SR-NEXT:    .cfi_offset a0, -481991; RV64IZCMP-SR-NEXT:    .cfi_offset a1, -561992; RV64IZCMP-SR-NEXT:    .cfi_offset a2, -641993; RV64IZCMP-SR-NEXT:    .cfi_offset a3, -721994; RV64IZCMP-SR-NEXT:    .cfi_offset a4, -801995; RV64IZCMP-SR-NEXT:    .cfi_offset a5, -881996; RV64IZCMP-SR-NEXT:    .cfi_offset a6, -961997; RV64IZCMP-SR-NEXT:    .cfi_offset a7, -1041998; RV64IZCMP-SR-NEXT:    .cfi_offset t3, -1121999; RV64IZCMP-SR-NEXT:    .cfi_offset t4, -1202000; RV64IZCMP-SR-NEXT:    .cfi_offset t5, -1282001; RV64IZCMP-SR-NEXT:    .cfi_offset t6, -1362002; RV64IZCMP-SR-NEXT:    call foo_test_irq2003; RV64IZCMP-SR-NEXT:    ld t0, 120(sp) # 8-byte Folded Reload2004; RV64IZCMP-SR-NEXT:    ld t1, 112(sp) # 8-byte Folded Reload2005; RV64IZCMP-SR-NEXT:    ld t2, 104(sp) # 8-byte Folded Reload2006; RV64IZCMP-SR-NEXT:    ld a0, 96(sp) # 8-byte Folded Reload2007; RV64IZCMP-SR-NEXT:    ld a1, 88(sp) # 8-byte Folded Reload2008; RV64IZCMP-SR-NEXT:    ld a2, 80(sp) # 8-byte Folded Reload2009; RV64IZCMP-SR-NEXT:    ld a3, 72(sp) # 8-byte Folded Reload2010; RV64IZCMP-SR-NEXT:    ld a4, 64(sp) # 8-byte Folded Reload2011; RV64IZCMP-SR-NEXT:    ld a5, 56(sp) # 8-byte Folded Reload2012; RV64IZCMP-SR-NEXT:    ld a6, 48(sp) # 8-byte Folded Reload2013; RV64IZCMP-SR-NEXT:    ld a7, 40(sp) # 8-byte Folded Reload2014; RV64IZCMP-SR-NEXT:    ld t3, 32(sp) # 8-byte Folded Reload2015; RV64IZCMP-SR-NEXT:    ld t4, 24(sp) # 8-byte Folded Reload2016; RV64IZCMP-SR-NEXT:    ld t5, 16(sp) # 8-byte Folded Reload2017; RV64IZCMP-SR-NEXT:    ld t6, 8(sp) # 8-byte Folded Reload2018; RV64IZCMP-SR-NEXT:    .cfi_restore t02019; RV64IZCMP-SR-NEXT:    .cfi_restore t12020; RV64IZCMP-SR-NEXT:    .cfi_restore t22021; RV64IZCMP-SR-NEXT:    .cfi_restore a02022; RV64IZCMP-SR-NEXT:    .cfi_restore a12023; RV64IZCMP-SR-NEXT:    .cfi_restore a22024; RV64IZCMP-SR-NEXT:    .cfi_restore a32025; RV64IZCMP-SR-NEXT:    .cfi_restore a42026; RV64IZCMP-SR-NEXT:    .cfi_restore a52027; RV64IZCMP-SR-NEXT:    .cfi_restore a62028; RV64IZCMP-SR-NEXT:    .cfi_restore a72029; RV64IZCMP-SR-NEXT:    .cfi_restore t32030; RV64IZCMP-SR-NEXT:    .cfi_restore t42031; RV64IZCMP-SR-NEXT:    .cfi_restore t52032; RV64IZCMP-SR-NEXT:    .cfi_restore t62033; RV64IZCMP-SR-NEXT:    addi sp, sp, 802034; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 642035; RV64IZCMP-SR-NEXT:    cm.pop {ra}, 642036; RV64IZCMP-SR-NEXT:    .cfi_restore ra2037; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 02038; RV64IZCMP-SR-NEXT:    mret2039;2040; RV32I-LABEL: foo_with_irq:2041; RV32I:       # %bb.0:2042; RV32I-NEXT:    addi sp, sp, -642043; RV32I-NEXT:    .cfi_def_cfa_offset 642044; RV32I-NEXT:    sw ra, 60(sp) # 4-byte Folded Spill2045; RV32I-NEXT:    sw t0, 56(sp) # 4-byte Folded Spill2046; RV32I-NEXT:    sw t1, 52(sp) # 4-byte Folded Spill2047; RV32I-NEXT:    sw t2, 48(sp) # 4-byte Folded Spill2048; RV32I-NEXT:    sw a0, 44(sp) # 4-byte Folded Spill2049; RV32I-NEXT:    sw a1, 40(sp) # 4-byte Folded Spill2050; RV32I-NEXT:    sw a2, 36(sp) # 4-byte Folded Spill2051; RV32I-NEXT:    sw a3, 32(sp) # 4-byte Folded Spill2052; RV32I-NEXT:    sw a4, 28(sp) # 4-byte Folded Spill2053; RV32I-NEXT:    sw a5, 24(sp) # 4-byte Folded Spill2054; RV32I-NEXT:    sw a6, 20(sp) # 4-byte Folded Spill2055; RV32I-NEXT:    sw a7, 16(sp) # 4-byte Folded Spill2056; RV32I-NEXT:    sw t3, 12(sp) # 4-byte Folded Spill2057; RV32I-NEXT:    sw t4, 8(sp) # 4-byte Folded Spill2058; RV32I-NEXT:    sw t5, 4(sp) # 4-byte Folded Spill2059; RV32I-NEXT:    sw t6, 0(sp) # 4-byte Folded Spill2060; RV32I-NEXT:    .cfi_offset ra, -42061; RV32I-NEXT:    .cfi_offset t0, -82062; RV32I-NEXT:    .cfi_offset t1, -122063; RV32I-NEXT:    .cfi_offset t2, -162064; RV32I-NEXT:    .cfi_offset a0, -202065; RV32I-NEXT:    .cfi_offset a1, -242066; RV32I-NEXT:    .cfi_offset a2, -282067; RV32I-NEXT:    .cfi_offset a3, -322068; RV32I-NEXT:    .cfi_offset a4, -362069; RV32I-NEXT:    .cfi_offset a5, -402070; RV32I-NEXT:    .cfi_offset a6, -442071; RV32I-NEXT:    .cfi_offset a7, -482072; RV32I-NEXT:    .cfi_offset t3, -522073; RV32I-NEXT:    .cfi_offset t4, -562074; RV32I-NEXT:    .cfi_offset t5, -602075; RV32I-NEXT:    .cfi_offset t6, -642076; RV32I-NEXT:    call foo_test_irq2077; RV32I-NEXT:    lw ra, 60(sp) # 4-byte Folded Reload2078; RV32I-NEXT:    lw t0, 56(sp) # 4-byte Folded Reload2079; RV32I-NEXT:    lw t1, 52(sp) # 4-byte Folded Reload2080; RV32I-NEXT:    lw t2, 48(sp) # 4-byte Folded Reload2081; RV32I-NEXT:    lw a0, 44(sp) # 4-byte Folded Reload2082; RV32I-NEXT:    lw a1, 40(sp) # 4-byte Folded Reload2083; RV32I-NEXT:    lw a2, 36(sp) # 4-byte Folded Reload2084; RV32I-NEXT:    lw a3, 32(sp) # 4-byte Folded Reload2085; RV32I-NEXT:    lw a4, 28(sp) # 4-byte Folded Reload2086; RV32I-NEXT:    lw a5, 24(sp) # 4-byte Folded Reload2087; RV32I-NEXT:    lw a6, 20(sp) # 4-byte Folded Reload2088; RV32I-NEXT:    lw a7, 16(sp) # 4-byte Folded Reload2089; RV32I-NEXT:    lw t3, 12(sp) # 4-byte Folded Reload2090; RV32I-NEXT:    lw t4, 8(sp) # 4-byte Folded Reload2091; RV32I-NEXT:    lw t5, 4(sp) # 4-byte Folded Reload2092; RV32I-NEXT:    lw t6, 0(sp) # 4-byte Folded Reload2093; RV32I-NEXT:    .cfi_restore ra2094; RV32I-NEXT:    .cfi_restore t02095; RV32I-NEXT:    .cfi_restore t12096; RV32I-NEXT:    .cfi_restore t22097; RV32I-NEXT:    .cfi_restore a02098; RV32I-NEXT:    .cfi_restore a12099; RV32I-NEXT:    .cfi_restore a22100; RV32I-NEXT:    .cfi_restore a32101; RV32I-NEXT:    .cfi_restore a42102; RV32I-NEXT:    .cfi_restore a52103; RV32I-NEXT:    .cfi_restore a62104; RV32I-NEXT:    .cfi_restore a72105; RV32I-NEXT:    .cfi_restore t32106; RV32I-NEXT:    .cfi_restore t42107; RV32I-NEXT:    .cfi_restore t52108; RV32I-NEXT:    .cfi_restore t62109; RV32I-NEXT:    addi sp, sp, 642110; RV32I-NEXT:    .cfi_def_cfa_offset 02111; RV32I-NEXT:    mret2112;2113; RV64I-LABEL: foo_with_irq:2114; RV64I:       # %bb.0:2115; RV64I-NEXT:    addi sp, sp, -1282116; RV64I-NEXT:    .cfi_def_cfa_offset 1282117; RV64I-NEXT:    sd ra, 120(sp) # 8-byte Folded Spill2118; RV64I-NEXT:    sd t0, 112(sp) # 8-byte Folded Spill2119; RV64I-NEXT:    sd t1, 104(sp) # 8-byte Folded Spill2120; RV64I-NEXT:    sd t2, 96(sp) # 8-byte Folded Spill2121; RV64I-NEXT:    sd a0, 88(sp) # 8-byte Folded Spill2122; RV64I-NEXT:    sd a1, 80(sp) # 8-byte Folded Spill2123; RV64I-NEXT:    sd a2, 72(sp) # 8-byte Folded Spill2124; RV64I-NEXT:    sd a3, 64(sp) # 8-byte Folded Spill2125; RV64I-NEXT:    sd a4, 56(sp) # 8-byte Folded Spill2126; RV64I-NEXT:    sd a5, 48(sp) # 8-byte Folded Spill2127; RV64I-NEXT:    sd a6, 40(sp) # 8-byte Folded Spill2128; RV64I-NEXT:    sd a7, 32(sp) # 8-byte Folded Spill2129; RV64I-NEXT:    sd t3, 24(sp) # 8-byte Folded Spill2130; RV64I-NEXT:    sd t4, 16(sp) # 8-byte Folded Spill2131; RV64I-NEXT:    sd t5, 8(sp) # 8-byte Folded Spill2132; RV64I-NEXT:    sd t6, 0(sp) # 8-byte Folded Spill2133; RV64I-NEXT:    .cfi_offset ra, -82134; RV64I-NEXT:    .cfi_offset t0, -162135; RV64I-NEXT:    .cfi_offset t1, -242136; RV64I-NEXT:    .cfi_offset t2, -322137; RV64I-NEXT:    .cfi_offset a0, -402138; RV64I-NEXT:    .cfi_offset a1, -482139; RV64I-NEXT:    .cfi_offset a2, -562140; RV64I-NEXT:    .cfi_offset a3, -642141; RV64I-NEXT:    .cfi_offset a4, -722142; RV64I-NEXT:    .cfi_offset a5, -802143; RV64I-NEXT:    .cfi_offset a6, -882144; RV64I-NEXT:    .cfi_offset a7, -962145; RV64I-NEXT:    .cfi_offset t3, -1042146; RV64I-NEXT:    .cfi_offset t4, -1122147; RV64I-NEXT:    .cfi_offset t5, -1202148; RV64I-NEXT:    .cfi_offset t6, -1282149; RV64I-NEXT:    call foo_test_irq2150; RV64I-NEXT:    ld ra, 120(sp) # 8-byte Folded Reload2151; RV64I-NEXT:    ld t0, 112(sp) # 8-byte Folded Reload2152; RV64I-NEXT:    ld t1, 104(sp) # 8-byte Folded Reload2153; RV64I-NEXT:    ld t2, 96(sp) # 8-byte Folded Reload2154; RV64I-NEXT:    ld a0, 88(sp) # 8-byte Folded Reload2155; RV64I-NEXT:    ld a1, 80(sp) # 8-byte Folded Reload2156; RV64I-NEXT:    ld a2, 72(sp) # 8-byte Folded Reload2157; RV64I-NEXT:    ld a3, 64(sp) # 8-byte Folded Reload2158; RV64I-NEXT:    ld a4, 56(sp) # 8-byte Folded Reload2159; RV64I-NEXT:    ld a5, 48(sp) # 8-byte Folded Reload2160; RV64I-NEXT:    ld a6, 40(sp) # 8-byte Folded Reload2161; RV64I-NEXT:    ld a7, 32(sp) # 8-byte Folded Reload2162; RV64I-NEXT:    ld t3, 24(sp) # 8-byte Folded Reload2163; RV64I-NEXT:    ld t4, 16(sp) # 8-byte Folded Reload2164; RV64I-NEXT:    ld t5, 8(sp) # 8-byte Folded Reload2165; RV64I-NEXT:    ld t6, 0(sp) # 8-byte Folded Reload2166; RV64I-NEXT:    .cfi_restore ra2167; RV64I-NEXT:    .cfi_restore t02168; RV64I-NEXT:    .cfi_restore t12169; RV64I-NEXT:    .cfi_restore t22170; RV64I-NEXT:    .cfi_restore a02171; RV64I-NEXT:    .cfi_restore a12172; RV64I-NEXT:    .cfi_restore a22173; RV64I-NEXT:    .cfi_restore a32174; RV64I-NEXT:    .cfi_restore a42175; RV64I-NEXT:    .cfi_restore a52176; RV64I-NEXT:    .cfi_restore a62177; RV64I-NEXT:    .cfi_restore a72178; RV64I-NEXT:    .cfi_restore t32179; RV64I-NEXT:    .cfi_restore t42180; RV64I-NEXT:    .cfi_restore t52181; RV64I-NEXT:    .cfi_restore t62182; RV64I-NEXT:    addi sp, sp, 1282183; RV64I-NEXT:    .cfi_def_cfa_offset 02184; RV64I-NEXT:    mret2185  %call = call i32 @foo_test_irq()2186  ret void2187}2188 2189define void @foo_no_irq() {2190; RV32IZCMP-LABEL: foo_no_irq:2191; RV32IZCMP:       # %bb.0:2192; RV32IZCMP-NEXT:    cm.push {ra}, -162193; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 162194; RV32IZCMP-NEXT:    .cfi_offset ra, -42195; RV32IZCMP-NEXT:    call foo_test_irq2196; RV32IZCMP-NEXT:    cm.popret {ra}, 162197;2198; RV64IZCMP-LABEL: foo_no_irq:2199; RV64IZCMP:       # %bb.0:2200; RV64IZCMP-NEXT:    cm.push {ra}, -162201; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 162202; RV64IZCMP-NEXT:    .cfi_offset ra, -82203; RV64IZCMP-NEXT:    call foo_test_irq2204; RV64IZCMP-NEXT:    cm.popret {ra}, 162205;2206; RV32IZCMP-SR-LABEL: foo_no_irq:2207; RV32IZCMP-SR:       # %bb.0:2208; RV32IZCMP-SR-NEXT:    cm.push {ra}, -162209; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 162210; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -42211; RV32IZCMP-SR-NEXT:    call foo_test_irq2212; RV32IZCMP-SR-NEXT:    cm.popret {ra}, 162213;2214; RV64IZCMP-SR-LABEL: foo_no_irq:2215; RV64IZCMP-SR:       # %bb.0:2216; RV64IZCMP-SR-NEXT:    cm.push {ra}, -162217; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 162218; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -82219; RV64IZCMP-SR-NEXT:    call foo_test_irq2220; RV64IZCMP-SR-NEXT:    cm.popret {ra}, 162221;2222; RV32I-LABEL: foo_no_irq:2223; RV32I:       # %bb.0:2224; RV32I-NEXT:    addi sp, sp, -162225; RV32I-NEXT:    .cfi_def_cfa_offset 162226; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2227; RV32I-NEXT:    .cfi_offset ra, -42228; RV32I-NEXT:    call foo_test_irq2229; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2230; RV32I-NEXT:    .cfi_restore ra2231; RV32I-NEXT:    addi sp, sp, 162232; RV32I-NEXT:    .cfi_def_cfa_offset 02233; RV32I-NEXT:    ret2234;2235; RV64I-LABEL: foo_no_irq:2236; RV64I:       # %bb.0:2237; RV64I-NEXT:    addi sp, sp, -162238; RV64I-NEXT:    .cfi_def_cfa_offset 162239; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2240; RV64I-NEXT:    .cfi_offset ra, -82241; RV64I-NEXT:    call foo_test_irq2242; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2243; RV64I-NEXT:    .cfi_restore ra2244; RV64I-NEXT:    addi sp, sp, 162245; RV64I-NEXT:    .cfi_def_cfa_offset 02246; RV64I-NEXT:    ret2247  %call = call i32 @foo_test_irq()2248  ret void2249}2250 2251define void @callee_with_irq() "interrupt"="machine" {2252; RV32IZCMP-LABEL: callee_with_irq:2253; RV32IZCMP:       # %bb.0:2254; RV32IZCMP-NEXT:    cm.push {ra, s0-s11}, -1122255; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 1122256; RV32IZCMP-NEXT:    .cfi_offset ra, -522257; RV32IZCMP-NEXT:    .cfi_offset s0, -482258; RV32IZCMP-NEXT:    .cfi_offset s1, -442259; RV32IZCMP-NEXT:    .cfi_offset s2, -402260; RV32IZCMP-NEXT:    .cfi_offset s3, -362261; RV32IZCMP-NEXT:    .cfi_offset s4, -322262; RV32IZCMP-NEXT:    .cfi_offset s5, -282263; RV32IZCMP-NEXT:    .cfi_offset s6, -242264; RV32IZCMP-NEXT:    .cfi_offset s7, -202265; RV32IZCMP-NEXT:    .cfi_offset s8, -162266; RV32IZCMP-NEXT:    .cfi_offset s9, -122267; RV32IZCMP-NEXT:    .cfi_offset s10, -82268; RV32IZCMP-NEXT:    .cfi_offset s11, -42269; RV32IZCMP-NEXT:    addi sp, sp, -322270; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 1442271; RV32IZCMP-NEXT:    sw t0, 76(sp) # 4-byte Folded Spill2272; RV32IZCMP-NEXT:    sw t1, 72(sp) # 4-byte Folded Spill2273; RV32IZCMP-NEXT:    sw t2, 68(sp) # 4-byte Folded Spill2274; RV32IZCMP-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill2275; RV32IZCMP-NEXT:    sw a1, 60(sp) # 4-byte Folded Spill2276; RV32IZCMP-NEXT:    sw a2, 56(sp) # 4-byte Folded Spill2277; RV32IZCMP-NEXT:    sw a3, 52(sp) # 4-byte Folded Spill2278; RV32IZCMP-NEXT:    sw a4, 48(sp) # 4-byte Folded Spill2279; RV32IZCMP-NEXT:    sw a5, 44(sp) # 4-byte Folded Spill2280; RV32IZCMP-NEXT:    sw a6, 40(sp) # 4-byte Folded Spill2281; RV32IZCMP-NEXT:    sw a7, 36(sp) # 4-byte Folded Spill2282; RV32IZCMP-NEXT:    sw t3, 32(sp) # 4-byte Folded Spill2283; RV32IZCMP-NEXT:    sw t4, 28(sp) # 4-byte Folded Spill2284; RV32IZCMP-NEXT:    sw t5, 24(sp) # 4-byte Folded Spill2285; RV32IZCMP-NEXT:    sw t6, 20(sp) # 4-byte Folded Spill2286; RV32IZCMP-NEXT:    .cfi_offset t0, -682287; RV32IZCMP-NEXT:    .cfi_offset t1, -722288; RV32IZCMP-NEXT:    .cfi_offset t2, -762289; RV32IZCMP-NEXT:    .cfi_offset a0, -802290; RV32IZCMP-NEXT:    .cfi_offset a1, -842291; RV32IZCMP-NEXT:    .cfi_offset a2, -882292; RV32IZCMP-NEXT:    .cfi_offset a3, -922293; RV32IZCMP-NEXT:    .cfi_offset a4, -962294; RV32IZCMP-NEXT:    .cfi_offset a5, -1002295; RV32IZCMP-NEXT:    .cfi_offset a6, -1042296; RV32IZCMP-NEXT:    .cfi_offset a7, -1082297; RV32IZCMP-NEXT:    .cfi_offset t3, -1122298; RV32IZCMP-NEXT:    .cfi_offset t4, -1162299; RV32IZCMP-NEXT:    .cfi_offset t5, -1202300; RV32IZCMP-NEXT:    .cfi_offset t6, -1242301; RV32IZCMP-NEXT:    lui a0, %hi(var_test_irq)2302; RV32IZCMP-NEXT:    addi a0, a0, %lo(var_test_irq)2303; RV32IZCMP-NEXT:    lw a1, 0(a0)2304; RV32IZCMP-NEXT:    sw a1, 16(sp) # 4-byte Folded Spill2305; RV32IZCMP-NEXT:    lw a1, 4(a0)2306; RV32IZCMP-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill2307; RV32IZCMP-NEXT:    lw a1, 8(a0)2308; RV32IZCMP-NEXT:    sw a1, 8(sp) # 4-byte Folded Spill2309; RV32IZCMP-NEXT:    lw a1, 12(a0)2310; RV32IZCMP-NEXT:    sw a1, 4(sp) # 4-byte Folded Spill2311; RV32IZCMP-NEXT:    lw a1, 16(a0)2312; RV32IZCMP-NEXT:    sw a1, 0(sp) # 4-byte Folded Spill2313; RV32IZCMP-NEXT:    lw t3, 20(a0)2314; RV32IZCMP-NEXT:    lw t4, 24(a0)2315; RV32IZCMP-NEXT:    lw t5, 28(a0)2316; RV32IZCMP-NEXT:    lw t6, 32(a0)2317; RV32IZCMP-NEXT:    lw s2, 36(a0)2318; RV32IZCMP-NEXT:    lw s3, 40(a0)2319; RV32IZCMP-NEXT:    lw s4, 44(a0)2320; RV32IZCMP-NEXT:    lw s5, 48(a0)2321; RV32IZCMP-NEXT:    lw s6, 52(a0)2322; RV32IZCMP-NEXT:    lw s7, 56(a0)2323; RV32IZCMP-NEXT:    lw s8, 60(a0)2324; RV32IZCMP-NEXT:    lw s9, 64(a0)2325; RV32IZCMP-NEXT:    lw s10, 68(a0)2326; RV32IZCMP-NEXT:    lw s11, 72(a0)2327; RV32IZCMP-NEXT:    lw ra, 76(a0)2328; RV32IZCMP-NEXT:    lw t2, 80(a0)2329; RV32IZCMP-NEXT:    lw s0, 84(a0)2330; RV32IZCMP-NEXT:    lw s1, 88(a0)2331; RV32IZCMP-NEXT:    lw t1, 92(a0)2332; RV32IZCMP-NEXT:    lw t0, 112(a0)2333; RV32IZCMP-NEXT:    lw a5, 116(a0)2334; RV32IZCMP-NEXT:    lw a3, 120(a0)2335; RV32IZCMP-NEXT:    lw a1, 124(a0)2336; RV32IZCMP-NEXT:    lw a7, 96(a0)2337; RV32IZCMP-NEXT:    lw a6, 100(a0)2338; RV32IZCMP-NEXT:    lw a4, 104(a0)2339; RV32IZCMP-NEXT:    lw a2, 108(a0)2340; RV32IZCMP-NEXT:    sw a1, 124(a0)2341; RV32IZCMP-NEXT:    sw a3, 120(a0)2342; RV32IZCMP-NEXT:    sw a5, 116(a0)2343; RV32IZCMP-NEXT:    sw t0, 112(a0)2344; RV32IZCMP-NEXT:    sw a2, 108(a0)2345; RV32IZCMP-NEXT:    sw a4, 104(a0)2346; RV32IZCMP-NEXT:    sw a6, 100(a0)2347; RV32IZCMP-NEXT:    sw a7, 96(a0)2348; RV32IZCMP-NEXT:    sw t1, 92(a0)2349; RV32IZCMP-NEXT:    sw s1, 88(a0)2350; RV32IZCMP-NEXT:    sw s0, 84(a0)2351; RV32IZCMP-NEXT:    sw t2, 80(a0)2352; RV32IZCMP-NEXT:    sw ra, 76(a0)2353; RV32IZCMP-NEXT:    sw s11, 72(a0)2354; RV32IZCMP-NEXT:    sw s10, 68(a0)2355; RV32IZCMP-NEXT:    sw s9, 64(a0)2356; RV32IZCMP-NEXT:    sw s8, 60(a0)2357; RV32IZCMP-NEXT:    sw s7, 56(a0)2358; RV32IZCMP-NEXT:    sw s6, 52(a0)2359; RV32IZCMP-NEXT:    sw s5, 48(a0)2360; RV32IZCMP-NEXT:    sw s4, 44(a0)2361; RV32IZCMP-NEXT:    sw s3, 40(a0)2362; RV32IZCMP-NEXT:    sw s2, 36(a0)2363; RV32IZCMP-NEXT:    sw t6, 32(a0)2364; RV32IZCMP-NEXT:    sw t5, 28(a0)2365; RV32IZCMP-NEXT:    sw t4, 24(a0)2366; RV32IZCMP-NEXT:    sw t3, 20(a0)2367; RV32IZCMP-NEXT:    lw a1, 0(sp) # 4-byte Folded Reload2368; RV32IZCMP-NEXT:    sw a1, 16(a0)2369; RV32IZCMP-NEXT:    lw a1, 4(sp) # 4-byte Folded Reload2370; RV32IZCMP-NEXT:    sw a1, 12(a0)2371; RV32IZCMP-NEXT:    lw a1, 8(sp) # 4-byte Folded Reload2372; RV32IZCMP-NEXT:    sw a1, 8(a0)2373; RV32IZCMP-NEXT:    lw a1, 12(sp) # 4-byte Folded Reload2374; RV32IZCMP-NEXT:    sw a1, 4(a0)2375; RV32IZCMP-NEXT:    lw a1, 16(sp) # 4-byte Folded Reload2376; RV32IZCMP-NEXT:    sw a1, 0(a0)2377; RV32IZCMP-NEXT:    lw t0, 76(sp) # 4-byte Folded Reload2378; RV32IZCMP-NEXT:    lw t1, 72(sp) # 4-byte Folded Reload2379; RV32IZCMP-NEXT:    lw t2, 68(sp) # 4-byte Folded Reload2380; RV32IZCMP-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload2381; RV32IZCMP-NEXT:    lw a1, 60(sp) # 4-byte Folded Reload2382; RV32IZCMP-NEXT:    lw a2, 56(sp) # 4-byte Folded Reload2383; RV32IZCMP-NEXT:    lw a3, 52(sp) # 4-byte Folded Reload2384; RV32IZCMP-NEXT:    lw a4, 48(sp) # 4-byte Folded Reload2385; RV32IZCMP-NEXT:    lw a5, 44(sp) # 4-byte Folded Reload2386; RV32IZCMP-NEXT:    lw a6, 40(sp) # 4-byte Folded Reload2387; RV32IZCMP-NEXT:    lw a7, 36(sp) # 4-byte Folded Reload2388; RV32IZCMP-NEXT:    lw t3, 32(sp) # 4-byte Folded Reload2389; RV32IZCMP-NEXT:    lw t4, 28(sp) # 4-byte Folded Reload2390; RV32IZCMP-NEXT:    lw t5, 24(sp) # 4-byte Folded Reload2391; RV32IZCMP-NEXT:    lw t6, 20(sp) # 4-byte Folded Reload2392; RV32IZCMP-NEXT:    .cfi_restore t02393; RV32IZCMP-NEXT:    .cfi_restore t12394; RV32IZCMP-NEXT:    .cfi_restore t22395; RV32IZCMP-NEXT:    .cfi_restore a02396; RV32IZCMP-NEXT:    .cfi_restore a12397; RV32IZCMP-NEXT:    .cfi_restore a22398; RV32IZCMP-NEXT:    .cfi_restore a32399; RV32IZCMP-NEXT:    .cfi_restore a42400; RV32IZCMP-NEXT:    .cfi_restore a52401; RV32IZCMP-NEXT:    .cfi_restore a62402; RV32IZCMP-NEXT:    .cfi_restore a72403; RV32IZCMP-NEXT:    .cfi_restore t32404; RV32IZCMP-NEXT:    .cfi_restore t42405; RV32IZCMP-NEXT:    .cfi_restore t52406; RV32IZCMP-NEXT:    .cfi_restore t62407; RV32IZCMP-NEXT:    addi sp, sp, 322408; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 1122409; RV32IZCMP-NEXT:    cm.pop {ra, s0-s11}, 1122410; RV32IZCMP-NEXT:    .cfi_restore ra2411; RV32IZCMP-NEXT:    .cfi_restore s02412; RV32IZCMP-NEXT:    .cfi_restore s12413; RV32IZCMP-NEXT:    .cfi_restore s22414; RV32IZCMP-NEXT:    .cfi_restore s32415; RV32IZCMP-NEXT:    .cfi_restore s42416; RV32IZCMP-NEXT:    .cfi_restore s52417; RV32IZCMP-NEXT:    .cfi_restore s62418; RV32IZCMP-NEXT:    .cfi_restore s72419; RV32IZCMP-NEXT:    .cfi_restore s82420; RV32IZCMP-NEXT:    .cfi_restore s92421; RV32IZCMP-NEXT:    .cfi_restore s102422; RV32IZCMP-NEXT:    .cfi_restore s112423; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 02424; RV32IZCMP-NEXT:    mret2425;2426; RV64IZCMP-LABEL: callee_with_irq:2427; RV64IZCMP:       # %bb.0:2428; RV64IZCMP-NEXT:    cm.push {ra, s0-s11}, -1602429; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 1602430; RV64IZCMP-NEXT:    .cfi_offset ra, -1042431; RV64IZCMP-NEXT:    .cfi_offset s0, -962432; RV64IZCMP-NEXT:    .cfi_offset s1, -882433; RV64IZCMP-NEXT:    .cfi_offset s2, -802434; RV64IZCMP-NEXT:    .cfi_offset s3, -722435; RV64IZCMP-NEXT:    .cfi_offset s4, -642436; RV64IZCMP-NEXT:    .cfi_offset s5, -562437; RV64IZCMP-NEXT:    .cfi_offset s6, -482438; RV64IZCMP-NEXT:    .cfi_offset s7, -402439; RV64IZCMP-NEXT:    .cfi_offset s8, -322440; RV64IZCMP-NEXT:    .cfi_offset s9, -242441; RV64IZCMP-NEXT:    .cfi_offset s10, -162442; RV64IZCMP-NEXT:    .cfi_offset s11, -82443; RV64IZCMP-NEXT:    addi sp, sp, -1122444; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 2722445; RV64IZCMP-NEXT:    sd t0, 152(sp) # 8-byte Folded Spill2446; RV64IZCMP-NEXT:    sd t1, 144(sp) # 8-byte Folded Spill2447; RV64IZCMP-NEXT:    sd t2, 136(sp) # 8-byte Folded Spill2448; RV64IZCMP-NEXT:    sd a0, 128(sp) # 8-byte Folded Spill2449; RV64IZCMP-NEXT:    sd a1, 120(sp) # 8-byte Folded Spill2450; RV64IZCMP-NEXT:    sd a2, 112(sp) # 8-byte Folded Spill2451; RV64IZCMP-NEXT:    sd a3, 104(sp) # 8-byte Folded Spill2452; RV64IZCMP-NEXT:    sd a4, 96(sp) # 8-byte Folded Spill2453; RV64IZCMP-NEXT:    sd a5, 88(sp) # 8-byte Folded Spill2454; RV64IZCMP-NEXT:    sd a6, 80(sp) # 8-byte Folded Spill2455; RV64IZCMP-NEXT:    sd a7, 72(sp) # 8-byte Folded Spill2456; RV64IZCMP-NEXT:    sd t3, 64(sp) # 8-byte Folded Spill2457; RV64IZCMP-NEXT:    sd t4, 56(sp) # 8-byte Folded Spill2458; RV64IZCMP-NEXT:    sd t5, 48(sp) # 8-byte Folded Spill2459; RV64IZCMP-NEXT:    sd t6, 40(sp) # 8-byte Folded Spill2460; RV64IZCMP-NEXT:    .cfi_offset t0, -1202461; RV64IZCMP-NEXT:    .cfi_offset t1, -1282462; RV64IZCMP-NEXT:    .cfi_offset t2, -1362463; RV64IZCMP-NEXT:    .cfi_offset a0, -1442464; RV64IZCMP-NEXT:    .cfi_offset a1, -1522465; RV64IZCMP-NEXT:    .cfi_offset a2, -1602466; RV64IZCMP-NEXT:    .cfi_offset a3, -1682467; RV64IZCMP-NEXT:    .cfi_offset a4, -1762468; RV64IZCMP-NEXT:    .cfi_offset a5, -1842469; RV64IZCMP-NEXT:    .cfi_offset a6, -1922470; RV64IZCMP-NEXT:    .cfi_offset a7, -2002471; RV64IZCMP-NEXT:    .cfi_offset t3, -2082472; RV64IZCMP-NEXT:    .cfi_offset t4, -2162473; RV64IZCMP-NEXT:    .cfi_offset t5, -2242474; RV64IZCMP-NEXT:    .cfi_offset t6, -2322475; RV64IZCMP-NEXT:    lui a0, %hi(var_test_irq)2476; RV64IZCMP-NEXT:    addi a0, a0, %lo(var_test_irq)2477; RV64IZCMP-NEXT:    lw a1, 0(a0)2478; RV64IZCMP-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill2479; RV64IZCMP-NEXT:    lw a1, 4(a0)2480; RV64IZCMP-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill2481; RV64IZCMP-NEXT:    lw a1, 8(a0)2482; RV64IZCMP-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill2483; RV64IZCMP-NEXT:    lw a1, 12(a0)2484; RV64IZCMP-NEXT:    sd a1, 8(sp) # 8-byte Folded Spill2485; RV64IZCMP-NEXT:    lw a1, 16(a0)2486; RV64IZCMP-NEXT:    sd a1, 0(sp) # 8-byte Folded Spill2487; RV64IZCMP-NEXT:    lw t3, 20(a0)2488; RV64IZCMP-NEXT:    lw t4, 24(a0)2489; RV64IZCMP-NEXT:    lw t5, 28(a0)2490; RV64IZCMP-NEXT:    lw t6, 32(a0)2491; RV64IZCMP-NEXT:    lw s2, 36(a0)2492; RV64IZCMP-NEXT:    lw s3, 40(a0)2493; RV64IZCMP-NEXT:    lw s4, 44(a0)2494; RV64IZCMP-NEXT:    lw s5, 48(a0)2495; RV64IZCMP-NEXT:    lw s6, 52(a0)2496; RV64IZCMP-NEXT:    lw s7, 56(a0)2497; RV64IZCMP-NEXT:    lw s8, 60(a0)2498; RV64IZCMP-NEXT:    lw s9, 64(a0)2499; RV64IZCMP-NEXT:    lw s10, 68(a0)2500; RV64IZCMP-NEXT:    lw s11, 72(a0)2501; RV64IZCMP-NEXT:    lw ra, 76(a0)2502; RV64IZCMP-NEXT:    lw t2, 80(a0)2503; RV64IZCMP-NEXT:    lw s0, 84(a0)2504; RV64IZCMP-NEXT:    lw s1, 88(a0)2505; RV64IZCMP-NEXT:    lw t1, 92(a0)2506; RV64IZCMP-NEXT:    lw t0, 112(a0)2507; RV64IZCMP-NEXT:    lw a5, 116(a0)2508; RV64IZCMP-NEXT:    lw a3, 120(a0)2509; RV64IZCMP-NEXT:    lw a1, 124(a0)2510; RV64IZCMP-NEXT:    lw a7, 96(a0)2511; RV64IZCMP-NEXT:    lw a6, 100(a0)2512; RV64IZCMP-NEXT:    lw a4, 104(a0)2513; RV64IZCMP-NEXT:    lw a2, 108(a0)2514; RV64IZCMP-NEXT:    sw a1, 124(a0)2515; RV64IZCMP-NEXT:    sw a3, 120(a0)2516; RV64IZCMP-NEXT:    sw a5, 116(a0)2517; RV64IZCMP-NEXT:    sw t0, 112(a0)2518; RV64IZCMP-NEXT:    sw a2, 108(a0)2519; RV64IZCMP-NEXT:    sw a4, 104(a0)2520; RV64IZCMP-NEXT:    sw a6, 100(a0)2521; RV64IZCMP-NEXT:    sw a7, 96(a0)2522; RV64IZCMP-NEXT:    sw t1, 92(a0)2523; RV64IZCMP-NEXT:    sw s1, 88(a0)2524; RV64IZCMP-NEXT:    sw s0, 84(a0)2525; RV64IZCMP-NEXT:    sw t2, 80(a0)2526; RV64IZCMP-NEXT:    sw ra, 76(a0)2527; RV64IZCMP-NEXT:    sw s11, 72(a0)2528; RV64IZCMP-NEXT:    sw s10, 68(a0)2529; RV64IZCMP-NEXT:    sw s9, 64(a0)2530; RV64IZCMP-NEXT:    sw s8, 60(a0)2531; RV64IZCMP-NEXT:    sw s7, 56(a0)2532; RV64IZCMP-NEXT:    sw s6, 52(a0)2533; RV64IZCMP-NEXT:    sw s5, 48(a0)2534; RV64IZCMP-NEXT:    sw s4, 44(a0)2535; RV64IZCMP-NEXT:    sw s3, 40(a0)2536; RV64IZCMP-NEXT:    sw s2, 36(a0)2537; RV64IZCMP-NEXT:    sw t6, 32(a0)2538; RV64IZCMP-NEXT:    sw t5, 28(a0)2539; RV64IZCMP-NEXT:    sw t4, 24(a0)2540; RV64IZCMP-NEXT:    sw t3, 20(a0)2541; RV64IZCMP-NEXT:    ld a1, 0(sp) # 8-byte Folded Reload2542; RV64IZCMP-NEXT:    sw a1, 16(a0)2543; RV64IZCMP-NEXT:    ld a1, 8(sp) # 8-byte Folded Reload2544; RV64IZCMP-NEXT:    sw a1, 12(a0)2545; RV64IZCMP-NEXT:    ld a1, 16(sp) # 8-byte Folded Reload2546; RV64IZCMP-NEXT:    sw a1, 8(a0)2547; RV64IZCMP-NEXT:    ld a1, 24(sp) # 8-byte Folded Reload2548; RV64IZCMP-NEXT:    sw a1, 4(a0)2549; RV64IZCMP-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload2550; RV64IZCMP-NEXT:    sw a1, 0(a0)2551; RV64IZCMP-NEXT:    ld t0, 152(sp) # 8-byte Folded Reload2552; RV64IZCMP-NEXT:    ld t1, 144(sp) # 8-byte Folded Reload2553; RV64IZCMP-NEXT:    ld t2, 136(sp) # 8-byte Folded Reload2554; RV64IZCMP-NEXT:    ld a0, 128(sp) # 8-byte Folded Reload2555; RV64IZCMP-NEXT:    ld a1, 120(sp) # 8-byte Folded Reload2556; RV64IZCMP-NEXT:    ld a2, 112(sp) # 8-byte Folded Reload2557; RV64IZCMP-NEXT:    ld a3, 104(sp) # 8-byte Folded Reload2558; RV64IZCMP-NEXT:    ld a4, 96(sp) # 8-byte Folded Reload2559; RV64IZCMP-NEXT:    ld a5, 88(sp) # 8-byte Folded Reload2560; RV64IZCMP-NEXT:    ld a6, 80(sp) # 8-byte Folded Reload2561; RV64IZCMP-NEXT:    ld a7, 72(sp) # 8-byte Folded Reload2562; RV64IZCMP-NEXT:    ld t3, 64(sp) # 8-byte Folded Reload2563; RV64IZCMP-NEXT:    ld t4, 56(sp) # 8-byte Folded Reload2564; RV64IZCMP-NEXT:    ld t5, 48(sp) # 8-byte Folded Reload2565; RV64IZCMP-NEXT:    ld t6, 40(sp) # 8-byte Folded Reload2566; RV64IZCMP-NEXT:    .cfi_restore t02567; RV64IZCMP-NEXT:    .cfi_restore t12568; RV64IZCMP-NEXT:    .cfi_restore t22569; RV64IZCMP-NEXT:    .cfi_restore a02570; RV64IZCMP-NEXT:    .cfi_restore a12571; RV64IZCMP-NEXT:    .cfi_restore a22572; RV64IZCMP-NEXT:    .cfi_restore a32573; RV64IZCMP-NEXT:    .cfi_restore a42574; RV64IZCMP-NEXT:    .cfi_restore a52575; RV64IZCMP-NEXT:    .cfi_restore a62576; RV64IZCMP-NEXT:    .cfi_restore a72577; RV64IZCMP-NEXT:    .cfi_restore t32578; RV64IZCMP-NEXT:    .cfi_restore t42579; RV64IZCMP-NEXT:    .cfi_restore t52580; RV64IZCMP-NEXT:    .cfi_restore t62581; RV64IZCMP-NEXT:    addi sp, sp, 1122582; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 1602583; RV64IZCMP-NEXT:    cm.pop {ra, s0-s11}, 1602584; RV64IZCMP-NEXT:    .cfi_restore ra2585; RV64IZCMP-NEXT:    .cfi_restore s02586; RV64IZCMP-NEXT:    .cfi_restore s12587; RV64IZCMP-NEXT:    .cfi_restore s22588; RV64IZCMP-NEXT:    .cfi_restore s32589; RV64IZCMP-NEXT:    .cfi_restore s42590; RV64IZCMP-NEXT:    .cfi_restore s52591; RV64IZCMP-NEXT:    .cfi_restore s62592; RV64IZCMP-NEXT:    .cfi_restore s72593; RV64IZCMP-NEXT:    .cfi_restore s82594; RV64IZCMP-NEXT:    .cfi_restore s92595; RV64IZCMP-NEXT:    .cfi_restore s102596; RV64IZCMP-NEXT:    .cfi_restore s112597; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 02598; RV64IZCMP-NEXT:    mret2599;2600; RV32IZCMP-SR-LABEL: callee_with_irq:2601; RV32IZCMP-SR:       # %bb.0:2602; RV32IZCMP-SR-NEXT:    cm.push {ra, s0-s11}, -1122603; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 1122604; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -522605; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -482606; RV32IZCMP-SR-NEXT:    .cfi_offset s1, -442607; RV32IZCMP-SR-NEXT:    .cfi_offset s2, -402608; RV32IZCMP-SR-NEXT:    .cfi_offset s3, -362609; RV32IZCMP-SR-NEXT:    .cfi_offset s4, -322610; RV32IZCMP-SR-NEXT:    .cfi_offset s5, -282611; RV32IZCMP-SR-NEXT:    .cfi_offset s6, -242612; RV32IZCMP-SR-NEXT:    .cfi_offset s7, -202613; RV32IZCMP-SR-NEXT:    .cfi_offset s8, -162614; RV32IZCMP-SR-NEXT:    .cfi_offset s9, -122615; RV32IZCMP-SR-NEXT:    .cfi_offset s10, -82616; RV32IZCMP-SR-NEXT:    .cfi_offset s11, -42617; RV32IZCMP-SR-NEXT:    addi sp, sp, -322618; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 1442619; RV32IZCMP-SR-NEXT:    sw t0, 76(sp) # 4-byte Folded Spill2620; RV32IZCMP-SR-NEXT:    sw t1, 72(sp) # 4-byte Folded Spill2621; RV32IZCMP-SR-NEXT:    sw t2, 68(sp) # 4-byte Folded Spill2622; RV32IZCMP-SR-NEXT:    sw a0, 64(sp) # 4-byte Folded Spill2623; RV32IZCMP-SR-NEXT:    sw a1, 60(sp) # 4-byte Folded Spill2624; RV32IZCMP-SR-NEXT:    sw a2, 56(sp) # 4-byte Folded Spill2625; RV32IZCMP-SR-NEXT:    sw a3, 52(sp) # 4-byte Folded Spill2626; RV32IZCMP-SR-NEXT:    sw a4, 48(sp) # 4-byte Folded Spill2627; RV32IZCMP-SR-NEXT:    sw a5, 44(sp) # 4-byte Folded Spill2628; RV32IZCMP-SR-NEXT:    sw a6, 40(sp) # 4-byte Folded Spill2629; RV32IZCMP-SR-NEXT:    sw a7, 36(sp) # 4-byte Folded Spill2630; RV32IZCMP-SR-NEXT:    sw t3, 32(sp) # 4-byte Folded Spill2631; RV32IZCMP-SR-NEXT:    sw t4, 28(sp) # 4-byte Folded Spill2632; RV32IZCMP-SR-NEXT:    sw t5, 24(sp) # 4-byte Folded Spill2633; RV32IZCMP-SR-NEXT:    sw t6, 20(sp) # 4-byte Folded Spill2634; RV32IZCMP-SR-NEXT:    .cfi_offset t0, -682635; RV32IZCMP-SR-NEXT:    .cfi_offset t1, -722636; RV32IZCMP-SR-NEXT:    .cfi_offset t2, -762637; RV32IZCMP-SR-NEXT:    .cfi_offset a0, -802638; RV32IZCMP-SR-NEXT:    .cfi_offset a1, -842639; RV32IZCMP-SR-NEXT:    .cfi_offset a2, -882640; RV32IZCMP-SR-NEXT:    .cfi_offset a3, -922641; RV32IZCMP-SR-NEXT:    .cfi_offset a4, -962642; RV32IZCMP-SR-NEXT:    .cfi_offset a5, -1002643; RV32IZCMP-SR-NEXT:    .cfi_offset a6, -1042644; RV32IZCMP-SR-NEXT:    .cfi_offset a7, -1082645; RV32IZCMP-SR-NEXT:    .cfi_offset t3, -1122646; RV32IZCMP-SR-NEXT:    .cfi_offset t4, -1162647; RV32IZCMP-SR-NEXT:    .cfi_offset t5, -1202648; RV32IZCMP-SR-NEXT:    .cfi_offset t6, -1242649; RV32IZCMP-SR-NEXT:    lui a0, %hi(var_test_irq)2650; RV32IZCMP-SR-NEXT:    addi a0, a0, %lo(var_test_irq)2651; RV32IZCMP-SR-NEXT:    lw a1, 0(a0)2652; RV32IZCMP-SR-NEXT:    sw a1, 16(sp) # 4-byte Folded Spill2653; RV32IZCMP-SR-NEXT:    lw a1, 4(a0)2654; RV32IZCMP-SR-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill2655; RV32IZCMP-SR-NEXT:    lw a1, 8(a0)2656; RV32IZCMP-SR-NEXT:    sw a1, 8(sp) # 4-byte Folded Spill2657; RV32IZCMP-SR-NEXT:    lw a1, 12(a0)2658; RV32IZCMP-SR-NEXT:    sw a1, 4(sp) # 4-byte Folded Spill2659; RV32IZCMP-SR-NEXT:    lw a1, 16(a0)2660; RV32IZCMP-SR-NEXT:    sw a1, 0(sp) # 4-byte Folded Spill2661; RV32IZCMP-SR-NEXT:    lw t3, 20(a0)2662; RV32IZCMP-SR-NEXT:    lw t4, 24(a0)2663; RV32IZCMP-SR-NEXT:    lw t5, 28(a0)2664; RV32IZCMP-SR-NEXT:    lw t6, 32(a0)2665; RV32IZCMP-SR-NEXT:    lw s2, 36(a0)2666; RV32IZCMP-SR-NEXT:    lw s3, 40(a0)2667; RV32IZCMP-SR-NEXT:    lw s4, 44(a0)2668; RV32IZCMP-SR-NEXT:    lw s5, 48(a0)2669; RV32IZCMP-SR-NEXT:    lw s6, 52(a0)2670; RV32IZCMP-SR-NEXT:    lw s7, 56(a0)2671; RV32IZCMP-SR-NEXT:    lw s8, 60(a0)2672; RV32IZCMP-SR-NEXT:    lw s9, 64(a0)2673; RV32IZCMP-SR-NEXT:    lw s10, 68(a0)2674; RV32IZCMP-SR-NEXT:    lw s11, 72(a0)2675; RV32IZCMP-SR-NEXT:    lw ra, 76(a0)2676; RV32IZCMP-SR-NEXT:    lw t2, 80(a0)2677; RV32IZCMP-SR-NEXT:    lw s0, 84(a0)2678; RV32IZCMP-SR-NEXT:    lw s1, 88(a0)2679; RV32IZCMP-SR-NEXT:    lw t1, 92(a0)2680; RV32IZCMP-SR-NEXT:    lw t0, 112(a0)2681; RV32IZCMP-SR-NEXT:    lw a5, 116(a0)2682; RV32IZCMP-SR-NEXT:    lw a3, 120(a0)2683; RV32IZCMP-SR-NEXT:    lw a1, 124(a0)2684; RV32IZCMP-SR-NEXT:    lw a7, 96(a0)2685; RV32IZCMP-SR-NEXT:    lw a6, 100(a0)2686; RV32IZCMP-SR-NEXT:    lw a4, 104(a0)2687; RV32IZCMP-SR-NEXT:    lw a2, 108(a0)2688; RV32IZCMP-SR-NEXT:    sw a1, 124(a0)2689; RV32IZCMP-SR-NEXT:    sw a3, 120(a0)2690; RV32IZCMP-SR-NEXT:    sw a5, 116(a0)2691; RV32IZCMP-SR-NEXT:    sw t0, 112(a0)2692; RV32IZCMP-SR-NEXT:    sw a2, 108(a0)2693; RV32IZCMP-SR-NEXT:    sw a4, 104(a0)2694; RV32IZCMP-SR-NEXT:    sw a6, 100(a0)2695; RV32IZCMP-SR-NEXT:    sw a7, 96(a0)2696; RV32IZCMP-SR-NEXT:    sw t1, 92(a0)2697; RV32IZCMP-SR-NEXT:    sw s1, 88(a0)2698; RV32IZCMP-SR-NEXT:    sw s0, 84(a0)2699; RV32IZCMP-SR-NEXT:    sw t2, 80(a0)2700; RV32IZCMP-SR-NEXT:    sw ra, 76(a0)2701; RV32IZCMP-SR-NEXT:    sw s11, 72(a0)2702; RV32IZCMP-SR-NEXT:    sw s10, 68(a0)2703; RV32IZCMP-SR-NEXT:    sw s9, 64(a0)2704; RV32IZCMP-SR-NEXT:    sw s8, 60(a0)2705; RV32IZCMP-SR-NEXT:    sw s7, 56(a0)2706; RV32IZCMP-SR-NEXT:    sw s6, 52(a0)2707; RV32IZCMP-SR-NEXT:    sw s5, 48(a0)2708; RV32IZCMP-SR-NEXT:    sw s4, 44(a0)2709; RV32IZCMP-SR-NEXT:    sw s3, 40(a0)2710; RV32IZCMP-SR-NEXT:    sw s2, 36(a0)2711; RV32IZCMP-SR-NEXT:    sw t6, 32(a0)2712; RV32IZCMP-SR-NEXT:    sw t5, 28(a0)2713; RV32IZCMP-SR-NEXT:    sw t4, 24(a0)2714; RV32IZCMP-SR-NEXT:    sw t3, 20(a0)2715; RV32IZCMP-SR-NEXT:    lw a1, 0(sp) # 4-byte Folded Reload2716; RV32IZCMP-SR-NEXT:    sw a1, 16(a0)2717; RV32IZCMP-SR-NEXT:    lw a1, 4(sp) # 4-byte Folded Reload2718; RV32IZCMP-SR-NEXT:    sw a1, 12(a0)2719; RV32IZCMP-SR-NEXT:    lw a1, 8(sp) # 4-byte Folded Reload2720; RV32IZCMP-SR-NEXT:    sw a1, 8(a0)2721; RV32IZCMP-SR-NEXT:    lw a1, 12(sp) # 4-byte Folded Reload2722; RV32IZCMP-SR-NEXT:    sw a1, 4(a0)2723; RV32IZCMP-SR-NEXT:    lw a1, 16(sp) # 4-byte Folded Reload2724; RV32IZCMP-SR-NEXT:    sw a1, 0(a0)2725; RV32IZCMP-SR-NEXT:    lw t0, 76(sp) # 4-byte Folded Reload2726; RV32IZCMP-SR-NEXT:    lw t1, 72(sp) # 4-byte Folded Reload2727; RV32IZCMP-SR-NEXT:    lw t2, 68(sp) # 4-byte Folded Reload2728; RV32IZCMP-SR-NEXT:    lw a0, 64(sp) # 4-byte Folded Reload2729; RV32IZCMP-SR-NEXT:    lw a1, 60(sp) # 4-byte Folded Reload2730; RV32IZCMP-SR-NEXT:    lw a2, 56(sp) # 4-byte Folded Reload2731; RV32IZCMP-SR-NEXT:    lw a3, 52(sp) # 4-byte Folded Reload2732; RV32IZCMP-SR-NEXT:    lw a4, 48(sp) # 4-byte Folded Reload2733; RV32IZCMP-SR-NEXT:    lw a5, 44(sp) # 4-byte Folded Reload2734; RV32IZCMP-SR-NEXT:    lw a6, 40(sp) # 4-byte Folded Reload2735; RV32IZCMP-SR-NEXT:    lw a7, 36(sp) # 4-byte Folded Reload2736; RV32IZCMP-SR-NEXT:    lw t3, 32(sp) # 4-byte Folded Reload2737; RV32IZCMP-SR-NEXT:    lw t4, 28(sp) # 4-byte Folded Reload2738; RV32IZCMP-SR-NEXT:    lw t5, 24(sp) # 4-byte Folded Reload2739; RV32IZCMP-SR-NEXT:    lw t6, 20(sp) # 4-byte Folded Reload2740; RV32IZCMP-SR-NEXT:    .cfi_restore t02741; RV32IZCMP-SR-NEXT:    .cfi_restore t12742; RV32IZCMP-SR-NEXT:    .cfi_restore t22743; RV32IZCMP-SR-NEXT:    .cfi_restore a02744; RV32IZCMP-SR-NEXT:    .cfi_restore a12745; RV32IZCMP-SR-NEXT:    .cfi_restore a22746; RV32IZCMP-SR-NEXT:    .cfi_restore a32747; RV32IZCMP-SR-NEXT:    .cfi_restore a42748; RV32IZCMP-SR-NEXT:    .cfi_restore a52749; RV32IZCMP-SR-NEXT:    .cfi_restore a62750; RV32IZCMP-SR-NEXT:    .cfi_restore a72751; RV32IZCMP-SR-NEXT:    .cfi_restore t32752; RV32IZCMP-SR-NEXT:    .cfi_restore t42753; RV32IZCMP-SR-NEXT:    .cfi_restore t52754; RV32IZCMP-SR-NEXT:    .cfi_restore t62755; RV32IZCMP-SR-NEXT:    addi sp, sp, 322756; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 1122757; RV32IZCMP-SR-NEXT:    cm.pop {ra, s0-s11}, 1122758; RV32IZCMP-SR-NEXT:    .cfi_restore ra2759; RV32IZCMP-SR-NEXT:    .cfi_restore s02760; RV32IZCMP-SR-NEXT:    .cfi_restore s12761; RV32IZCMP-SR-NEXT:    .cfi_restore s22762; RV32IZCMP-SR-NEXT:    .cfi_restore s32763; RV32IZCMP-SR-NEXT:    .cfi_restore s42764; RV32IZCMP-SR-NEXT:    .cfi_restore s52765; RV32IZCMP-SR-NEXT:    .cfi_restore s62766; RV32IZCMP-SR-NEXT:    .cfi_restore s72767; RV32IZCMP-SR-NEXT:    .cfi_restore s82768; RV32IZCMP-SR-NEXT:    .cfi_restore s92769; RV32IZCMP-SR-NEXT:    .cfi_restore s102770; RV32IZCMP-SR-NEXT:    .cfi_restore s112771; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 02772; RV32IZCMP-SR-NEXT:    mret2773;2774; RV64IZCMP-SR-LABEL: callee_with_irq:2775; RV64IZCMP-SR:       # %bb.0:2776; RV64IZCMP-SR-NEXT:    cm.push {ra, s0-s11}, -1602777; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 1602778; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -1042779; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -962780; RV64IZCMP-SR-NEXT:    .cfi_offset s1, -882781; RV64IZCMP-SR-NEXT:    .cfi_offset s2, -802782; RV64IZCMP-SR-NEXT:    .cfi_offset s3, -722783; RV64IZCMP-SR-NEXT:    .cfi_offset s4, -642784; RV64IZCMP-SR-NEXT:    .cfi_offset s5, -562785; RV64IZCMP-SR-NEXT:    .cfi_offset s6, -482786; RV64IZCMP-SR-NEXT:    .cfi_offset s7, -402787; RV64IZCMP-SR-NEXT:    .cfi_offset s8, -322788; RV64IZCMP-SR-NEXT:    .cfi_offset s9, -242789; RV64IZCMP-SR-NEXT:    .cfi_offset s10, -162790; RV64IZCMP-SR-NEXT:    .cfi_offset s11, -82791; RV64IZCMP-SR-NEXT:    addi sp, sp, -1122792; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 2722793; RV64IZCMP-SR-NEXT:    sd t0, 152(sp) # 8-byte Folded Spill2794; RV64IZCMP-SR-NEXT:    sd t1, 144(sp) # 8-byte Folded Spill2795; RV64IZCMP-SR-NEXT:    sd t2, 136(sp) # 8-byte Folded Spill2796; RV64IZCMP-SR-NEXT:    sd a0, 128(sp) # 8-byte Folded Spill2797; RV64IZCMP-SR-NEXT:    sd a1, 120(sp) # 8-byte Folded Spill2798; RV64IZCMP-SR-NEXT:    sd a2, 112(sp) # 8-byte Folded Spill2799; RV64IZCMP-SR-NEXT:    sd a3, 104(sp) # 8-byte Folded Spill2800; RV64IZCMP-SR-NEXT:    sd a4, 96(sp) # 8-byte Folded Spill2801; RV64IZCMP-SR-NEXT:    sd a5, 88(sp) # 8-byte Folded Spill2802; RV64IZCMP-SR-NEXT:    sd a6, 80(sp) # 8-byte Folded Spill2803; RV64IZCMP-SR-NEXT:    sd a7, 72(sp) # 8-byte Folded Spill2804; RV64IZCMP-SR-NEXT:    sd t3, 64(sp) # 8-byte Folded Spill2805; RV64IZCMP-SR-NEXT:    sd t4, 56(sp) # 8-byte Folded Spill2806; RV64IZCMP-SR-NEXT:    sd t5, 48(sp) # 8-byte Folded Spill2807; RV64IZCMP-SR-NEXT:    sd t6, 40(sp) # 8-byte Folded Spill2808; RV64IZCMP-SR-NEXT:    .cfi_offset t0, -1202809; RV64IZCMP-SR-NEXT:    .cfi_offset t1, -1282810; RV64IZCMP-SR-NEXT:    .cfi_offset t2, -1362811; RV64IZCMP-SR-NEXT:    .cfi_offset a0, -1442812; RV64IZCMP-SR-NEXT:    .cfi_offset a1, -1522813; RV64IZCMP-SR-NEXT:    .cfi_offset a2, -1602814; RV64IZCMP-SR-NEXT:    .cfi_offset a3, -1682815; RV64IZCMP-SR-NEXT:    .cfi_offset a4, -1762816; RV64IZCMP-SR-NEXT:    .cfi_offset a5, -1842817; RV64IZCMP-SR-NEXT:    .cfi_offset a6, -1922818; RV64IZCMP-SR-NEXT:    .cfi_offset a7, -2002819; RV64IZCMP-SR-NEXT:    .cfi_offset t3, -2082820; RV64IZCMP-SR-NEXT:    .cfi_offset t4, -2162821; RV64IZCMP-SR-NEXT:    .cfi_offset t5, -2242822; RV64IZCMP-SR-NEXT:    .cfi_offset t6, -2322823; RV64IZCMP-SR-NEXT:    lui a0, %hi(var_test_irq)2824; RV64IZCMP-SR-NEXT:    addi a0, a0, %lo(var_test_irq)2825; RV64IZCMP-SR-NEXT:    lw a1, 0(a0)2826; RV64IZCMP-SR-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill2827; RV64IZCMP-SR-NEXT:    lw a1, 4(a0)2828; RV64IZCMP-SR-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill2829; RV64IZCMP-SR-NEXT:    lw a1, 8(a0)2830; RV64IZCMP-SR-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill2831; RV64IZCMP-SR-NEXT:    lw a1, 12(a0)2832; RV64IZCMP-SR-NEXT:    sd a1, 8(sp) # 8-byte Folded Spill2833; RV64IZCMP-SR-NEXT:    lw a1, 16(a0)2834; RV64IZCMP-SR-NEXT:    sd a1, 0(sp) # 8-byte Folded Spill2835; RV64IZCMP-SR-NEXT:    lw t3, 20(a0)2836; RV64IZCMP-SR-NEXT:    lw t4, 24(a0)2837; RV64IZCMP-SR-NEXT:    lw t5, 28(a0)2838; RV64IZCMP-SR-NEXT:    lw t6, 32(a0)2839; RV64IZCMP-SR-NEXT:    lw s2, 36(a0)2840; RV64IZCMP-SR-NEXT:    lw s3, 40(a0)2841; RV64IZCMP-SR-NEXT:    lw s4, 44(a0)2842; RV64IZCMP-SR-NEXT:    lw s5, 48(a0)2843; RV64IZCMP-SR-NEXT:    lw s6, 52(a0)2844; RV64IZCMP-SR-NEXT:    lw s7, 56(a0)2845; RV64IZCMP-SR-NEXT:    lw s8, 60(a0)2846; RV64IZCMP-SR-NEXT:    lw s9, 64(a0)2847; RV64IZCMP-SR-NEXT:    lw s10, 68(a0)2848; RV64IZCMP-SR-NEXT:    lw s11, 72(a0)2849; RV64IZCMP-SR-NEXT:    lw ra, 76(a0)2850; RV64IZCMP-SR-NEXT:    lw t2, 80(a0)2851; RV64IZCMP-SR-NEXT:    lw s0, 84(a0)2852; RV64IZCMP-SR-NEXT:    lw s1, 88(a0)2853; RV64IZCMP-SR-NEXT:    lw t1, 92(a0)2854; RV64IZCMP-SR-NEXT:    lw t0, 112(a0)2855; RV64IZCMP-SR-NEXT:    lw a5, 116(a0)2856; RV64IZCMP-SR-NEXT:    lw a3, 120(a0)2857; RV64IZCMP-SR-NEXT:    lw a1, 124(a0)2858; RV64IZCMP-SR-NEXT:    lw a7, 96(a0)2859; RV64IZCMP-SR-NEXT:    lw a6, 100(a0)2860; RV64IZCMP-SR-NEXT:    lw a4, 104(a0)2861; RV64IZCMP-SR-NEXT:    lw a2, 108(a0)2862; RV64IZCMP-SR-NEXT:    sw a1, 124(a0)2863; RV64IZCMP-SR-NEXT:    sw a3, 120(a0)2864; RV64IZCMP-SR-NEXT:    sw a5, 116(a0)2865; RV64IZCMP-SR-NEXT:    sw t0, 112(a0)2866; RV64IZCMP-SR-NEXT:    sw a2, 108(a0)2867; RV64IZCMP-SR-NEXT:    sw a4, 104(a0)2868; RV64IZCMP-SR-NEXT:    sw a6, 100(a0)2869; RV64IZCMP-SR-NEXT:    sw a7, 96(a0)2870; RV64IZCMP-SR-NEXT:    sw t1, 92(a0)2871; RV64IZCMP-SR-NEXT:    sw s1, 88(a0)2872; RV64IZCMP-SR-NEXT:    sw s0, 84(a0)2873; RV64IZCMP-SR-NEXT:    sw t2, 80(a0)2874; RV64IZCMP-SR-NEXT:    sw ra, 76(a0)2875; RV64IZCMP-SR-NEXT:    sw s11, 72(a0)2876; RV64IZCMP-SR-NEXT:    sw s10, 68(a0)2877; RV64IZCMP-SR-NEXT:    sw s9, 64(a0)2878; RV64IZCMP-SR-NEXT:    sw s8, 60(a0)2879; RV64IZCMP-SR-NEXT:    sw s7, 56(a0)2880; RV64IZCMP-SR-NEXT:    sw s6, 52(a0)2881; RV64IZCMP-SR-NEXT:    sw s5, 48(a0)2882; RV64IZCMP-SR-NEXT:    sw s4, 44(a0)2883; RV64IZCMP-SR-NEXT:    sw s3, 40(a0)2884; RV64IZCMP-SR-NEXT:    sw s2, 36(a0)2885; RV64IZCMP-SR-NEXT:    sw t6, 32(a0)2886; RV64IZCMP-SR-NEXT:    sw t5, 28(a0)2887; RV64IZCMP-SR-NEXT:    sw t4, 24(a0)2888; RV64IZCMP-SR-NEXT:    sw t3, 20(a0)2889; RV64IZCMP-SR-NEXT:    ld a1, 0(sp) # 8-byte Folded Reload2890; RV64IZCMP-SR-NEXT:    sw a1, 16(a0)2891; RV64IZCMP-SR-NEXT:    ld a1, 8(sp) # 8-byte Folded Reload2892; RV64IZCMP-SR-NEXT:    sw a1, 12(a0)2893; RV64IZCMP-SR-NEXT:    ld a1, 16(sp) # 8-byte Folded Reload2894; RV64IZCMP-SR-NEXT:    sw a1, 8(a0)2895; RV64IZCMP-SR-NEXT:    ld a1, 24(sp) # 8-byte Folded Reload2896; RV64IZCMP-SR-NEXT:    sw a1, 4(a0)2897; RV64IZCMP-SR-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload2898; RV64IZCMP-SR-NEXT:    sw a1, 0(a0)2899; RV64IZCMP-SR-NEXT:    ld t0, 152(sp) # 8-byte Folded Reload2900; RV64IZCMP-SR-NEXT:    ld t1, 144(sp) # 8-byte Folded Reload2901; RV64IZCMP-SR-NEXT:    ld t2, 136(sp) # 8-byte Folded Reload2902; RV64IZCMP-SR-NEXT:    ld a0, 128(sp) # 8-byte Folded Reload2903; RV64IZCMP-SR-NEXT:    ld a1, 120(sp) # 8-byte Folded Reload2904; RV64IZCMP-SR-NEXT:    ld a2, 112(sp) # 8-byte Folded Reload2905; RV64IZCMP-SR-NEXT:    ld a3, 104(sp) # 8-byte Folded Reload2906; RV64IZCMP-SR-NEXT:    ld a4, 96(sp) # 8-byte Folded Reload2907; RV64IZCMP-SR-NEXT:    ld a5, 88(sp) # 8-byte Folded Reload2908; RV64IZCMP-SR-NEXT:    ld a6, 80(sp) # 8-byte Folded Reload2909; RV64IZCMP-SR-NEXT:    ld a7, 72(sp) # 8-byte Folded Reload2910; RV64IZCMP-SR-NEXT:    ld t3, 64(sp) # 8-byte Folded Reload2911; RV64IZCMP-SR-NEXT:    ld t4, 56(sp) # 8-byte Folded Reload2912; RV64IZCMP-SR-NEXT:    ld t5, 48(sp) # 8-byte Folded Reload2913; RV64IZCMP-SR-NEXT:    ld t6, 40(sp) # 8-byte Folded Reload2914; RV64IZCMP-SR-NEXT:    .cfi_restore t02915; RV64IZCMP-SR-NEXT:    .cfi_restore t12916; RV64IZCMP-SR-NEXT:    .cfi_restore t22917; RV64IZCMP-SR-NEXT:    .cfi_restore a02918; RV64IZCMP-SR-NEXT:    .cfi_restore a12919; RV64IZCMP-SR-NEXT:    .cfi_restore a22920; RV64IZCMP-SR-NEXT:    .cfi_restore a32921; RV64IZCMP-SR-NEXT:    .cfi_restore a42922; RV64IZCMP-SR-NEXT:    .cfi_restore a52923; RV64IZCMP-SR-NEXT:    .cfi_restore a62924; RV64IZCMP-SR-NEXT:    .cfi_restore a72925; RV64IZCMP-SR-NEXT:    .cfi_restore t32926; RV64IZCMP-SR-NEXT:    .cfi_restore t42927; RV64IZCMP-SR-NEXT:    .cfi_restore t52928; RV64IZCMP-SR-NEXT:    .cfi_restore t62929; RV64IZCMP-SR-NEXT:    addi sp, sp, 1122930; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 1602931; RV64IZCMP-SR-NEXT:    cm.pop {ra, s0-s11}, 1602932; RV64IZCMP-SR-NEXT:    .cfi_restore ra2933; RV64IZCMP-SR-NEXT:    .cfi_restore s02934; RV64IZCMP-SR-NEXT:    .cfi_restore s12935; RV64IZCMP-SR-NEXT:    .cfi_restore s22936; RV64IZCMP-SR-NEXT:    .cfi_restore s32937; RV64IZCMP-SR-NEXT:    .cfi_restore s42938; RV64IZCMP-SR-NEXT:    .cfi_restore s52939; RV64IZCMP-SR-NEXT:    .cfi_restore s62940; RV64IZCMP-SR-NEXT:    .cfi_restore s72941; RV64IZCMP-SR-NEXT:    .cfi_restore s82942; RV64IZCMP-SR-NEXT:    .cfi_restore s92943; RV64IZCMP-SR-NEXT:    .cfi_restore s102944; RV64IZCMP-SR-NEXT:    .cfi_restore s112945; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 02946; RV64IZCMP-SR-NEXT:    mret2947;2948; RV32I-LABEL: callee_with_irq:2949; RV32I:       # %bb.0:2950; RV32I-NEXT:    addi sp, sp, -1442951; RV32I-NEXT:    .cfi_def_cfa_offset 1442952; RV32I-NEXT:    sw ra, 140(sp) # 4-byte Folded Spill2953; RV32I-NEXT:    sw t0, 136(sp) # 4-byte Folded Spill2954; RV32I-NEXT:    sw t1, 132(sp) # 4-byte Folded Spill2955; RV32I-NEXT:    sw t2, 128(sp) # 4-byte Folded Spill2956; RV32I-NEXT:    sw s0, 124(sp) # 4-byte Folded Spill2957; RV32I-NEXT:    sw s1, 120(sp) # 4-byte Folded Spill2958; RV32I-NEXT:    sw a0, 116(sp) # 4-byte Folded Spill2959; RV32I-NEXT:    sw a1, 112(sp) # 4-byte Folded Spill2960; RV32I-NEXT:    sw a2, 108(sp) # 4-byte Folded Spill2961; RV32I-NEXT:    sw a3, 104(sp) # 4-byte Folded Spill2962; RV32I-NEXT:    sw a4, 100(sp) # 4-byte Folded Spill2963; RV32I-NEXT:    sw a5, 96(sp) # 4-byte Folded Spill2964; RV32I-NEXT:    sw a6, 92(sp) # 4-byte Folded Spill2965; RV32I-NEXT:    sw a7, 88(sp) # 4-byte Folded Spill2966; RV32I-NEXT:    sw s2, 84(sp) # 4-byte Folded Spill2967; RV32I-NEXT:    sw s3, 80(sp) # 4-byte Folded Spill2968; RV32I-NEXT:    sw s4, 76(sp) # 4-byte Folded Spill2969; RV32I-NEXT:    sw s5, 72(sp) # 4-byte Folded Spill2970; RV32I-NEXT:    sw s6, 68(sp) # 4-byte Folded Spill2971; RV32I-NEXT:    sw s7, 64(sp) # 4-byte Folded Spill2972; RV32I-NEXT:    sw s8, 60(sp) # 4-byte Folded Spill2973; RV32I-NEXT:    sw s9, 56(sp) # 4-byte Folded Spill2974; RV32I-NEXT:    sw s10, 52(sp) # 4-byte Folded Spill2975; RV32I-NEXT:    sw s11, 48(sp) # 4-byte Folded Spill2976; RV32I-NEXT:    sw t3, 44(sp) # 4-byte Folded Spill2977; RV32I-NEXT:    sw t4, 40(sp) # 4-byte Folded Spill2978; RV32I-NEXT:    sw t5, 36(sp) # 4-byte Folded Spill2979; RV32I-NEXT:    sw t6, 32(sp) # 4-byte Folded Spill2980; RV32I-NEXT:    .cfi_offset ra, -42981; RV32I-NEXT:    .cfi_offset t0, -82982; RV32I-NEXT:    .cfi_offset t1, -122983; RV32I-NEXT:    .cfi_offset t2, -162984; RV32I-NEXT:    .cfi_offset s0, -202985; RV32I-NEXT:    .cfi_offset s1, -242986; RV32I-NEXT:    .cfi_offset a0, -282987; RV32I-NEXT:    .cfi_offset a1, -322988; RV32I-NEXT:    .cfi_offset a2, -362989; RV32I-NEXT:    .cfi_offset a3, -402990; RV32I-NEXT:    .cfi_offset a4, -442991; RV32I-NEXT:    .cfi_offset a5, -482992; RV32I-NEXT:    .cfi_offset a6, -522993; RV32I-NEXT:    .cfi_offset a7, -562994; RV32I-NEXT:    .cfi_offset s2, -602995; RV32I-NEXT:    .cfi_offset s3, -642996; RV32I-NEXT:    .cfi_offset s4, -682997; RV32I-NEXT:    .cfi_offset s5, -722998; RV32I-NEXT:    .cfi_offset s6, -762999; RV32I-NEXT:    .cfi_offset s7, -803000; RV32I-NEXT:    .cfi_offset s8, -843001; RV32I-NEXT:    .cfi_offset s9, -883002; RV32I-NEXT:    .cfi_offset s10, -923003; RV32I-NEXT:    .cfi_offset s11, -963004; RV32I-NEXT:    .cfi_offset t3, -1003005; RV32I-NEXT:    .cfi_offset t4, -1043006; RV32I-NEXT:    .cfi_offset t5, -1083007; RV32I-NEXT:    .cfi_offset t6, -1123008; RV32I-NEXT:    lui a0, %hi(var_test_irq)3009; RV32I-NEXT:    addi a0, a0, %lo(var_test_irq)3010; RV32I-NEXT:    lw a1, 0(a0)3011; RV32I-NEXT:    sw a1, 28(sp) # 4-byte Folded Spill3012; RV32I-NEXT:    lw a1, 4(a0)3013; RV32I-NEXT:    sw a1, 24(sp) # 4-byte Folded Spill3014; RV32I-NEXT:    lw a1, 8(a0)3015; RV32I-NEXT:    sw a1, 20(sp) # 4-byte Folded Spill3016; RV32I-NEXT:    lw a1, 12(a0)3017; RV32I-NEXT:    sw a1, 16(sp) # 4-byte Folded Spill3018; RV32I-NEXT:    lw a1, 16(a0)3019; RV32I-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill3020; RV32I-NEXT:    lw a6, 20(a0)3021; RV32I-NEXT:    lw a7, 24(a0)3022; RV32I-NEXT:    lw t0, 28(a0)3023; RV32I-NEXT:    lw t1, 32(a0)3024; RV32I-NEXT:    lw t2, 36(a0)3025; RV32I-NEXT:    lw t3, 40(a0)3026; RV32I-NEXT:    lw t4, 44(a0)3027; RV32I-NEXT:    lw t5, 48(a0)3028; RV32I-NEXT:    lw t6, 52(a0)3029; RV32I-NEXT:    lw s0, 56(a0)3030; RV32I-NEXT:    lw s1, 60(a0)3031; RV32I-NEXT:    lw s2, 64(a0)3032; RV32I-NEXT:    lw s3, 68(a0)3033; RV32I-NEXT:    lw s4, 72(a0)3034; RV32I-NEXT:    lw s5, 76(a0)3035; RV32I-NEXT:    lw s6, 80(a0)3036; RV32I-NEXT:    lw s7, 84(a0)3037; RV32I-NEXT:    lw s8, 88(a0)3038; RV32I-NEXT:    lw s9, 92(a0)3039; RV32I-NEXT:    lw s10, 112(a0)3040; RV32I-NEXT:    lw s11, 116(a0)3041; RV32I-NEXT:    lw ra, 120(a0)3042; RV32I-NEXT:    lw a1, 124(a0)3043; RV32I-NEXT:    lw a5, 96(a0)3044; RV32I-NEXT:    lw a4, 100(a0)3045; RV32I-NEXT:    lw a3, 104(a0)3046; RV32I-NEXT:    lw a2, 108(a0)3047; RV32I-NEXT:    sw a1, 124(a0)3048; RV32I-NEXT:    sw ra, 120(a0)3049; RV32I-NEXT:    sw s11, 116(a0)3050; RV32I-NEXT:    sw s10, 112(a0)3051; RV32I-NEXT:    sw a2, 108(a0)3052; RV32I-NEXT:    sw a3, 104(a0)3053; RV32I-NEXT:    sw a4, 100(a0)3054; RV32I-NEXT:    sw a5, 96(a0)3055; RV32I-NEXT:    sw s9, 92(a0)3056; RV32I-NEXT:    sw s8, 88(a0)3057; RV32I-NEXT:    sw s7, 84(a0)3058; RV32I-NEXT:    sw s6, 80(a0)3059; RV32I-NEXT:    sw s5, 76(a0)3060; RV32I-NEXT:    sw s4, 72(a0)3061; RV32I-NEXT:    sw s3, 68(a0)3062; RV32I-NEXT:    sw s2, 64(a0)3063; RV32I-NEXT:    sw s1, 60(a0)3064; RV32I-NEXT:    sw s0, 56(a0)3065; RV32I-NEXT:    sw t6, 52(a0)3066; RV32I-NEXT:    sw t5, 48(a0)3067; RV32I-NEXT:    sw t4, 44(a0)3068; RV32I-NEXT:    sw t3, 40(a0)3069; RV32I-NEXT:    sw t2, 36(a0)3070; RV32I-NEXT:    sw t1, 32(a0)3071; RV32I-NEXT:    sw t0, 28(a0)3072; RV32I-NEXT:    sw a7, 24(a0)3073; RV32I-NEXT:    sw a6, 20(a0)3074; RV32I-NEXT:    lw a1, 12(sp) # 4-byte Folded Reload3075; RV32I-NEXT:    sw a1, 16(a0)3076; RV32I-NEXT:    lw a1, 16(sp) # 4-byte Folded Reload3077; RV32I-NEXT:    sw a1, 12(a0)3078; RV32I-NEXT:    lw a1, 20(sp) # 4-byte Folded Reload3079; RV32I-NEXT:    sw a1, 8(a0)3080; RV32I-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload3081; RV32I-NEXT:    sw a1, 4(a0)3082; RV32I-NEXT:    lw a1, 28(sp) # 4-byte Folded Reload3083; RV32I-NEXT:    sw a1, 0(a0)3084; RV32I-NEXT:    lw ra, 140(sp) # 4-byte Folded Reload3085; RV32I-NEXT:    lw t0, 136(sp) # 4-byte Folded Reload3086; RV32I-NEXT:    lw t1, 132(sp) # 4-byte Folded Reload3087; RV32I-NEXT:    lw t2, 128(sp) # 4-byte Folded Reload3088; RV32I-NEXT:    lw s0, 124(sp) # 4-byte Folded Reload3089; RV32I-NEXT:    lw s1, 120(sp) # 4-byte Folded Reload3090; RV32I-NEXT:    lw a0, 116(sp) # 4-byte Folded Reload3091; RV32I-NEXT:    lw a1, 112(sp) # 4-byte Folded Reload3092; RV32I-NEXT:    lw a2, 108(sp) # 4-byte Folded Reload3093; RV32I-NEXT:    lw a3, 104(sp) # 4-byte Folded Reload3094; RV32I-NEXT:    lw a4, 100(sp) # 4-byte Folded Reload3095; RV32I-NEXT:    lw a5, 96(sp) # 4-byte Folded Reload3096; RV32I-NEXT:    lw a6, 92(sp) # 4-byte Folded Reload3097; RV32I-NEXT:    lw a7, 88(sp) # 4-byte Folded Reload3098; RV32I-NEXT:    lw s2, 84(sp) # 4-byte Folded Reload3099; RV32I-NEXT:    lw s3, 80(sp) # 4-byte Folded Reload3100; RV32I-NEXT:    lw s4, 76(sp) # 4-byte Folded Reload3101; RV32I-NEXT:    lw s5, 72(sp) # 4-byte Folded Reload3102; RV32I-NEXT:    lw s6, 68(sp) # 4-byte Folded Reload3103; RV32I-NEXT:    lw s7, 64(sp) # 4-byte Folded Reload3104; RV32I-NEXT:    lw s8, 60(sp) # 4-byte Folded Reload3105; RV32I-NEXT:    lw s9, 56(sp) # 4-byte Folded Reload3106; RV32I-NEXT:    lw s10, 52(sp) # 4-byte Folded Reload3107; RV32I-NEXT:    lw s11, 48(sp) # 4-byte Folded Reload3108; RV32I-NEXT:    lw t3, 44(sp) # 4-byte Folded Reload3109; RV32I-NEXT:    lw t4, 40(sp) # 4-byte Folded Reload3110; RV32I-NEXT:    lw t5, 36(sp) # 4-byte Folded Reload3111; RV32I-NEXT:    lw t6, 32(sp) # 4-byte Folded Reload3112; RV32I-NEXT:    .cfi_restore ra3113; RV32I-NEXT:    .cfi_restore t03114; RV32I-NEXT:    .cfi_restore t13115; RV32I-NEXT:    .cfi_restore t23116; RV32I-NEXT:    .cfi_restore s03117; RV32I-NEXT:    .cfi_restore s13118; RV32I-NEXT:    .cfi_restore a03119; RV32I-NEXT:    .cfi_restore a13120; RV32I-NEXT:    .cfi_restore a23121; RV32I-NEXT:    .cfi_restore a33122; RV32I-NEXT:    .cfi_restore a43123; RV32I-NEXT:    .cfi_restore a53124; RV32I-NEXT:    .cfi_restore a63125; RV32I-NEXT:    .cfi_restore a73126; RV32I-NEXT:    .cfi_restore s23127; RV32I-NEXT:    .cfi_restore s33128; RV32I-NEXT:    .cfi_restore s43129; RV32I-NEXT:    .cfi_restore s53130; RV32I-NEXT:    .cfi_restore s63131; RV32I-NEXT:    .cfi_restore s73132; RV32I-NEXT:    .cfi_restore s83133; RV32I-NEXT:    .cfi_restore s93134; RV32I-NEXT:    .cfi_restore s103135; RV32I-NEXT:    .cfi_restore s113136; RV32I-NEXT:    .cfi_restore t33137; RV32I-NEXT:    .cfi_restore t43138; RV32I-NEXT:    .cfi_restore t53139; RV32I-NEXT:    .cfi_restore t63140; RV32I-NEXT:    addi sp, sp, 1443141; RV32I-NEXT:    .cfi_def_cfa_offset 03142; RV32I-NEXT:    mret3143;3144; RV64I-LABEL: callee_with_irq:3145; RV64I:       # %bb.0:3146; RV64I-NEXT:    addi sp, sp, -2723147; RV64I-NEXT:    .cfi_def_cfa_offset 2723148; RV64I-NEXT:    sd ra, 264(sp) # 8-byte Folded Spill3149; RV64I-NEXT:    sd t0, 256(sp) # 8-byte Folded Spill3150; RV64I-NEXT:    sd t1, 248(sp) # 8-byte Folded Spill3151; RV64I-NEXT:    sd t2, 240(sp) # 8-byte Folded Spill3152; RV64I-NEXT:    sd s0, 232(sp) # 8-byte Folded Spill3153; RV64I-NEXT:    sd s1, 224(sp) # 8-byte Folded Spill3154; RV64I-NEXT:    sd a0, 216(sp) # 8-byte Folded Spill3155; RV64I-NEXT:    sd a1, 208(sp) # 8-byte Folded Spill3156; RV64I-NEXT:    sd a2, 200(sp) # 8-byte Folded Spill3157; RV64I-NEXT:    sd a3, 192(sp) # 8-byte Folded Spill3158; RV64I-NEXT:    sd a4, 184(sp) # 8-byte Folded Spill3159; RV64I-NEXT:    sd a5, 176(sp) # 8-byte Folded Spill3160; RV64I-NEXT:    sd a6, 168(sp) # 8-byte Folded Spill3161; RV64I-NEXT:    sd a7, 160(sp) # 8-byte Folded Spill3162; RV64I-NEXT:    sd s2, 152(sp) # 8-byte Folded Spill3163; RV64I-NEXT:    sd s3, 144(sp) # 8-byte Folded Spill3164; RV64I-NEXT:    sd s4, 136(sp) # 8-byte Folded Spill3165; RV64I-NEXT:    sd s5, 128(sp) # 8-byte Folded Spill3166; RV64I-NEXT:    sd s6, 120(sp) # 8-byte Folded Spill3167; RV64I-NEXT:    sd s7, 112(sp) # 8-byte Folded Spill3168; RV64I-NEXT:    sd s8, 104(sp) # 8-byte Folded Spill3169; RV64I-NEXT:    sd s9, 96(sp) # 8-byte Folded Spill3170; RV64I-NEXT:    sd s10, 88(sp) # 8-byte Folded Spill3171; RV64I-NEXT:    sd s11, 80(sp) # 8-byte Folded Spill3172; RV64I-NEXT:    sd t3, 72(sp) # 8-byte Folded Spill3173; RV64I-NEXT:    sd t4, 64(sp) # 8-byte Folded Spill3174; RV64I-NEXT:    sd t5, 56(sp) # 8-byte Folded Spill3175; RV64I-NEXT:    sd t6, 48(sp) # 8-byte Folded Spill3176; RV64I-NEXT:    .cfi_offset ra, -83177; RV64I-NEXT:    .cfi_offset t0, -163178; RV64I-NEXT:    .cfi_offset t1, -243179; RV64I-NEXT:    .cfi_offset t2, -323180; RV64I-NEXT:    .cfi_offset s0, -403181; RV64I-NEXT:    .cfi_offset s1, -483182; RV64I-NEXT:    .cfi_offset a0, -563183; RV64I-NEXT:    .cfi_offset a1, -643184; RV64I-NEXT:    .cfi_offset a2, -723185; RV64I-NEXT:    .cfi_offset a3, -803186; RV64I-NEXT:    .cfi_offset a4, -883187; RV64I-NEXT:    .cfi_offset a5, -963188; RV64I-NEXT:    .cfi_offset a6, -1043189; RV64I-NEXT:    .cfi_offset a7, -1123190; RV64I-NEXT:    .cfi_offset s2, -1203191; RV64I-NEXT:    .cfi_offset s3, -1283192; RV64I-NEXT:    .cfi_offset s4, -1363193; RV64I-NEXT:    .cfi_offset s5, -1443194; RV64I-NEXT:    .cfi_offset s6, -1523195; RV64I-NEXT:    .cfi_offset s7, -1603196; RV64I-NEXT:    .cfi_offset s8, -1683197; RV64I-NEXT:    .cfi_offset s9, -1763198; RV64I-NEXT:    .cfi_offset s10, -1843199; RV64I-NEXT:    .cfi_offset s11, -1923200; RV64I-NEXT:    .cfi_offset t3, -2003201; RV64I-NEXT:    .cfi_offset t4, -2083202; RV64I-NEXT:    .cfi_offset t5, -2163203; RV64I-NEXT:    .cfi_offset t6, -2243204; RV64I-NEXT:    lui a0, %hi(var_test_irq)3205; RV64I-NEXT:    addi a0, a0, %lo(var_test_irq)3206; RV64I-NEXT:    lw a1, 0(a0)3207; RV64I-NEXT:    sd a1, 40(sp) # 8-byte Folded Spill3208; RV64I-NEXT:    lw a1, 4(a0)3209; RV64I-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill3210; RV64I-NEXT:    lw a1, 8(a0)3211; RV64I-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill3212; RV64I-NEXT:    lw a1, 12(a0)3213; RV64I-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill3214; RV64I-NEXT:    lw a1, 16(a0)3215; RV64I-NEXT:    sd a1, 8(sp) # 8-byte Folded Spill3216; RV64I-NEXT:    lw a6, 20(a0)3217; RV64I-NEXT:    lw a7, 24(a0)3218; RV64I-NEXT:    lw t0, 28(a0)3219; RV64I-NEXT:    lw t1, 32(a0)3220; RV64I-NEXT:    lw t2, 36(a0)3221; RV64I-NEXT:    lw t3, 40(a0)3222; RV64I-NEXT:    lw t4, 44(a0)3223; RV64I-NEXT:    lw t5, 48(a0)3224; RV64I-NEXT:    lw t6, 52(a0)3225; RV64I-NEXT:    lw s0, 56(a0)3226; RV64I-NEXT:    lw s1, 60(a0)3227; RV64I-NEXT:    lw s2, 64(a0)3228; RV64I-NEXT:    lw s3, 68(a0)3229; RV64I-NEXT:    lw s4, 72(a0)3230; RV64I-NEXT:    lw s5, 76(a0)3231; RV64I-NEXT:    lw s6, 80(a0)3232; RV64I-NEXT:    lw s7, 84(a0)3233; RV64I-NEXT:    lw s8, 88(a0)3234; RV64I-NEXT:    lw s9, 92(a0)3235; RV64I-NEXT:    lw s10, 112(a0)3236; RV64I-NEXT:    lw s11, 116(a0)3237; RV64I-NEXT:    lw ra, 120(a0)3238; RV64I-NEXT:    lw a1, 124(a0)3239; RV64I-NEXT:    lw a5, 96(a0)3240; RV64I-NEXT:    lw a4, 100(a0)3241; RV64I-NEXT:    lw a3, 104(a0)3242; RV64I-NEXT:    lw a2, 108(a0)3243; RV64I-NEXT:    sw a1, 124(a0)3244; RV64I-NEXT:    sw ra, 120(a0)3245; RV64I-NEXT:    sw s11, 116(a0)3246; RV64I-NEXT:    sw s10, 112(a0)3247; RV64I-NEXT:    sw a2, 108(a0)3248; RV64I-NEXT:    sw a3, 104(a0)3249; RV64I-NEXT:    sw a4, 100(a0)3250; RV64I-NEXT:    sw a5, 96(a0)3251; RV64I-NEXT:    sw s9, 92(a0)3252; RV64I-NEXT:    sw s8, 88(a0)3253; RV64I-NEXT:    sw s7, 84(a0)3254; RV64I-NEXT:    sw s6, 80(a0)3255; RV64I-NEXT:    sw s5, 76(a0)3256; RV64I-NEXT:    sw s4, 72(a0)3257; RV64I-NEXT:    sw s3, 68(a0)3258; RV64I-NEXT:    sw s2, 64(a0)3259; RV64I-NEXT:    sw s1, 60(a0)3260; RV64I-NEXT:    sw s0, 56(a0)3261; RV64I-NEXT:    sw t6, 52(a0)3262; RV64I-NEXT:    sw t5, 48(a0)3263; RV64I-NEXT:    sw t4, 44(a0)3264; RV64I-NEXT:    sw t3, 40(a0)3265; RV64I-NEXT:    sw t2, 36(a0)3266; RV64I-NEXT:    sw t1, 32(a0)3267; RV64I-NEXT:    sw t0, 28(a0)3268; RV64I-NEXT:    sw a7, 24(a0)3269; RV64I-NEXT:    sw a6, 20(a0)3270; RV64I-NEXT:    ld a1, 8(sp) # 8-byte Folded Reload3271; RV64I-NEXT:    sw a1, 16(a0)3272; RV64I-NEXT:    ld a1, 16(sp) # 8-byte Folded Reload3273; RV64I-NEXT:    sw a1, 12(a0)3274; RV64I-NEXT:    ld a1, 24(sp) # 8-byte Folded Reload3275; RV64I-NEXT:    sw a1, 8(a0)3276; RV64I-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload3277; RV64I-NEXT:    sw a1, 4(a0)3278; RV64I-NEXT:    ld a1, 40(sp) # 8-byte Folded Reload3279; RV64I-NEXT:    sw a1, 0(a0)3280; RV64I-NEXT:    ld ra, 264(sp) # 8-byte Folded Reload3281; RV64I-NEXT:    ld t0, 256(sp) # 8-byte Folded Reload3282; RV64I-NEXT:    ld t1, 248(sp) # 8-byte Folded Reload3283; RV64I-NEXT:    ld t2, 240(sp) # 8-byte Folded Reload3284; RV64I-NEXT:    ld s0, 232(sp) # 8-byte Folded Reload3285; RV64I-NEXT:    ld s1, 224(sp) # 8-byte Folded Reload3286; RV64I-NEXT:    ld a0, 216(sp) # 8-byte Folded Reload3287; RV64I-NEXT:    ld a1, 208(sp) # 8-byte Folded Reload3288; RV64I-NEXT:    ld a2, 200(sp) # 8-byte Folded Reload3289; RV64I-NEXT:    ld a3, 192(sp) # 8-byte Folded Reload3290; RV64I-NEXT:    ld a4, 184(sp) # 8-byte Folded Reload3291; RV64I-NEXT:    ld a5, 176(sp) # 8-byte Folded Reload3292; RV64I-NEXT:    ld a6, 168(sp) # 8-byte Folded Reload3293; RV64I-NEXT:    ld a7, 160(sp) # 8-byte Folded Reload3294; RV64I-NEXT:    ld s2, 152(sp) # 8-byte Folded Reload3295; RV64I-NEXT:    ld s3, 144(sp) # 8-byte Folded Reload3296; RV64I-NEXT:    ld s4, 136(sp) # 8-byte Folded Reload3297; RV64I-NEXT:    ld s5, 128(sp) # 8-byte Folded Reload3298; RV64I-NEXT:    ld s6, 120(sp) # 8-byte Folded Reload3299; RV64I-NEXT:    ld s7, 112(sp) # 8-byte Folded Reload3300; RV64I-NEXT:    ld s8, 104(sp) # 8-byte Folded Reload3301; RV64I-NEXT:    ld s9, 96(sp) # 8-byte Folded Reload3302; RV64I-NEXT:    ld s10, 88(sp) # 8-byte Folded Reload3303; RV64I-NEXT:    ld s11, 80(sp) # 8-byte Folded Reload3304; RV64I-NEXT:    ld t3, 72(sp) # 8-byte Folded Reload3305; RV64I-NEXT:    ld t4, 64(sp) # 8-byte Folded Reload3306; RV64I-NEXT:    ld t5, 56(sp) # 8-byte Folded Reload3307; RV64I-NEXT:    ld t6, 48(sp) # 8-byte Folded Reload3308; RV64I-NEXT:    .cfi_restore ra3309; RV64I-NEXT:    .cfi_restore t03310; RV64I-NEXT:    .cfi_restore t13311; RV64I-NEXT:    .cfi_restore t23312; RV64I-NEXT:    .cfi_restore s03313; RV64I-NEXT:    .cfi_restore s13314; RV64I-NEXT:    .cfi_restore a03315; RV64I-NEXT:    .cfi_restore a13316; RV64I-NEXT:    .cfi_restore a23317; RV64I-NEXT:    .cfi_restore a33318; RV64I-NEXT:    .cfi_restore a43319; RV64I-NEXT:    .cfi_restore a53320; RV64I-NEXT:    .cfi_restore a63321; RV64I-NEXT:    .cfi_restore a73322; RV64I-NEXT:    .cfi_restore s23323; RV64I-NEXT:    .cfi_restore s33324; RV64I-NEXT:    .cfi_restore s43325; RV64I-NEXT:    .cfi_restore s53326; RV64I-NEXT:    .cfi_restore s63327; RV64I-NEXT:    .cfi_restore s73328; RV64I-NEXT:    .cfi_restore s83329; RV64I-NEXT:    .cfi_restore s93330; RV64I-NEXT:    .cfi_restore s103331; RV64I-NEXT:    .cfi_restore s113332; RV64I-NEXT:    .cfi_restore t33333; RV64I-NEXT:    .cfi_restore t43334; RV64I-NEXT:    .cfi_restore t53335; RV64I-NEXT:    .cfi_restore t63336; RV64I-NEXT:    addi sp, sp, 2723337; RV64I-NEXT:    .cfi_def_cfa_offset 03338; RV64I-NEXT:    mret3339  %val = load [32 x i32], ptr @var_test_irq3340  store volatile [32 x i32] %val, ptr @var_test_irq3341  ret void3342}3343 3344define void @callee_no_irq() {3345; RV32IZCMP-LABEL: callee_no_irq:3346; RV32IZCMP:       # %bb.0:3347; RV32IZCMP-NEXT:    cm.push {ra, s0-s11}, -963348; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 963349; RV32IZCMP-NEXT:    .cfi_offset ra, -523350; RV32IZCMP-NEXT:    .cfi_offset s0, -483351; RV32IZCMP-NEXT:    .cfi_offset s1, -443352; RV32IZCMP-NEXT:    .cfi_offset s2, -403353; RV32IZCMP-NEXT:    .cfi_offset s3, -363354; RV32IZCMP-NEXT:    .cfi_offset s4, -323355; RV32IZCMP-NEXT:    .cfi_offset s5, -283356; RV32IZCMP-NEXT:    .cfi_offset s6, -243357; RV32IZCMP-NEXT:    .cfi_offset s7, -203358; RV32IZCMP-NEXT:    .cfi_offset s8, -163359; RV32IZCMP-NEXT:    .cfi_offset s9, -123360; RV32IZCMP-NEXT:    .cfi_offset s10, -83361; RV32IZCMP-NEXT:    .cfi_offset s11, -43362; RV32IZCMP-NEXT:    lui a0, %hi(var_test_irq)3363; RV32IZCMP-NEXT:    addi a0, a0, %lo(var_test_irq)3364; RV32IZCMP-NEXT:    lw a1, 0(a0)3365; RV32IZCMP-NEXT:    sw a1, 28(sp) # 4-byte Folded Spill3366; RV32IZCMP-NEXT:    lw a1, 4(a0)3367; RV32IZCMP-NEXT:    sw a1, 24(sp) # 4-byte Folded Spill3368; RV32IZCMP-NEXT:    lw a1, 8(a0)3369; RV32IZCMP-NEXT:    sw a1, 20(sp) # 4-byte Folded Spill3370; RV32IZCMP-NEXT:    lw a1, 12(a0)3371; RV32IZCMP-NEXT:    sw a1, 16(sp) # 4-byte Folded Spill3372; RV32IZCMP-NEXT:    lw a1, 16(a0)3373; RV32IZCMP-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill3374; RV32IZCMP-NEXT:    lw t3, 20(a0)3375; RV32IZCMP-NEXT:    lw t4, 24(a0)3376; RV32IZCMP-NEXT:    lw t5, 28(a0)3377; RV32IZCMP-NEXT:    lw t6, 32(a0)3378; RV32IZCMP-NEXT:    lw s2, 36(a0)3379; RV32IZCMP-NEXT:    lw s3, 40(a0)3380; RV32IZCMP-NEXT:    lw s4, 44(a0)3381; RV32IZCMP-NEXT:    lw s5, 48(a0)3382; RV32IZCMP-NEXT:    lw s6, 52(a0)3383; RV32IZCMP-NEXT:    lw s7, 56(a0)3384; RV32IZCMP-NEXT:    lw s8, 60(a0)3385; RV32IZCMP-NEXT:    lw s9, 64(a0)3386; RV32IZCMP-NEXT:    lw s10, 68(a0)3387; RV32IZCMP-NEXT:    lw s11, 72(a0)3388; RV32IZCMP-NEXT:    lw ra, 76(a0)3389; RV32IZCMP-NEXT:    lw t2, 80(a0)3390; RV32IZCMP-NEXT:    lw s0, 84(a0)3391; RV32IZCMP-NEXT:    lw s1, 88(a0)3392; RV32IZCMP-NEXT:    lw t1, 92(a0)3393; RV32IZCMP-NEXT:    lw t0, 112(a0)3394; RV32IZCMP-NEXT:    lw a5, 116(a0)3395; RV32IZCMP-NEXT:    lw a3, 120(a0)3396; RV32IZCMP-NEXT:    lw a1, 124(a0)3397; RV32IZCMP-NEXT:    lw a7, 96(a0)3398; RV32IZCMP-NEXT:    lw a6, 100(a0)3399; RV32IZCMP-NEXT:    lw a4, 104(a0)3400; RV32IZCMP-NEXT:    lw a2, 108(a0)3401; RV32IZCMP-NEXT:    sw a1, 124(a0)3402; RV32IZCMP-NEXT:    sw a3, 120(a0)3403; RV32IZCMP-NEXT:    sw a5, 116(a0)3404; RV32IZCMP-NEXT:    sw t0, 112(a0)3405; RV32IZCMP-NEXT:    sw a2, 108(a0)3406; RV32IZCMP-NEXT:    sw a4, 104(a0)3407; RV32IZCMP-NEXT:    sw a6, 100(a0)3408; RV32IZCMP-NEXT:    sw a7, 96(a0)3409; RV32IZCMP-NEXT:    sw t1, 92(a0)3410; RV32IZCMP-NEXT:    sw s1, 88(a0)3411; RV32IZCMP-NEXT:    sw s0, 84(a0)3412; RV32IZCMP-NEXT:    sw t2, 80(a0)3413; RV32IZCMP-NEXT:    sw ra, 76(a0)3414; RV32IZCMP-NEXT:    sw s11, 72(a0)3415; RV32IZCMP-NEXT:    sw s10, 68(a0)3416; RV32IZCMP-NEXT:    sw s9, 64(a0)3417; RV32IZCMP-NEXT:    sw s8, 60(a0)3418; RV32IZCMP-NEXT:    sw s7, 56(a0)3419; RV32IZCMP-NEXT:    sw s6, 52(a0)3420; RV32IZCMP-NEXT:    sw s5, 48(a0)3421; RV32IZCMP-NEXT:    sw s4, 44(a0)3422; RV32IZCMP-NEXT:    sw s3, 40(a0)3423; RV32IZCMP-NEXT:    sw s2, 36(a0)3424; RV32IZCMP-NEXT:    sw t6, 32(a0)3425; RV32IZCMP-NEXT:    sw t5, 28(a0)3426; RV32IZCMP-NEXT:    sw t4, 24(a0)3427; RV32IZCMP-NEXT:    sw t3, 20(a0)3428; RV32IZCMP-NEXT:    lw a1, 12(sp) # 4-byte Folded Reload3429; RV32IZCMP-NEXT:    sw a1, 16(a0)3430; RV32IZCMP-NEXT:    lw a1, 16(sp) # 4-byte Folded Reload3431; RV32IZCMP-NEXT:    sw a1, 12(a0)3432; RV32IZCMP-NEXT:    lw a1, 20(sp) # 4-byte Folded Reload3433; RV32IZCMP-NEXT:    sw a1, 8(a0)3434; RV32IZCMP-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload3435; RV32IZCMP-NEXT:    sw a1, 4(a0)3436; RV32IZCMP-NEXT:    lw a1, 28(sp) # 4-byte Folded Reload3437; RV32IZCMP-NEXT:    sw a1, 0(a0)3438; RV32IZCMP-NEXT:    cm.popret {ra, s0-s11}, 963439;3440; RV64IZCMP-LABEL: callee_no_irq:3441; RV64IZCMP:       # %bb.0:3442; RV64IZCMP-NEXT:    cm.push {ra, s0-s11}, -1603443; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 1603444; RV64IZCMP-NEXT:    .cfi_offset ra, -1043445; RV64IZCMP-NEXT:    .cfi_offset s0, -963446; RV64IZCMP-NEXT:    .cfi_offset s1, -883447; RV64IZCMP-NEXT:    .cfi_offset s2, -803448; RV64IZCMP-NEXT:    .cfi_offset s3, -723449; RV64IZCMP-NEXT:    .cfi_offset s4, -643450; RV64IZCMP-NEXT:    .cfi_offset s5, -563451; RV64IZCMP-NEXT:    .cfi_offset s6, -483452; RV64IZCMP-NEXT:    .cfi_offset s7, -403453; RV64IZCMP-NEXT:    .cfi_offset s8, -323454; RV64IZCMP-NEXT:    .cfi_offset s9, -243455; RV64IZCMP-NEXT:    .cfi_offset s10, -163456; RV64IZCMP-NEXT:    .cfi_offset s11, -83457; RV64IZCMP-NEXT:    lui a0, %hi(var_test_irq)3458; RV64IZCMP-NEXT:    addi a0, a0, %lo(var_test_irq)3459; RV64IZCMP-NEXT:    lw a1, 0(a0)3460; RV64IZCMP-NEXT:    sd a1, 40(sp) # 8-byte Folded Spill3461; RV64IZCMP-NEXT:    lw a1, 4(a0)3462; RV64IZCMP-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill3463; RV64IZCMP-NEXT:    lw a1, 8(a0)3464; RV64IZCMP-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill3465; RV64IZCMP-NEXT:    lw a1, 12(a0)3466; RV64IZCMP-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill3467; RV64IZCMP-NEXT:    lw a1, 16(a0)3468; RV64IZCMP-NEXT:    sd a1, 8(sp) # 8-byte Folded Spill3469; RV64IZCMP-NEXT:    lw t3, 20(a0)3470; RV64IZCMP-NEXT:    lw t4, 24(a0)3471; RV64IZCMP-NEXT:    lw t5, 28(a0)3472; RV64IZCMP-NEXT:    lw t6, 32(a0)3473; RV64IZCMP-NEXT:    lw s2, 36(a0)3474; RV64IZCMP-NEXT:    lw s3, 40(a0)3475; RV64IZCMP-NEXT:    lw s4, 44(a0)3476; RV64IZCMP-NEXT:    lw s5, 48(a0)3477; RV64IZCMP-NEXT:    lw s6, 52(a0)3478; RV64IZCMP-NEXT:    lw s7, 56(a0)3479; RV64IZCMP-NEXT:    lw s8, 60(a0)3480; RV64IZCMP-NEXT:    lw s9, 64(a0)3481; RV64IZCMP-NEXT:    lw s10, 68(a0)3482; RV64IZCMP-NEXT:    lw s11, 72(a0)3483; RV64IZCMP-NEXT:    lw ra, 76(a0)3484; RV64IZCMP-NEXT:    lw t2, 80(a0)3485; RV64IZCMP-NEXT:    lw s0, 84(a0)3486; RV64IZCMP-NEXT:    lw s1, 88(a0)3487; RV64IZCMP-NEXT:    lw t1, 92(a0)3488; RV64IZCMP-NEXT:    lw t0, 112(a0)3489; RV64IZCMP-NEXT:    lw a5, 116(a0)3490; RV64IZCMP-NEXT:    lw a3, 120(a0)3491; RV64IZCMP-NEXT:    lw a1, 124(a0)3492; RV64IZCMP-NEXT:    lw a7, 96(a0)3493; RV64IZCMP-NEXT:    lw a6, 100(a0)3494; RV64IZCMP-NEXT:    lw a4, 104(a0)3495; RV64IZCMP-NEXT:    lw a2, 108(a0)3496; RV64IZCMP-NEXT:    sw a1, 124(a0)3497; RV64IZCMP-NEXT:    sw a3, 120(a0)3498; RV64IZCMP-NEXT:    sw a5, 116(a0)3499; RV64IZCMP-NEXT:    sw t0, 112(a0)3500; RV64IZCMP-NEXT:    sw a2, 108(a0)3501; RV64IZCMP-NEXT:    sw a4, 104(a0)3502; RV64IZCMP-NEXT:    sw a6, 100(a0)3503; RV64IZCMP-NEXT:    sw a7, 96(a0)3504; RV64IZCMP-NEXT:    sw t1, 92(a0)3505; RV64IZCMP-NEXT:    sw s1, 88(a0)3506; RV64IZCMP-NEXT:    sw s0, 84(a0)3507; RV64IZCMP-NEXT:    sw t2, 80(a0)3508; RV64IZCMP-NEXT:    sw ra, 76(a0)3509; RV64IZCMP-NEXT:    sw s11, 72(a0)3510; RV64IZCMP-NEXT:    sw s10, 68(a0)3511; RV64IZCMP-NEXT:    sw s9, 64(a0)3512; RV64IZCMP-NEXT:    sw s8, 60(a0)3513; RV64IZCMP-NEXT:    sw s7, 56(a0)3514; RV64IZCMP-NEXT:    sw s6, 52(a0)3515; RV64IZCMP-NEXT:    sw s5, 48(a0)3516; RV64IZCMP-NEXT:    sw s4, 44(a0)3517; RV64IZCMP-NEXT:    sw s3, 40(a0)3518; RV64IZCMP-NEXT:    sw s2, 36(a0)3519; RV64IZCMP-NEXT:    sw t6, 32(a0)3520; RV64IZCMP-NEXT:    sw t5, 28(a0)3521; RV64IZCMP-NEXT:    sw t4, 24(a0)3522; RV64IZCMP-NEXT:    sw t3, 20(a0)3523; RV64IZCMP-NEXT:    ld a1, 8(sp) # 8-byte Folded Reload3524; RV64IZCMP-NEXT:    sw a1, 16(a0)3525; RV64IZCMP-NEXT:    ld a1, 16(sp) # 8-byte Folded Reload3526; RV64IZCMP-NEXT:    sw a1, 12(a0)3527; RV64IZCMP-NEXT:    ld a1, 24(sp) # 8-byte Folded Reload3528; RV64IZCMP-NEXT:    sw a1, 8(a0)3529; RV64IZCMP-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload3530; RV64IZCMP-NEXT:    sw a1, 4(a0)3531; RV64IZCMP-NEXT:    ld a1, 40(sp) # 8-byte Folded Reload3532; RV64IZCMP-NEXT:    sw a1, 0(a0)3533; RV64IZCMP-NEXT:    cm.popret {ra, s0-s11}, 1603534;3535; RV32IZCMP-SR-LABEL: callee_no_irq:3536; RV32IZCMP-SR:       # %bb.0:3537; RV32IZCMP-SR-NEXT:    cm.push {ra, s0-s11}, -963538; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 963539; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -523540; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -483541; RV32IZCMP-SR-NEXT:    .cfi_offset s1, -443542; RV32IZCMP-SR-NEXT:    .cfi_offset s2, -403543; RV32IZCMP-SR-NEXT:    .cfi_offset s3, -363544; RV32IZCMP-SR-NEXT:    .cfi_offset s4, -323545; RV32IZCMP-SR-NEXT:    .cfi_offset s5, -283546; RV32IZCMP-SR-NEXT:    .cfi_offset s6, -243547; RV32IZCMP-SR-NEXT:    .cfi_offset s7, -203548; RV32IZCMP-SR-NEXT:    .cfi_offset s8, -163549; RV32IZCMP-SR-NEXT:    .cfi_offset s9, -123550; RV32IZCMP-SR-NEXT:    .cfi_offset s10, -83551; RV32IZCMP-SR-NEXT:    .cfi_offset s11, -43552; RV32IZCMP-SR-NEXT:    lui a0, %hi(var_test_irq)3553; RV32IZCMP-SR-NEXT:    addi a0, a0, %lo(var_test_irq)3554; RV32IZCMP-SR-NEXT:    lw a1, 0(a0)3555; RV32IZCMP-SR-NEXT:    sw a1, 28(sp) # 4-byte Folded Spill3556; RV32IZCMP-SR-NEXT:    lw a1, 4(a0)3557; RV32IZCMP-SR-NEXT:    sw a1, 24(sp) # 4-byte Folded Spill3558; RV32IZCMP-SR-NEXT:    lw a1, 8(a0)3559; RV32IZCMP-SR-NEXT:    sw a1, 20(sp) # 4-byte Folded Spill3560; RV32IZCMP-SR-NEXT:    lw a1, 12(a0)3561; RV32IZCMP-SR-NEXT:    sw a1, 16(sp) # 4-byte Folded Spill3562; RV32IZCMP-SR-NEXT:    lw a1, 16(a0)3563; RV32IZCMP-SR-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill3564; RV32IZCMP-SR-NEXT:    lw t3, 20(a0)3565; RV32IZCMP-SR-NEXT:    lw t4, 24(a0)3566; RV32IZCMP-SR-NEXT:    lw t5, 28(a0)3567; RV32IZCMP-SR-NEXT:    lw t6, 32(a0)3568; RV32IZCMP-SR-NEXT:    lw s2, 36(a0)3569; RV32IZCMP-SR-NEXT:    lw s3, 40(a0)3570; RV32IZCMP-SR-NEXT:    lw s4, 44(a0)3571; RV32IZCMP-SR-NEXT:    lw s5, 48(a0)3572; RV32IZCMP-SR-NEXT:    lw s6, 52(a0)3573; RV32IZCMP-SR-NEXT:    lw s7, 56(a0)3574; RV32IZCMP-SR-NEXT:    lw s8, 60(a0)3575; RV32IZCMP-SR-NEXT:    lw s9, 64(a0)3576; RV32IZCMP-SR-NEXT:    lw s10, 68(a0)3577; RV32IZCMP-SR-NEXT:    lw s11, 72(a0)3578; RV32IZCMP-SR-NEXT:    lw ra, 76(a0)3579; RV32IZCMP-SR-NEXT:    lw t2, 80(a0)3580; RV32IZCMP-SR-NEXT:    lw s0, 84(a0)3581; RV32IZCMP-SR-NEXT:    lw s1, 88(a0)3582; RV32IZCMP-SR-NEXT:    lw t1, 92(a0)3583; RV32IZCMP-SR-NEXT:    lw t0, 112(a0)3584; RV32IZCMP-SR-NEXT:    lw a5, 116(a0)3585; RV32IZCMP-SR-NEXT:    lw a3, 120(a0)3586; RV32IZCMP-SR-NEXT:    lw a1, 124(a0)3587; RV32IZCMP-SR-NEXT:    lw a7, 96(a0)3588; RV32IZCMP-SR-NEXT:    lw a6, 100(a0)3589; RV32IZCMP-SR-NEXT:    lw a4, 104(a0)3590; RV32IZCMP-SR-NEXT:    lw a2, 108(a0)3591; RV32IZCMP-SR-NEXT:    sw a1, 124(a0)3592; RV32IZCMP-SR-NEXT:    sw a3, 120(a0)3593; RV32IZCMP-SR-NEXT:    sw a5, 116(a0)3594; RV32IZCMP-SR-NEXT:    sw t0, 112(a0)3595; RV32IZCMP-SR-NEXT:    sw a2, 108(a0)3596; RV32IZCMP-SR-NEXT:    sw a4, 104(a0)3597; RV32IZCMP-SR-NEXT:    sw a6, 100(a0)3598; RV32IZCMP-SR-NEXT:    sw a7, 96(a0)3599; RV32IZCMP-SR-NEXT:    sw t1, 92(a0)3600; RV32IZCMP-SR-NEXT:    sw s1, 88(a0)3601; RV32IZCMP-SR-NEXT:    sw s0, 84(a0)3602; RV32IZCMP-SR-NEXT:    sw t2, 80(a0)3603; RV32IZCMP-SR-NEXT:    sw ra, 76(a0)3604; RV32IZCMP-SR-NEXT:    sw s11, 72(a0)3605; RV32IZCMP-SR-NEXT:    sw s10, 68(a0)3606; RV32IZCMP-SR-NEXT:    sw s9, 64(a0)3607; RV32IZCMP-SR-NEXT:    sw s8, 60(a0)3608; RV32IZCMP-SR-NEXT:    sw s7, 56(a0)3609; RV32IZCMP-SR-NEXT:    sw s6, 52(a0)3610; RV32IZCMP-SR-NEXT:    sw s5, 48(a0)3611; RV32IZCMP-SR-NEXT:    sw s4, 44(a0)3612; RV32IZCMP-SR-NEXT:    sw s3, 40(a0)3613; RV32IZCMP-SR-NEXT:    sw s2, 36(a0)3614; RV32IZCMP-SR-NEXT:    sw t6, 32(a0)3615; RV32IZCMP-SR-NEXT:    sw t5, 28(a0)3616; RV32IZCMP-SR-NEXT:    sw t4, 24(a0)3617; RV32IZCMP-SR-NEXT:    sw t3, 20(a0)3618; RV32IZCMP-SR-NEXT:    lw a1, 12(sp) # 4-byte Folded Reload3619; RV32IZCMP-SR-NEXT:    sw a1, 16(a0)3620; RV32IZCMP-SR-NEXT:    lw a1, 16(sp) # 4-byte Folded Reload3621; RV32IZCMP-SR-NEXT:    sw a1, 12(a0)3622; RV32IZCMP-SR-NEXT:    lw a1, 20(sp) # 4-byte Folded Reload3623; RV32IZCMP-SR-NEXT:    sw a1, 8(a0)3624; RV32IZCMP-SR-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload3625; RV32IZCMP-SR-NEXT:    sw a1, 4(a0)3626; RV32IZCMP-SR-NEXT:    lw a1, 28(sp) # 4-byte Folded Reload3627; RV32IZCMP-SR-NEXT:    sw a1, 0(a0)3628; RV32IZCMP-SR-NEXT:    cm.popret {ra, s0-s11}, 963629;3630; RV64IZCMP-SR-LABEL: callee_no_irq:3631; RV64IZCMP-SR:       # %bb.0:3632; RV64IZCMP-SR-NEXT:    cm.push {ra, s0-s11}, -1603633; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 1603634; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -1043635; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -963636; RV64IZCMP-SR-NEXT:    .cfi_offset s1, -883637; RV64IZCMP-SR-NEXT:    .cfi_offset s2, -803638; RV64IZCMP-SR-NEXT:    .cfi_offset s3, -723639; RV64IZCMP-SR-NEXT:    .cfi_offset s4, -643640; RV64IZCMP-SR-NEXT:    .cfi_offset s5, -563641; RV64IZCMP-SR-NEXT:    .cfi_offset s6, -483642; RV64IZCMP-SR-NEXT:    .cfi_offset s7, -403643; RV64IZCMP-SR-NEXT:    .cfi_offset s8, -323644; RV64IZCMP-SR-NEXT:    .cfi_offset s9, -243645; RV64IZCMP-SR-NEXT:    .cfi_offset s10, -163646; RV64IZCMP-SR-NEXT:    .cfi_offset s11, -83647; RV64IZCMP-SR-NEXT:    lui a0, %hi(var_test_irq)3648; RV64IZCMP-SR-NEXT:    addi a0, a0, %lo(var_test_irq)3649; RV64IZCMP-SR-NEXT:    lw a1, 0(a0)3650; RV64IZCMP-SR-NEXT:    sd a1, 40(sp) # 8-byte Folded Spill3651; RV64IZCMP-SR-NEXT:    lw a1, 4(a0)3652; RV64IZCMP-SR-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill3653; RV64IZCMP-SR-NEXT:    lw a1, 8(a0)3654; RV64IZCMP-SR-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill3655; RV64IZCMP-SR-NEXT:    lw a1, 12(a0)3656; RV64IZCMP-SR-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill3657; RV64IZCMP-SR-NEXT:    lw a1, 16(a0)3658; RV64IZCMP-SR-NEXT:    sd a1, 8(sp) # 8-byte Folded Spill3659; RV64IZCMP-SR-NEXT:    lw t3, 20(a0)3660; RV64IZCMP-SR-NEXT:    lw t4, 24(a0)3661; RV64IZCMP-SR-NEXT:    lw t5, 28(a0)3662; RV64IZCMP-SR-NEXT:    lw t6, 32(a0)3663; RV64IZCMP-SR-NEXT:    lw s2, 36(a0)3664; RV64IZCMP-SR-NEXT:    lw s3, 40(a0)3665; RV64IZCMP-SR-NEXT:    lw s4, 44(a0)3666; RV64IZCMP-SR-NEXT:    lw s5, 48(a0)3667; RV64IZCMP-SR-NEXT:    lw s6, 52(a0)3668; RV64IZCMP-SR-NEXT:    lw s7, 56(a0)3669; RV64IZCMP-SR-NEXT:    lw s8, 60(a0)3670; RV64IZCMP-SR-NEXT:    lw s9, 64(a0)3671; RV64IZCMP-SR-NEXT:    lw s10, 68(a0)3672; RV64IZCMP-SR-NEXT:    lw s11, 72(a0)3673; RV64IZCMP-SR-NEXT:    lw ra, 76(a0)3674; RV64IZCMP-SR-NEXT:    lw t2, 80(a0)3675; RV64IZCMP-SR-NEXT:    lw s0, 84(a0)3676; RV64IZCMP-SR-NEXT:    lw s1, 88(a0)3677; RV64IZCMP-SR-NEXT:    lw t1, 92(a0)3678; RV64IZCMP-SR-NEXT:    lw t0, 112(a0)3679; RV64IZCMP-SR-NEXT:    lw a5, 116(a0)3680; RV64IZCMP-SR-NEXT:    lw a3, 120(a0)3681; RV64IZCMP-SR-NEXT:    lw a1, 124(a0)3682; RV64IZCMP-SR-NEXT:    lw a7, 96(a0)3683; RV64IZCMP-SR-NEXT:    lw a6, 100(a0)3684; RV64IZCMP-SR-NEXT:    lw a4, 104(a0)3685; RV64IZCMP-SR-NEXT:    lw a2, 108(a0)3686; RV64IZCMP-SR-NEXT:    sw a1, 124(a0)3687; RV64IZCMP-SR-NEXT:    sw a3, 120(a0)3688; RV64IZCMP-SR-NEXT:    sw a5, 116(a0)3689; RV64IZCMP-SR-NEXT:    sw t0, 112(a0)3690; RV64IZCMP-SR-NEXT:    sw a2, 108(a0)3691; RV64IZCMP-SR-NEXT:    sw a4, 104(a0)3692; RV64IZCMP-SR-NEXT:    sw a6, 100(a0)3693; RV64IZCMP-SR-NEXT:    sw a7, 96(a0)3694; RV64IZCMP-SR-NEXT:    sw t1, 92(a0)3695; RV64IZCMP-SR-NEXT:    sw s1, 88(a0)3696; RV64IZCMP-SR-NEXT:    sw s0, 84(a0)3697; RV64IZCMP-SR-NEXT:    sw t2, 80(a0)3698; RV64IZCMP-SR-NEXT:    sw ra, 76(a0)3699; RV64IZCMP-SR-NEXT:    sw s11, 72(a0)3700; RV64IZCMP-SR-NEXT:    sw s10, 68(a0)3701; RV64IZCMP-SR-NEXT:    sw s9, 64(a0)3702; RV64IZCMP-SR-NEXT:    sw s8, 60(a0)3703; RV64IZCMP-SR-NEXT:    sw s7, 56(a0)3704; RV64IZCMP-SR-NEXT:    sw s6, 52(a0)3705; RV64IZCMP-SR-NEXT:    sw s5, 48(a0)3706; RV64IZCMP-SR-NEXT:    sw s4, 44(a0)3707; RV64IZCMP-SR-NEXT:    sw s3, 40(a0)3708; RV64IZCMP-SR-NEXT:    sw s2, 36(a0)3709; RV64IZCMP-SR-NEXT:    sw t6, 32(a0)3710; RV64IZCMP-SR-NEXT:    sw t5, 28(a0)3711; RV64IZCMP-SR-NEXT:    sw t4, 24(a0)3712; RV64IZCMP-SR-NEXT:    sw t3, 20(a0)3713; RV64IZCMP-SR-NEXT:    ld a1, 8(sp) # 8-byte Folded Reload3714; RV64IZCMP-SR-NEXT:    sw a1, 16(a0)3715; RV64IZCMP-SR-NEXT:    ld a1, 16(sp) # 8-byte Folded Reload3716; RV64IZCMP-SR-NEXT:    sw a1, 12(a0)3717; RV64IZCMP-SR-NEXT:    ld a1, 24(sp) # 8-byte Folded Reload3718; RV64IZCMP-SR-NEXT:    sw a1, 8(a0)3719; RV64IZCMP-SR-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload3720; RV64IZCMP-SR-NEXT:    sw a1, 4(a0)3721; RV64IZCMP-SR-NEXT:    ld a1, 40(sp) # 8-byte Folded Reload3722; RV64IZCMP-SR-NEXT:    sw a1, 0(a0)3723; RV64IZCMP-SR-NEXT:    cm.popret {ra, s0-s11}, 1603724;3725; RV32I-LABEL: callee_no_irq:3726; RV32I:       # %bb.0:3727; RV32I-NEXT:    addi sp, sp, -803728; RV32I-NEXT:    .cfi_def_cfa_offset 803729; RV32I-NEXT:    sw ra, 76(sp) # 4-byte Folded Spill3730; RV32I-NEXT:    sw s0, 72(sp) # 4-byte Folded Spill3731; RV32I-NEXT:    sw s1, 68(sp) # 4-byte Folded Spill3732; RV32I-NEXT:    sw s2, 64(sp) # 4-byte Folded Spill3733; RV32I-NEXT:    sw s3, 60(sp) # 4-byte Folded Spill3734; RV32I-NEXT:    sw s4, 56(sp) # 4-byte Folded Spill3735; RV32I-NEXT:    sw s5, 52(sp) # 4-byte Folded Spill3736; RV32I-NEXT:    sw s6, 48(sp) # 4-byte Folded Spill3737; RV32I-NEXT:    sw s7, 44(sp) # 4-byte Folded Spill3738; RV32I-NEXT:    sw s8, 40(sp) # 4-byte Folded Spill3739; RV32I-NEXT:    sw s9, 36(sp) # 4-byte Folded Spill3740; RV32I-NEXT:    sw s10, 32(sp) # 4-byte Folded Spill3741; RV32I-NEXT:    sw s11, 28(sp) # 4-byte Folded Spill3742; RV32I-NEXT:    .cfi_offset ra, -43743; RV32I-NEXT:    .cfi_offset s0, -83744; RV32I-NEXT:    .cfi_offset s1, -123745; RV32I-NEXT:    .cfi_offset s2, -163746; RV32I-NEXT:    .cfi_offset s3, -203747; RV32I-NEXT:    .cfi_offset s4, -243748; RV32I-NEXT:    .cfi_offset s5, -283749; RV32I-NEXT:    .cfi_offset s6, -323750; RV32I-NEXT:    .cfi_offset s7, -363751; RV32I-NEXT:    .cfi_offset s8, -403752; RV32I-NEXT:    .cfi_offset s9, -443753; RV32I-NEXT:    .cfi_offset s10, -483754; RV32I-NEXT:    .cfi_offset s11, -523755; RV32I-NEXT:    lui a0, %hi(var_test_irq)3756; RV32I-NEXT:    addi a0, a0, %lo(var_test_irq)3757; RV32I-NEXT:    lw a1, 0(a0)3758; RV32I-NEXT:    sw a1, 24(sp) # 4-byte Folded Spill3759; RV32I-NEXT:    lw a1, 4(a0)3760; RV32I-NEXT:    sw a1, 20(sp) # 4-byte Folded Spill3761; RV32I-NEXT:    lw a1, 8(a0)3762; RV32I-NEXT:    sw a1, 16(sp) # 4-byte Folded Spill3763; RV32I-NEXT:    lw a1, 12(a0)3764; RV32I-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill3765; RV32I-NEXT:    lw a1, 16(a0)3766; RV32I-NEXT:    sw a1, 8(sp) # 4-byte Folded Spill3767; RV32I-NEXT:    lw a6, 20(a0)3768; RV32I-NEXT:    lw a7, 24(a0)3769; RV32I-NEXT:    lw t0, 28(a0)3770; RV32I-NEXT:    lw t1, 32(a0)3771; RV32I-NEXT:    lw t2, 36(a0)3772; RV32I-NEXT:    lw t3, 40(a0)3773; RV32I-NEXT:    lw t4, 44(a0)3774; RV32I-NEXT:    lw t5, 48(a0)3775; RV32I-NEXT:    lw t6, 52(a0)3776; RV32I-NEXT:    lw s0, 56(a0)3777; RV32I-NEXT:    lw s1, 60(a0)3778; RV32I-NEXT:    lw s2, 64(a0)3779; RV32I-NEXT:    lw s3, 68(a0)3780; RV32I-NEXT:    lw s4, 72(a0)3781; RV32I-NEXT:    lw s5, 76(a0)3782; RV32I-NEXT:    lw s6, 80(a0)3783; RV32I-NEXT:    lw s7, 84(a0)3784; RV32I-NEXT:    lw s8, 88(a0)3785; RV32I-NEXT:    lw s9, 92(a0)3786; RV32I-NEXT:    lw s10, 112(a0)3787; RV32I-NEXT:    lw s11, 116(a0)3788; RV32I-NEXT:    lw ra, 120(a0)3789; RV32I-NEXT:    lw a1, 124(a0)3790; RV32I-NEXT:    lw a5, 96(a0)3791; RV32I-NEXT:    lw a4, 100(a0)3792; RV32I-NEXT:    lw a3, 104(a0)3793; RV32I-NEXT:    lw a2, 108(a0)3794; RV32I-NEXT:    sw a1, 124(a0)3795; RV32I-NEXT:    sw ra, 120(a0)3796; RV32I-NEXT:    sw s11, 116(a0)3797; RV32I-NEXT:    sw s10, 112(a0)3798; RV32I-NEXT:    sw a2, 108(a0)3799; RV32I-NEXT:    sw a3, 104(a0)3800; RV32I-NEXT:    sw a4, 100(a0)3801; RV32I-NEXT:    sw a5, 96(a0)3802; RV32I-NEXT:    sw s9, 92(a0)3803; RV32I-NEXT:    sw s8, 88(a0)3804; RV32I-NEXT:    sw s7, 84(a0)3805; RV32I-NEXT:    sw s6, 80(a0)3806; RV32I-NEXT:    sw s5, 76(a0)3807; RV32I-NEXT:    sw s4, 72(a0)3808; RV32I-NEXT:    sw s3, 68(a0)3809; RV32I-NEXT:    sw s2, 64(a0)3810; RV32I-NEXT:    sw s1, 60(a0)3811; RV32I-NEXT:    sw s0, 56(a0)3812; RV32I-NEXT:    sw t6, 52(a0)3813; RV32I-NEXT:    sw t5, 48(a0)3814; RV32I-NEXT:    sw t4, 44(a0)3815; RV32I-NEXT:    sw t3, 40(a0)3816; RV32I-NEXT:    sw t2, 36(a0)3817; RV32I-NEXT:    sw t1, 32(a0)3818; RV32I-NEXT:    sw t0, 28(a0)3819; RV32I-NEXT:    sw a7, 24(a0)3820; RV32I-NEXT:    sw a6, 20(a0)3821; RV32I-NEXT:    lw a1, 8(sp) # 4-byte Folded Reload3822; RV32I-NEXT:    sw a1, 16(a0)3823; RV32I-NEXT:    lw a1, 12(sp) # 4-byte Folded Reload3824; RV32I-NEXT:    sw a1, 12(a0)3825; RV32I-NEXT:    lw a1, 16(sp) # 4-byte Folded Reload3826; RV32I-NEXT:    sw a1, 8(a0)3827; RV32I-NEXT:    lw a1, 20(sp) # 4-byte Folded Reload3828; RV32I-NEXT:    sw a1, 4(a0)3829; RV32I-NEXT:    lw a1, 24(sp) # 4-byte Folded Reload3830; RV32I-NEXT:    sw a1, 0(a0)3831; RV32I-NEXT:    lw ra, 76(sp) # 4-byte Folded Reload3832; RV32I-NEXT:    lw s0, 72(sp) # 4-byte Folded Reload3833; RV32I-NEXT:    lw s1, 68(sp) # 4-byte Folded Reload3834; RV32I-NEXT:    lw s2, 64(sp) # 4-byte Folded Reload3835; RV32I-NEXT:    lw s3, 60(sp) # 4-byte Folded Reload3836; RV32I-NEXT:    lw s4, 56(sp) # 4-byte Folded Reload3837; RV32I-NEXT:    lw s5, 52(sp) # 4-byte Folded Reload3838; RV32I-NEXT:    lw s6, 48(sp) # 4-byte Folded Reload3839; RV32I-NEXT:    lw s7, 44(sp) # 4-byte Folded Reload3840; RV32I-NEXT:    lw s8, 40(sp) # 4-byte Folded Reload3841; RV32I-NEXT:    lw s9, 36(sp) # 4-byte Folded Reload3842; RV32I-NEXT:    lw s10, 32(sp) # 4-byte Folded Reload3843; RV32I-NEXT:    lw s11, 28(sp) # 4-byte Folded Reload3844; RV32I-NEXT:    .cfi_restore ra3845; RV32I-NEXT:    .cfi_restore s03846; RV32I-NEXT:    .cfi_restore s13847; RV32I-NEXT:    .cfi_restore s23848; RV32I-NEXT:    .cfi_restore s33849; RV32I-NEXT:    .cfi_restore s43850; RV32I-NEXT:    .cfi_restore s53851; RV32I-NEXT:    .cfi_restore s63852; RV32I-NEXT:    .cfi_restore s73853; RV32I-NEXT:    .cfi_restore s83854; RV32I-NEXT:    .cfi_restore s93855; RV32I-NEXT:    .cfi_restore s103856; RV32I-NEXT:    .cfi_restore s113857; RV32I-NEXT:    addi sp, sp, 803858; RV32I-NEXT:    .cfi_def_cfa_offset 03859; RV32I-NEXT:    ret3860;3861; RV64I-LABEL: callee_no_irq:3862; RV64I:       # %bb.0:3863; RV64I-NEXT:    addi sp, sp, -1443864; RV64I-NEXT:    .cfi_def_cfa_offset 1443865; RV64I-NEXT:    sd ra, 136(sp) # 8-byte Folded Spill3866; RV64I-NEXT:    sd s0, 128(sp) # 8-byte Folded Spill3867; RV64I-NEXT:    sd s1, 120(sp) # 8-byte Folded Spill3868; RV64I-NEXT:    sd s2, 112(sp) # 8-byte Folded Spill3869; RV64I-NEXT:    sd s3, 104(sp) # 8-byte Folded Spill3870; RV64I-NEXT:    sd s4, 96(sp) # 8-byte Folded Spill3871; RV64I-NEXT:    sd s5, 88(sp) # 8-byte Folded Spill3872; RV64I-NEXT:    sd s6, 80(sp) # 8-byte Folded Spill3873; RV64I-NEXT:    sd s7, 72(sp) # 8-byte Folded Spill3874; RV64I-NEXT:    sd s8, 64(sp) # 8-byte Folded Spill3875; RV64I-NEXT:    sd s9, 56(sp) # 8-byte Folded Spill3876; RV64I-NEXT:    sd s10, 48(sp) # 8-byte Folded Spill3877; RV64I-NEXT:    sd s11, 40(sp) # 8-byte Folded Spill3878; RV64I-NEXT:    .cfi_offset ra, -83879; RV64I-NEXT:    .cfi_offset s0, -163880; RV64I-NEXT:    .cfi_offset s1, -243881; RV64I-NEXT:    .cfi_offset s2, -323882; RV64I-NEXT:    .cfi_offset s3, -403883; RV64I-NEXT:    .cfi_offset s4, -483884; RV64I-NEXT:    .cfi_offset s5, -563885; RV64I-NEXT:    .cfi_offset s6, -643886; RV64I-NEXT:    .cfi_offset s7, -723887; RV64I-NEXT:    .cfi_offset s8, -803888; RV64I-NEXT:    .cfi_offset s9, -883889; RV64I-NEXT:    .cfi_offset s10, -963890; RV64I-NEXT:    .cfi_offset s11, -1043891; RV64I-NEXT:    lui a0, %hi(var_test_irq)3892; RV64I-NEXT:    addi a0, a0, %lo(var_test_irq)3893; RV64I-NEXT:    lw a1, 0(a0)3894; RV64I-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill3895; RV64I-NEXT:    lw a1, 4(a0)3896; RV64I-NEXT:    sd a1, 24(sp) # 8-byte Folded Spill3897; RV64I-NEXT:    lw a1, 8(a0)3898; RV64I-NEXT:    sd a1, 16(sp) # 8-byte Folded Spill3899; RV64I-NEXT:    lw a1, 12(a0)3900; RV64I-NEXT:    sd a1, 8(sp) # 8-byte Folded Spill3901; RV64I-NEXT:    lw a1, 16(a0)3902; RV64I-NEXT:    sd a1, 0(sp) # 8-byte Folded Spill3903; RV64I-NEXT:    lw a6, 20(a0)3904; RV64I-NEXT:    lw a7, 24(a0)3905; RV64I-NEXT:    lw t0, 28(a0)3906; RV64I-NEXT:    lw t1, 32(a0)3907; RV64I-NEXT:    lw t2, 36(a0)3908; RV64I-NEXT:    lw t3, 40(a0)3909; RV64I-NEXT:    lw t4, 44(a0)3910; RV64I-NEXT:    lw t5, 48(a0)3911; RV64I-NEXT:    lw t6, 52(a0)3912; RV64I-NEXT:    lw s0, 56(a0)3913; RV64I-NEXT:    lw s1, 60(a0)3914; RV64I-NEXT:    lw s2, 64(a0)3915; RV64I-NEXT:    lw s3, 68(a0)3916; RV64I-NEXT:    lw s4, 72(a0)3917; RV64I-NEXT:    lw s5, 76(a0)3918; RV64I-NEXT:    lw s6, 80(a0)3919; RV64I-NEXT:    lw s7, 84(a0)3920; RV64I-NEXT:    lw s8, 88(a0)3921; RV64I-NEXT:    lw s9, 92(a0)3922; RV64I-NEXT:    lw s10, 112(a0)3923; RV64I-NEXT:    lw s11, 116(a0)3924; RV64I-NEXT:    lw ra, 120(a0)3925; RV64I-NEXT:    lw a1, 124(a0)3926; RV64I-NEXT:    lw a5, 96(a0)3927; RV64I-NEXT:    lw a4, 100(a0)3928; RV64I-NEXT:    lw a3, 104(a0)3929; RV64I-NEXT:    lw a2, 108(a0)3930; RV64I-NEXT:    sw a1, 124(a0)3931; RV64I-NEXT:    sw ra, 120(a0)3932; RV64I-NEXT:    sw s11, 116(a0)3933; RV64I-NEXT:    sw s10, 112(a0)3934; RV64I-NEXT:    sw a2, 108(a0)3935; RV64I-NEXT:    sw a3, 104(a0)3936; RV64I-NEXT:    sw a4, 100(a0)3937; RV64I-NEXT:    sw a5, 96(a0)3938; RV64I-NEXT:    sw s9, 92(a0)3939; RV64I-NEXT:    sw s8, 88(a0)3940; RV64I-NEXT:    sw s7, 84(a0)3941; RV64I-NEXT:    sw s6, 80(a0)3942; RV64I-NEXT:    sw s5, 76(a0)3943; RV64I-NEXT:    sw s4, 72(a0)3944; RV64I-NEXT:    sw s3, 68(a0)3945; RV64I-NEXT:    sw s2, 64(a0)3946; RV64I-NEXT:    sw s1, 60(a0)3947; RV64I-NEXT:    sw s0, 56(a0)3948; RV64I-NEXT:    sw t6, 52(a0)3949; RV64I-NEXT:    sw t5, 48(a0)3950; RV64I-NEXT:    sw t4, 44(a0)3951; RV64I-NEXT:    sw t3, 40(a0)3952; RV64I-NEXT:    sw t2, 36(a0)3953; RV64I-NEXT:    sw t1, 32(a0)3954; RV64I-NEXT:    sw t0, 28(a0)3955; RV64I-NEXT:    sw a7, 24(a0)3956; RV64I-NEXT:    sw a6, 20(a0)3957; RV64I-NEXT:    ld a1, 0(sp) # 8-byte Folded Reload3958; RV64I-NEXT:    sw a1, 16(a0)3959; RV64I-NEXT:    ld a1, 8(sp) # 8-byte Folded Reload3960; RV64I-NEXT:    sw a1, 12(a0)3961; RV64I-NEXT:    ld a1, 16(sp) # 8-byte Folded Reload3962; RV64I-NEXT:    sw a1, 8(a0)3963; RV64I-NEXT:    ld a1, 24(sp) # 8-byte Folded Reload3964; RV64I-NEXT:    sw a1, 4(a0)3965; RV64I-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload3966; RV64I-NEXT:    sw a1, 0(a0)3967; RV64I-NEXT:    ld ra, 136(sp) # 8-byte Folded Reload3968; RV64I-NEXT:    ld s0, 128(sp) # 8-byte Folded Reload3969; RV64I-NEXT:    ld s1, 120(sp) # 8-byte Folded Reload3970; RV64I-NEXT:    ld s2, 112(sp) # 8-byte Folded Reload3971; RV64I-NEXT:    ld s3, 104(sp) # 8-byte Folded Reload3972; RV64I-NEXT:    ld s4, 96(sp) # 8-byte Folded Reload3973; RV64I-NEXT:    ld s5, 88(sp) # 8-byte Folded Reload3974; RV64I-NEXT:    ld s6, 80(sp) # 8-byte Folded Reload3975; RV64I-NEXT:    ld s7, 72(sp) # 8-byte Folded Reload3976; RV64I-NEXT:    ld s8, 64(sp) # 8-byte Folded Reload3977; RV64I-NEXT:    ld s9, 56(sp) # 8-byte Folded Reload3978; RV64I-NEXT:    ld s10, 48(sp) # 8-byte Folded Reload3979; RV64I-NEXT:    ld s11, 40(sp) # 8-byte Folded Reload3980; RV64I-NEXT:    .cfi_restore ra3981; RV64I-NEXT:    .cfi_restore s03982; RV64I-NEXT:    .cfi_restore s13983; RV64I-NEXT:    .cfi_restore s23984; RV64I-NEXT:    .cfi_restore s33985; RV64I-NEXT:    .cfi_restore s43986; RV64I-NEXT:    .cfi_restore s53987; RV64I-NEXT:    .cfi_restore s63988; RV64I-NEXT:    .cfi_restore s73989; RV64I-NEXT:    .cfi_restore s83990; RV64I-NEXT:    .cfi_restore s93991; RV64I-NEXT:    .cfi_restore s103992; RV64I-NEXT:    .cfi_restore s113993; RV64I-NEXT:    addi sp, sp, 1443994; RV64I-NEXT:    .cfi_def_cfa_offset 03995; RV64I-NEXT:    ret3996  %val = load [32 x i32], ptr @var_test_irq3997  store volatile [32 x i32] %val, ptr @var_test_irq3998  ret void3999}4000 4001declare void @bar(ptr, ptr)4002 4003define i32 @use_fp(i32 %x) {4004; RV32IZCMP-LABEL: use_fp:4005; RV32IZCMP:       # %bb.0: # %entry4006; RV32IZCMP-NEXT:    cm.push {ra, s0-s1}, -324007; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 324008; RV32IZCMP-NEXT:    .cfi_offset ra, -124009; RV32IZCMP-NEXT:    .cfi_offset s0, -84010; RV32IZCMP-NEXT:    .cfi_offset s1, -44011; RV32IZCMP-NEXT:    addi s0, sp, 324012; RV32IZCMP-NEXT:    .cfi_def_cfa s0, 04013; RV32IZCMP-NEXT:    mv s1, a04014; RV32IZCMP-NEXT:    addi a1, s0, -204015; RV32IZCMP-NEXT:    mv a0, s04016; RV32IZCMP-NEXT:    call bar4017; RV32IZCMP-NEXT:    mv a0, s14018; RV32IZCMP-NEXT:    .cfi_def_cfa sp, 324019; RV32IZCMP-NEXT:    cm.popret {ra, s0-s1}, 324020;4021; RV64IZCMP-LABEL: use_fp:4022; RV64IZCMP:       # %bb.0: # %entry4023; RV64IZCMP-NEXT:    cm.push {ra, s0-s1}, -484024; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 484025; RV64IZCMP-NEXT:    .cfi_offset ra, -244026; RV64IZCMP-NEXT:    .cfi_offset s0, -164027; RV64IZCMP-NEXT:    .cfi_offset s1, -84028; RV64IZCMP-NEXT:    addi s0, sp, 484029; RV64IZCMP-NEXT:    .cfi_def_cfa s0, 04030; RV64IZCMP-NEXT:    mv s1, a04031; RV64IZCMP-NEXT:    addi a1, s0, -364032; RV64IZCMP-NEXT:    mv a0, s04033; RV64IZCMP-NEXT:    call bar4034; RV64IZCMP-NEXT:    mv a0, s14035; RV64IZCMP-NEXT:    .cfi_def_cfa sp, 484036; RV64IZCMP-NEXT:    cm.popret {ra, s0-s1}, 484037;4038; RV32IZCMP-SR-LABEL: use_fp:4039; RV32IZCMP-SR:       # %bb.0: # %entry4040; RV32IZCMP-SR-NEXT:    cm.push {ra, s0-s1}, -324041; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 324042; RV32IZCMP-SR-NEXT:    .cfi_offset ra, -124043; RV32IZCMP-SR-NEXT:    .cfi_offset s0, -84044; RV32IZCMP-SR-NEXT:    .cfi_offset s1, -44045; RV32IZCMP-SR-NEXT:    addi s0, sp, 324046; RV32IZCMP-SR-NEXT:    .cfi_def_cfa s0, 04047; RV32IZCMP-SR-NEXT:    mv s1, a04048; RV32IZCMP-SR-NEXT:    addi a1, s0, -204049; RV32IZCMP-SR-NEXT:    mv a0, s04050; RV32IZCMP-SR-NEXT:    call bar4051; RV32IZCMP-SR-NEXT:    mv a0, s14052; RV32IZCMP-SR-NEXT:    .cfi_def_cfa sp, 324053; RV32IZCMP-SR-NEXT:    cm.popret {ra, s0-s1}, 324054;4055; RV64IZCMP-SR-LABEL: use_fp:4056; RV64IZCMP-SR:       # %bb.0: # %entry4057; RV64IZCMP-SR-NEXT:    cm.push {ra, s0-s1}, -484058; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 484059; RV64IZCMP-SR-NEXT:    .cfi_offset ra, -244060; RV64IZCMP-SR-NEXT:    .cfi_offset s0, -164061; RV64IZCMP-SR-NEXT:    .cfi_offset s1, -84062; RV64IZCMP-SR-NEXT:    addi s0, sp, 484063; RV64IZCMP-SR-NEXT:    .cfi_def_cfa s0, 04064; RV64IZCMP-SR-NEXT:    mv s1, a04065; RV64IZCMP-SR-NEXT:    addi a1, s0, -364066; RV64IZCMP-SR-NEXT:    mv a0, s04067; RV64IZCMP-SR-NEXT:    call bar4068; RV64IZCMP-SR-NEXT:    mv a0, s14069; RV64IZCMP-SR-NEXT:    .cfi_def_cfa sp, 484070; RV64IZCMP-SR-NEXT:    cm.popret {ra, s0-s1}, 484071;4072; RV32I-LABEL: use_fp:4073; RV32I:       # %bb.0: # %entry4074; RV32I-NEXT:    addi sp, sp, -164075; RV32I-NEXT:    .cfi_def_cfa_offset 164076; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4077; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill4078; RV32I-NEXT:    sw s1, 4(sp) # 4-byte Folded Spill4079; RV32I-NEXT:    .cfi_offset ra, -44080; RV32I-NEXT:    .cfi_offset s0, -84081; RV32I-NEXT:    .cfi_offset s1, -124082; RV32I-NEXT:    addi s0, sp, 164083; RV32I-NEXT:    .cfi_def_cfa s0, 04084; RV32I-NEXT:    mv s1, a04085; RV32I-NEXT:    addi a1, s0, -164086; RV32I-NEXT:    mv a0, s04087; RV32I-NEXT:    call bar4088; RV32I-NEXT:    mv a0, s14089; RV32I-NEXT:    .cfi_def_cfa sp, 164090; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4091; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload4092; RV32I-NEXT:    lw s1, 4(sp) # 4-byte Folded Reload4093; RV32I-NEXT:    .cfi_restore ra4094; RV32I-NEXT:    .cfi_restore s04095; RV32I-NEXT:    .cfi_restore s14096; RV32I-NEXT:    addi sp, sp, 164097; RV32I-NEXT:    .cfi_def_cfa_offset 04098; RV32I-NEXT:    ret4099;4100; RV64I-LABEL: use_fp:4101; RV64I:       # %bb.0: # %entry4102; RV64I-NEXT:    addi sp, sp, -324103; RV64I-NEXT:    .cfi_def_cfa_offset 324104; RV64I-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill4105; RV64I-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill4106; RV64I-NEXT:    sd s1, 8(sp) # 8-byte Folded Spill4107; RV64I-NEXT:    .cfi_offset ra, -84108; RV64I-NEXT:    .cfi_offset s0, -164109; RV64I-NEXT:    .cfi_offset s1, -244110; RV64I-NEXT:    addi s0, sp, 324111; RV64I-NEXT:    .cfi_def_cfa s0, 04112; RV64I-NEXT:    mv s1, a04113; RV64I-NEXT:    addi a1, s0, -284114; RV64I-NEXT:    mv a0, s04115; RV64I-NEXT:    call bar4116; RV64I-NEXT:    mv a0, s14117; RV64I-NEXT:    .cfi_def_cfa sp, 324118; RV64I-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload4119; RV64I-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload4120; RV64I-NEXT:    ld s1, 8(sp) # 8-byte Folded Reload4121; RV64I-NEXT:    .cfi_restore ra4122; RV64I-NEXT:    .cfi_restore s04123; RV64I-NEXT:    .cfi_restore s14124; RV64I-NEXT:    addi sp, sp, 324125; RV64I-NEXT:    .cfi_def_cfa_offset 04126; RV64I-NEXT:    ret4127entry:4128  %var = alloca i32, align 44129  %0 = tail call ptr @llvm.frameaddress.p0(i32 0)4130  call void @bar(ptr %0, ptr %var)4131  ret i32 %x4132}4133 4134define void @spill_x10() {4135; RV32IZCMP-LABEL: spill_x10:4136; RV32IZCMP:       # %bb.0: # %entry4137; RV32IZCMP-NEXT:    cm.push {ra, s0-s11}, -644138; RV32IZCMP-NEXT:    .cfi_def_cfa_offset 644139; RV32IZCMP-NEXT:    .cfi_offset s10, -84140; RV32IZCMP-NEXT:    .cfi_offset s11, -44141; RV32IZCMP-NEXT:    #APP4142; RV32IZCMP-NEXT:    li s10, 04143; RV32IZCMP-NEXT:    #NO_APP4144; RV32IZCMP-NEXT:    cm.popret {ra, s0-s11}, 644145;4146; RV64IZCMP-LABEL: spill_x10:4147; RV64IZCMP:       # %bb.0: # %entry4148; RV64IZCMP-NEXT:    cm.push {ra, s0-s11}, -1124149; RV64IZCMP-NEXT:    .cfi_def_cfa_offset 1124150; RV64IZCMP-NEXT:    .cfi_offset s10, -164151; RV64IZCMP-NEXT:    .cfi_offset s11, -84152; RV64IZCMP-NEXT:    #APP4153; RV64IZCMP-NEXT:    li s10, 04154; RV64IZCMP-NEXT:    #NO_APP4155; RV64IZCMP-NEXT:    cm.popret {ra, s0-s11}, 1124156;4157; RV32IZCMP-SR-LABEL: spill_x10:4158; RV32IZCMP-SR:       # %bb.0: # %entry4159; RV32IZCMP-SR-NEXT:    cm.push {ra, s0-s11}, -644160; RV32IZCMP-SR-NEXT:    .cfi_def_cfa_offset 644161; RV32IZCMP-SR-NEXT:    .cfi_offset s10, -84162; RV32IZCMP-SR-NEXT:    .cfi_offset s11, -44163; RV32IZCMP-SR-NEXT:    #APP4164; RV32IZCMP-SR-NEXT:    li s10, 04165; RV32IZCMP-SR-NEXT:    #NO_APP4166; RV32IZCMP-SR-NEXT:    cm.popret {ra, s0-s11}, 644167;4168; RV64IZCMP-SR-LABEL: spill_x10:4169; RV64IZCMP-SR:       # %bb.0: # %entry4170; RV64IZCMP-SR-NEXT:    cm.push {ra, s0-s11}, -1124171; RV64IZCMP-SR-NEXT:    .cfi_def_cfa_offset 1124172; RV64IZCMP-SR-NEXT:    .cfi_offset s10, -164173; RV64IZCMP-SR-NEXT:    .cfi_offset s11, -84174; RV64IZCMP-SR-NEXT:    #APP4175; RV64IZCMP-SR-NEXT:    li s10, 04176; RV64IZCMP-SR-NEXT:    #NO_APP4177; RV64IZCMP-SR-NEXT:    cm.popret {ra, s0-s11}, 1124178;4179; RV32I-LABEL: spill_x10:4180; RV32I:       # %bb.0: # %entry4181; RV32I-NEXT:    addi sp, sp, -164182; RV32I-NEXT:    .cfi_def_cfa_offset 164183; RV32I-NEXT:    sw s10, 12(sp) # 4-byte Folded Spill4184; RV32I-NEXT:    .cfi_offset s10, -44185; RV32I-NEXT:    #APP4186; RV32I-NEXT:    li s10, 04187; RV32I-NEXT:    #NO_APP4188; RV32I-NEXT:    lw s10, 12(sp) # 4-byte Folded Reload4189; RV32I-NEXT:    .cfi_restore s104190; RV32I-NEXT:    addi sp, sp, 164191; RV32I-NEXT:    .cfi_def_cfa_offset 04192; RV32I-NEXT:    ret4193;4194; RV64I-LABEL: spill_x10:4195; RV64I:       # %bb.0: # %entry4196; RV64I-NEXT:    addi sp, sp, -164197; RV64I-NEXT:    .cfi_def_cfa_offset 164198; RV64I-NEXT:    sd s10, 8(sp) # 8-byte Folded Spill4199; RV64I-NEXT:    .cfi_offset s10, -84200; RV64I-NEXT:    #APP4201; RV64I-NEXT:    li s10, 04202; RV64I-NEXT:    #NO_APP4203; RV64I-NEXT:    ld s10, 8(sp) # 8-byte Folded Reload4204; RV64I-NEXT:    .cfi_restore s104205; RV64I-NEXT:    addi sp, sp, 164206; RV64I-NEXT:    .cfi_def_cfa_offset 04207; RV64I-NEXT:    ret4208entry:4209  tail call void asm sideeffect "li s10, 0", "~{s10}"()4210  ret void4211}4212