brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.4 KiB · 08340bb Raw
450 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 < %s | FileCheck %s -check-prefix=RV32I3; RUN: llc -mtriple=riscv64 < %s | FileCheck %s -check-prefix=RV64I4; RUN: llc -mtriple=riscv32 -mattr=+e -target-abi ilp32e < %s | FileCheck %s -check-prefix=RV32E5; RUN: llc -mtriple=riscv64 -mattr=+e -target-abi lp64e < %s | FileCheck %s -check-prefix=RV64E6 7; Check the PreserveMost calling convention works.8 9declare void @standard_cc_func()10declare preserve_mostcc void @preserve_mostcc_func()11 12define preserve_mostcc void @preserve_mostcc1() nounwind {13; RV32I-LABEL: preserve_mostcc1:14; RV32I:       # %bb.0: # %entry15; RV32I-NEXT:    addi sp, sp, -6416; RV32I-NEXT:    sw ra, 60(sp) # 4-byte Folded Spill17; RV32I-NEXT:    sw t0, 56(sp) # 4-byte Folded Spill18; RV32I-NEXT:    sw a0, 52(sp) # 4-byte Folded Spill19; RV32I-NEXT:    sw a1, 48(sp) # 4-byte Folded Spill20; RV32I-NEXT:    sw a2, 44(sp) # 4-byte Folded Spill21; RV32I-NEXT:    sw a3, 40(sp) # 4-byte Folded Spill22; RV32I-NEXT:    sw a4, 36(sp) # 4-byte Folded Spill23; RV32I-NEXT:    sw a5, 32(sp) # 4-byte Folded Spill24; RV32I-NEXT:    sw a6, 28(sp) # 4-byte Folded Spill25; RV32I-NEXT:    sw a7, 24(sp) # 4-byte Folded Spill26; RV32I-NEXT:    sw t4, 20(sp) # 4-byte Folded Spill27; RV32I-NEXT:    sw t5, 16(sp) # 4-byte Folded Spill28; RV32I-NEXT:    sw t6, 12(sp) # 4-byte Folded Spill29; RV32I-NEXT:    call standard_cc_func30; RV32I-NEXT:    lw ra, 60(sp) # 4-byte Folded Reload31; RV32I-NEXT:    lw t0, 56(sp) # 4-byte Folded Reload32; RV32I-NEXT:    lw a0, 52(sp) # 4-byte Folded Reload33; RV32I-NEXT:    lw a1, 48(sp) # 4-byte Folded Reload34; RV32I-NEXT:    lw a2, 44(sp) # 4-byte Folded Reload35; RV32I-NEXT:    lw a3, 40(sp) # 4-byte Folded Reload36; RV32I-NEXT:    lw a4, 36(sp) # 4-byte Folded Reload37; RV32I-NEXT:    lw a5, 32(sp) # 4-byte Folded Reload38; RV32I-NEXT:    lw a6, 28(sp) # 4-byte Folded Reload39; RV32I-NEXT:    lw a7, 24(sp) # 4-byte Folded Reload40; RV32I-NEXT:    lw t4, 20(sp) # 4-byte Folded Reload41; RV32I-NEXT:    lw t5, 16(sp) # 4-byte Folded Reload42; RV32I-NEXT:    lw t6, 12(sp) # 4-byte Folded Reload43; RV32I-NEXT:    addi sp, sp, 6444; RV32I-NEXT:    ret45;46; RV64I-LABEL: preserve_mostcc1:47; RV64I:       # %bb.0: # %entry48; RV64I-NEXT:    addi sp, sp, -11249; RV64I-NEXT:    sd ra, 104(sp) # 8-byte Folded Spill50; RV64I-NEXT:    sd t0, 96(sp) # 8-byte Folded Spill51; RV64I-NEXT:    sd a0, 88(sp) # 8-byte Folded Spill52; RV64I-NEXT:    sd a1, 80(sp) # 8-byte Folded Spill53; RV64I-NEXT:    sd a2, 72(sp) # 8-byte Folded Spill54; RV64I-NEXT:    sd a3, 64(sp) # 8-byte Folded Spill55; RV64I-NEXT:    sd a4, 56(sp) # 8-byte Folded Spill56; RV64I-NEXT:    sd a5, 48(sp) # 8-byte Folded Spill57; RV64I-NEXT:    sd a6, 40(sp) # 8-byte Folded Spill58; RV64I-NEXT:    sd a7, 32(sp) # 8-byte Folded Spill59; RV64I-NEXT:    sd t4, 24(sp) # 8-byte Folded Spill60; RV64I-NEXT:    sd t5, 16(sp) # 8-byte Folded Spill61; RV64I-NEXT:    sd t6, 8(sp) # 8-byte Folded Spill62; RV64I-NEXT:    call standard_cc_func63; RV64I-NEXT:    ld ra, 104(sp) # 8-byte Folded Reload64; RV64I-NEXT:    ld t0, 96(sp) # 8-byte Folded Reload65; RV64I-NEXT:    ld a0, 88(sp) # 8-byte Folded Reload66; RV64I-NEXT:    ld a1, 80(sp) # 8-byte Folded Reload67; RV64I-NEXT:    ld a2, 72(sp) # 8-byte Folded Reload68; RV64I-NEXT:    ld a3, 64(sp) # 8-byte Folded Reload69; RV64I-NEXT:    ld a4, 56(sp) # 8-byte Folded Reload70; RV64I-NEXT:    ld a5, 48(sp) # 8-byte Folded Reload71; RV64I-NEXT:    ld a6, 40(sp) # 8-byte Folded Reload72; RV64I-NEXT:    ld a7, 32(sp) # 8-byte Folded Reload73; RV64I-NEXT:    ld t4, 24(sp) # 8-byte Folded Reload74; RV64I-NEXT:    ld t5, 16(sp) # 8-byte Folded Reload75; RV64I-NEXT:    ld t6, 8(sp) # 8-byte Folded Reload76; RV64I-NEXT:    addi sp, sp, 11277; RV64I-NEXT:    ret78;79; RV32E-LABEL: preserve_mostcc1:80; RV32E:       # %bb.0: # %entry81; RV32E-NEXT:    addi sp, sp, -3282; RV32E-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill83; RV32E-NEXT:    sw t0, 24(sp) # 4-byte Folded Spill84; RV32E-NEXT:    sw a0, 20(sp) # 4-byte Folded Spill85; RV32E-NEXT:    sw a1, 16(sp) # 4-byte Folded Spill86; RV32E-NEXT:    sw a2, 12(sp) # 4-byte Folded Spill87; RV32E-NEXT:    sw a3, 8(sp) # 4-byte Folded Spill88; RV32E-NEXT:    sw a4, 4(sp) # 4-byte Folded Spill89; RV32E-NEXT:    sw a5, 0(sp) # 4-byte Folded Spill90; RV32E-NEXT:    call standard_cc_func91; RV32E-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload92; RV32E-NEXT:    lw t0, 24(sp) # 4-byte Folded Reload93; RV32E-NEXT:    lw a0, 20(sp) # 4-byte Folded Reload94; RV32E-NEXT:    lw a1, 16(sp) # 4-byte Folded Reload95; RV32E-NEXT:    lw a2, 12(sp) # 4-byte Folded Reload96; RV32E-NEXT:    lw a3, 8(sp) # 4-byte Folded Reload97; RV32E-NEXT:    lw a4, 4(sp) # 4-byte Folded Reload98; RV32E-NEXT:    lw a5, 0(sp) # 4-byte Folded Reload99; RV32E-NEXT:    addi sp, sp, 32100; RV32E-NEXT:    ret101;102; RV64E-LABEL: preserve_mostcc1:103; RV64E:       # %bb.0: # %entry104; RV64E-NEXT:    addi sp, sp, -64105; RV64E-NEXT:    sd ra, 56(sp) # 8-byte Folded Spill106; RV64E-NEXT:    sd t0, 48(sp) # 8-byte Folded Spill107; RV64E-NEXT:    sd a0, 40(sp) # 8-byte Folded Spill108; RV64E-NEXT:    sd a1, 32(sp) # 8-byte Folded Spill109; RV64E-NEXT:    sd a2, 24(sp) # 8-byte Folded Spill110; RV64E-NEXT:    sd a3, 16(sp) # 8-byte Folded Spill111; RV64E-NEXT:    sd a4, 8(sp) # 8-byte Folded Spill112; RV64E-NEXT:    sd a5, 0(sp) # 8-byte Folded Spill113; RV64E-NEXT:    call standard_cc_func114; RV64E-NEXT:    ld ra, 56(sp) # 8-byte Folded Reload115; RV64E-NEXT:    ld t0, 48(sp) # 8-byte Folded Reload116; RV64E-NEXT:    ld a0, 40(sp) # 8-byte Folded Reload117; RV64E-NEXT:    ld a1, 32(sp) # 8-byte Folded Reload118; RV64E-NEXT:    ld a2, 24(sp) # 8-byte Folded Reload119; RV64E-NEXT:    ld a3, 16(sp) # 8-byte Folded Reload120; RV64E-NEXT:    ld a4, 8(sp) # 8-byte Folded Reload121; RV64E-NEXT:    ld a5, 0(sp) # 8-byte Folded Reload122; RV64E-NEXT:    addi sp, sp, 64123; RV64E-NEXT:    ret124entry:125  call void @standard_cc_func()126  ret void127}128 129define preserve_mostcc void @preserve_mostcc2() nounwind {130; RV32I-LABEL: preserve_mostcc2:131; RV32I:       # %bb.0:132; RV32I-NEXT:    addi sp, sp, -16133; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill134; RV32I-NEXT:    call preserve_mostcc_func135; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload136; RV32I-NEXT:    addi sp, sp, 16137; RV32I-NEXT:    ret138;139; RV64I-LABEL: preserve_mostcc2:140; RV64I:       # %bb.0:141; RV64I-NEXT:    addi sp, sp, -16142; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill143; RV64I-NEXT:    call preserve_mostcc_func144; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload145; RV64I-NEXT:    addi sp, sp, 16146; RV64I-NEXT:    ret147;148; RV32E-LABEL: preserve_mostcc2:149; RV32E:       # %bb.0:150; RV32E-NEXT:    addi sp, sp, -4151; RV32E-NEXT:    sw ra, 0(sp) # 4-byte Folded Spill152; RV32E-NEXT:    call preserve_mostcc_func153; RV32E-NEXT:    lw ra, 0(sp) # 4-byte Folded Reload154; RV32E-NEXT:    addi sp, sp, 4155; RV32E-NEXT:    ret156;157; RV64E-LABEL: preserve_mostcc2:158; RV64E:       # %bb.0:159; RV64E-NEXT:    addi sp, sp, -8160; RV64E-NEXT:    sd ra, 0(sp) # 8-byte Folded Spill161; RV64E-NEXT:    call preserve_mostcc_func162; RV64E-NEXT:    ld ra, 0(sp) # 8-byte Folded Reload163; RV64E-NEXT:    addi sp, sp, 8164; RV64E-NEXT:    ret165  call preserve_mostcc void @preserve_mostcc_func()166  ret void167}168 169; X6, X7 and X28 will be saved to registers.170define void @preserve_mostcc3() nounwind {171; RV32I-LABEL: preserve_mostcc3:172; RV32I:       # %bb.0:173; RV32I-NEXT:    addi sp, sp, -16174; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill175; RV32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill176; RV32I-NEXT:    sw s1, 4(sp) # 4-byte Folded Spill177; RV32I-NEXT:    #APP178; RV32I-NEXT:    #NO_APP179; RV32I-NEXT:    mv a0, t1180; RV32I-NEXT:    #APP181; RV32I-NEXT:    #NO_APP182; RV32I-NEXT:    mv a1, t2183; RV32I-NEXT:    #APP184; RV32I-NEXT:    #NO_APP185; RV32I-NEXT:    #APP186; RV32I-NEXT:    #NO_APP187; RV32I-NEXT:    #APP188; RV32I-NEXT:    #NO_APP189; RV32I-NEXT:    mv a2, t3190; RV32I-NEXT:    call preserve_mostcc_func191; RV32I-NEXT:    mv t1, a0192; RV32I-NEXT:    mv t2, a1193; RV32I-NEXT:    mv t3, a2194; RV32I-NEXT:    #APP195; RV32I-NEXT:    #NO_APP196; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload197; RV32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload198; RV32I-NEXT:    lw s1, 4(sp) # 4-byte Folded Reload199; RV32I-NEXT:    addi sp, sp, 16200; RV32I-NEXT:    ret201;202; RV64I-LABEL: preserve_mostcc3:203; RV64I:       # %bb.0:204; RV64I-NEXT:    addi sp, sp, -32205; RV64I-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill206; RV64I-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill207; RV64I-NEXT:    sd s1, 8(sp) # 8-byte Folded Spill208; RV64I-NEXT:    #APP209; RV64I-NEXT:    #NO_APP210; RV64I-NEXT:    mv a0, t1211; RV64I-NEXT:    #APP212; RV64I-NEXT:    #NO_APP213; RV64I-NEXT:    mv a1, t2214; RV64I-NEXT:    #APP215; RV64I-NEXT:    #NO_APP216; RV64I-NEXT:    #APP217; RV64I-NEXT:    #NO_APP218; RV64I-NEXT:    #APP219; RV64I-NEXT:    #NO_APP220; RV64I-NEXT:    mv a2, t3221; RV64I-NEXT:    call preserve_mostcc_func222; RV64I-NEXT:    mv t1, a0223; RV64I-NEXT:    mv t2, a1224; RV64I-NEXT:    mv t3, a2225; RV64I-NEXT:    #APP226; RV64I-NEXT:    #NO_APP227; RV64I-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload228; RV64I-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload229; RV64I-NEXT:    ld s1, 8(sp) # 8-byte Folded Reload230; RV64I-NEXT:    addi sp, sp, 32231; RV64I-NEXT:    ret232;233; RV32E-LABEL: preserve_mostcc3:234; RV32E:       # %bb.0:235; RV32E-NEXT:    addi sp, sp, -12236; RV32E-NEXT:    sw ra, 8(sp) # 4-byte Folded Spill237; RV32E-NEXT:    sw s0, 4(sp) # 4-byte Folded Spill238; RV32E-NEXT:    sw s1, 0(sp) # 4-byte Folded Spill239; RV32E-NEXT:    #APP240; RV32E-NEXT:    #NO_APP241; RV32E-NEXT:    mv a0, t1242; RV32E-NEXT:    #APP243; RV32E-NEXT:    #NO_APP244; RV32E-NEXT:    mv a1, t2245; RV32E-NEXT:    #APP246; RV32E-NEXT:    #NO_APP247; RV32E-NEXT:    #APP248; RV32E-NEXT:    #NO_APP249; RV32E-NEXT:    #APP250; RV32E-NEXT:    #NO_APP251; RV32E-NEXT:    mv a2, t3252; RV32E-NEXT:    call preserve_mostcc_func253; RV32E-NEXT:    mv t1, a0254; RV32E-NEXT:    mv t2, a1255; RV32E-NEXT:    mv t3, a2256; RV32E-NEXT:    #APP257; RV32E-NEXT:    #NO_APP258; RV32E-NEXT:    lw ra, 8(sp) # 4-byte Folded Reload259; RV32E-NEXT:    lw s0, 4(sp) # 4-byte Folded Reload260; RV32E-NEXT:    lw s1, 0(sp) # 4-byte Folded Reload261; RV32E-NEXT:    addi sp, sp, 12262; RV32E-NEXT:    ret263;264; RV64E-LABEL: preserve_mostcc3:265; RV64E:       # %bb.0:266; RV64E-NEXT:    addi sp, sp, -24267; RV64E-NEXT:    sd ra, 16(sp) # 8-byte Folded Spill268; RV64E-NEXT:    sd s0, 8(sp) # 8-byte Folded Spill269; RV64E-NEXT:    sd s1, 0(sp) # 8-byte Folded Spill270; RV64E-NEXT:    #APP271; RV64E-NEXT:    #NO_APP272; RV64E-NEXT:    mv a0, t1273; RV64E-NEXT:    #APP274; RV64E-NEXT:    #NO_APP275; RV64E-NEXT:    mv a1, t2276; RV64E-NEXT:    #APP277; RV64E-NEXT:    #NO_APP278; RV64E-NEXT:    #APP279; RV64E-NEXT:    #NO_APP280; RV64E-NEXT:    #APP281; RV64E-NEXT:    #NO_APP282; RV64E-NEXT:    mv a2, t3283; RV64E-NEXT:    call preserve_mostcc_func284; RV64E-NEXT:    mv t1, a0285; RV64E-NEXT:    mv t2, a1286; RV64E-NEXT:    mv t3, a2287; RV64E-NEXT:    #APP288; RV64E-NEXT:    #NO_APP289; RV64E-NEXT:    ld ra, 16(sp) # 8-byte Folded Reload290; RV64E-NEXT:    ld s0, 8(sp) # 8-byte Folded Reload291; RV64E-NEXT:    ld s1, 0(sp) # 8-byte Folded Reload292; RV64E-NEXT:    addi sp, sp, 24293; RV64E-NEXT:    ret294  %1 = call i32 asm sideeffect "", "={x6}"() nounwind295  %2 = call i32 asm sideeffect "", "={x7}"() nounwind296  %3 = call i32 asm sideeffect "", "={x8}"() nounwind297  %4 = call i32 asm sideeffect "", "={x9}"() nounwind298  %5 = call i32 asm sideeffect "", "={x28}"() nounwind299  call preserve_mostcc void @preserve_mostcc_func()300  call void asm sideeffect "", "{x6},{x7},{x8},{x9},{x28}"(i32 %1, i32 %2, i32 %3, i32 %4, i32 %5)301  ret void302}303 304; X6, X7 and X28 will be saved to the stack.305define void @preserve_mostcc4() nounwind {306; RV32I-LABEL: preserve_mostcc4:307; RV32I:       # %bb.0:308; RV32I-NEXT:    addi sp, sp, -32309; RV32I-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill310; RV32I-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill311; RV32I-NEXT:    sw s1, 20(sp) # 4-byte Folded Spill312; RV32I-NEXT:    sw s2, 16(sp) # 4-byte Folded Spill313; RV32I-NEXT:    sw s3, 12(sp) # 4-byte Folded Spill314; RV32I-NEXT:    sw s4, 8(sp) # 4-byte Folded Spill315; RV32I-NEXT:    #APP316; RV32I-NEXT:    #NO_APP317; RV32I-NEXT:    mv s2, t1318; RV32I-NEXT:    #APP319; RV32I-NEXT:    #NO_APP320; RV32I-NEXT:    mv s3, t2321; RV32I-NEXT:    #APP322; RV32I-NEXT:    #NO_APP323; RV32I-NEXT:    #APP324; RV32I-NEXT:    #NO_APP325; RV32I-NEXT:    #APP326; RV32I-NEXT:    #NO_APP327; RV32I-NEXT:    mv s4, t3328; RV32I-NEXT:    call standard_cc_func329; RV32I-NEXT:    mv t1, s2330; RV32I-NEXT:    mv t2, s3331; RV32I-NEXT:    mv t3, s4332; RV32I-NEXT:    #APP333; RV32I-NEXT:    #NO_APP334; RV32I-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload335; RV32I-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload336; RV32I-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload337; RV32I-NEXT:    lw s2, 16(sp) # 4-byte Folded Reload338; RV32I-NEXT:    lw s3, 12(sp) # 4-byte Folded Reload339; RV32I-NEXT:    lw s4, 8(sp) # 4-byte Folded Reload340; RV32I-NEXT:    addi sp, sp, 32341; RV32I-NEXT:    ret342;343; RV64I-LABEL: preserve_mostcc4:344; RV64I:       # %bb.0:345; RV64I-NEXT:    addi sp, sp, -48346; RV64I-NEXT:    sd ra, 40(sp) # 8-byte Folded Spill347; RV64I-NEXT:    sd s0, 32(sp) # 8-byte Folded Spill348; RV64I-NEXT:    sd s1, 24(sp) # 8-byte Folded Spill349; RV64I-NEXT:    sd s2, 16(sp) # 8-byte Folded Spill350; RV64I-NEXT:    sd s3, 8(sp) # 8-byte Folded Spill351; RV64I-NEXT:    sd s4, 0(sp) # 8-byte Folded Spill352; RV64I-NEXT:    #APP353; RV64I-NEXT:    #NO_APP354; RV64I-NEXT:    mv s2, t1355; RV64I-NEXT:    #APP356; RV64I-NEXT:    #NO_APP357; RV64I-NEXT:    mv s3, t2358; RV64I-NEXT:    #APP359; RV64I-NEXT:    #NO_APP360; RV64I-NEXT:    #APP361; RV64I-NEXT:    #NO_APP362; RV64I-NEXT:    #APP363; RV64I-NEXT:    #NO_APP364; RV64I-NEXT:    mv s4, t3365; RV64I-NEXT:    call standard_cc_func366; RV64I-NEXT:    mv t1, s2367; RV64I-NEXT:    mv t2, s3368; RV64I-NEXT:    mv t3, s4369; RV64I-NEXT:    #APP370; RV64I-NEXT:    #NO_APP371; RV64I-NEXT:    ld ra, 40(sp) # 8-byte Folded Reload372; RV64I-NEXT:    ld s0, 32(sp) # 8-byte Folded Reload373; RV64I-NEXT:    ld s1, 24(sp) # 8-byte Folded Reload374; RV64I-NEXT:    ld s2, 16(sp) # 8-byte Folded Reload375; RV64I-NEXT:    ld s3, 8(sp) # 8-byte Folded Reload376; RV64I-NEXT:    ld s4, 0(sp) # 8-byte Folded Reload377; RV64I-NEXT:    addi sp, sp, 48378; RV64I-NEXT:    ret379;380; RV32E-LABEL: preserve_mostcc4:381; RV32E:       # %bb.0:382; RV32E-NEXT:    addi sp, sp, -24383; RV32E-NEXT:    sw ra, 20(sp) # 4-byte Folded Spill384; RV32E-NEXT:    sw s0, 16(sp) # 4-byte Folded Spill385; RV32E-NEXT:    sw s1, 12(sp) # 4-byte Folded Spill386; RV32E-NEXT:    #APP387; RV32E-NEXT:    #NO_APP388; RV32E-NEXT:    sw t1, 8(sp) # 4-byte Folded Spill389; RV32E-NEXT:    #APP390; RV32E-NEXT:    #NO_APP391; RV32E-NEXT:    sw t2, 4(sp) # 4-byte Folded Spill392; RV32E-NEXT:    #APP393; RV32E-NEXT:    #NO_APP394; RV32E-NEXT:    #APP395; RV32E-NEXT:    #NO_APP396; RV32E-NEXT:    #APP397; RV32E-NEXT:    #NO_APP398; RV32E-NEXT:    sw t3, 0(sp) # 4-byte Folded Spill399; RV32E-NEXT:    call standard_cc_func400; RV32E-NEXT:    lw t1, 8(sp) # 4-byte Folded Reload401; RV32E-NEXT:    lw t2, 4(sp) # 4-byte Folded Reload402; RV32E-NEXT:    lw t3, 0(sp) # 4-byte Folded Reload403; RV32E-NEXT:    #APP404; RV32E-NEXT:    #NO_APP405; RV32E-NEXT:    lw ra, 20(sp) # 4-byte Folded Reload406; RV32E-NEXT:    lw s0, 16(sp) # 4-byte Folded Reload407; RV32E-NEXT:    lw s1, 12(sp) # 4-byte Folded Reload408; RV32E-NEXT:    addi sp, sp, 24409; RV32E-NEXT:    ret410;411; RV64E-LABEL: preserve_mostcc4:412; RV64E:       # %bb.0:413; RV64E-NEXT:    addi sp, sp, -48414; RV64E-NEXT:    sd ra, 40(sp) # 8-byte Folded Spill415; RV64E-NEXT:    sd s0, 32(sp) # 8-byte Folded Spill416; RV64E-NEXT:    sd s1, 24(sp) # 8-byte Folded Spill417; RV64E-NEXT:    #APP418; RV64E-NEXT:    #NO_APP419; RV64E-NEXT:    sd t1, 16(sp) # 8-byte Folded Spill420; RV64E-NEXT:    #APP421; RV64E-NEXT:    #NO_APP422; RV64E-NEXT:    sd t2, 8(sp) # 8-byte Folded Spill423; RV64E-NEXT:    #APP424; RV64E-NEXT:    #NO_APP425; RV64E-NEXT:    #APP426; RV64E-NEXT:    #NO_APP427; RV64E-NEXT:    #APP428; RV64E-NEXT:    #NO_APP429; RV64E-NEXT:    sd t3, 0(sp) # 8-byte Folded Spill430; RV64E-NEXT:    call standard_cc_func431; RV64E-NEXT:    ld t1, 16(sp) # 8-byte Folded Reload432; RV64E-NEXT:    ld t2, 8(sp) # 8-byte Folded Reload433; RV64E-NEXT:    ld t3, 0(sp) # 8-byte Folded Reload434; RV64E-NEXT:    #APP435; RV64E-NEXT:    #NO_APP436; RV64E-NEXT:    ld ra, 40(sp) # 8-byte Folded Reload437; RV64E-NEXT:    ld s0, 32(sp) # 8-byte Folded Reload438; RV64E-NEXT:    ld s1, 24(sp) # 8-byte Folded Reload439; RV64E-NEXT:    addi sp, sp, 48440; RV64E-NEXT:    ret441  %1 = call i32 asm sideeffect "", "={x6}"() nounwind442  %2 = call i32 asm sideeffect "", "={x7}"() nounwind443  %3 = call i32 asm sideeffect "", "={x8}"() nounwind444  %4 = call i32 asm sideeffect "", "={x9}"() nounwind445  %5 = call i32 asm sideeffect "", "={x28}"() nounwind446  call void @standard_cc_func()447  call void asm sideeffect "", "{x6},{x7},{x8},{x9},{x28}"(i32 %1, i32 %2, i32 %3, i32 %4, i32 %5)448  ret void449}450