615 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \3; RUN: | FileCheck %s -check-prefixes=RV32,RV32I4; RUN: llc -mtriple=riscv32 -verify-machineinstrs -mattr=+zba < %s \5; RUN: | FileCheck %s -check-prefixes=RV32,RV32ZBA6; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \7; RUN: | FileCheck %s -check-prefixes=RV64,RV64I8; RUN: llc -mtriple=riscv64 -verify-machineinstrs -mattr=+zba < %s \9; RUN: | FileCheck %s -check-prefixes=RV64,RV64ZBA10 11declare void @callee(ptr)12 13define void @frame_16b() {14; RV32-LABEL: frame_16b:15; RV32: # %bb.0:16; RV32-NEXT: addi sp, sp, -1617; RV32-NEXT: .cfi_def_cfa_offset 1618; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill19; RV32-NEXT: .cfi_offset ra, -420; RV32-NEXT: li a0, 021; RV32-NEXT: call callee22; RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload23; RV32-NEXT: .cfi_restore ra24; RV32-NEXT: addi sp, sp, 1625; RV32-NEXT: .cfi_def_cfa_offset 026; RV32-NEXT: ret27;28; RV64-LABEL: frame_16b:29; RV64: # %bb.0:30; RV64-NEXT: addi sp, sp, -1631; RV64-NEXT: .cfi_def_cfa_offset 1632; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill33; RV64-NEXT: .cfi_offset ra, -834; RV64-NEXT: li a0, 035; RV64-NEXT: call callee36; RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload37; RV64-NEXT: .cfi_restore ra38; RV64-NEXT: addi sp, sp, 1639; RV64-NEXT: .cfi_def_cfa_offset 040; RV64-NEXT: ret41 call void @callee(ptr null)42 ret void43}44 45define void @frame_1024b() {46; RV32-LABEL: frame_1024b:47; RV32: # %bb.0:48; RV32-NEXT: addi sp, sp, -102449; RV32-NEXT: .cfi_def_cfa_offset 102450; RV32-NEXT: sw ra, 1020(sp) # 4-byte Folded Spill51; RV32-NEXT: .cfi_offset ra, -452; RV32-NEXT: addi a0, sp, 1253; RV32-NEXT: call callee54; RV32-NEXT: lw ra, 1020(sp) # 4-byte Folded Reload55; RV32-NEXT: .cfi_restore ra56; RV32-NEXT: addi sp, sp, 102457; RV32-NEXT: .cfi_def_cfa_offset 058; RV32-NEXT: ret59;60; RV64-LABEL: frame_1024b:61; RV64: # %bb.0:62; RV64-NEXT: addi sp, sp, -102463; RV64-NEXT: .cfi_def_cfa_offset 102464; RV64-NEXT: sd ra, 1016(sp) # 8-byte Folded Spill65; RV64-NEXT: .cfi_offset ra, -866; RV64-NEXT: addi a0, sp, 867; RV64-NEXT: call callee68; RV64-NEXT: ld ra, 1016(sp) # 8-byte Folded Reload69; RV64-NEXT: .cfi_restore ra70; RV64-NEXT: addi sp, sp, 102471; RV64-NEXT: .cfi_def_cfa_offset 072; RV64-NEXT: ret73 %a = alloca [1008 x i8]74 call void @callee(ptr %a)75 ret void76}77 78define void @frame_2048b() {79; RV32-LABEL: frame_2048b:80; RV32: # %bb.0:81; RV32-NEXT: addi sp, sp, -203282; RV32-NEXT: .cfi_def_cfa_offset 203283; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill84; RV32-NEXT: .cfi_offset ra, -485; RV32-NEXT: addi sp, sp, -1686; RV32-NEXT: .cfi_def_cfa_offset 204887; RV32-NEXT: addi a0, sp, 1288; RV32-NEXT: call callee89; RV32-NEXT: addi sp, sp, 1690; RV32-NEXT: .cfi_def_cfa_offset 203291; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload92; RV32-NEXT: .cfi_restore ra93; RV32-NEXT: addi sp, sp, 203294; RV32-NEXT: .cfi_def_cfa_offset 095; RV32-NEXT: ret96;97; RV64-LABEL: frame_2048b:98; RV64: # %bb.0:99; RV64-NEXT: addi sp, sp, -2032100; RV64-NEXT: .cfi_def_cfa_offset 2032101; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill102; RV64-NEXT: .cfi_offset ra, -8103; RV64-NEXT: addi sp, sp, -16104; RV64-NEXT: .cfi_def_cfa_offset 2048105; RV64-NEXT: addi a0, sp, 8106; RV64-NEXT: call callee107; RV64-NEXT: addi sp, sp, 16108; RV64-NEXT: .cfi_def_cfa_offset 2032109; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload110; RV64-NEXT: .cfi_restore ra111; RV64-NEXT: addi sp, sp, 2032112; RV64-NEXT: .cfi_def_cfa_offset 0113; RV64-NEXT: ret114 %a = alloca [2032 x i8]115 call void @callee(ptr %a)116 ret void117}118 119define void @frame_4096b() {120; RV32-LABEL: frame_4096b:121; RV32: # %bb.0:122; RV32-NEXT: addi sp, sp, -2032123; RV32-NEXT: .cfi_def_cfa_offset 2032124; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill125; RV32-NEXT: .cfi_offset ra, -4126; RV32-NEXT: addi sp, sp, -2048127; RV32-NEXT: addi sp, sp, -16128; RV32-NEXT: .cfi_def_cfa_offset 4096129; RV32-NEXT: addi a0, sp, 12130; RV32-NEXT: call callee131; RV32-NEXT: addi sp, sp, 2032132; RV32-NEXT: addi sp, sp, 32133; RV32-NEXT: .cfi_def_cfa_offset 2032134; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload135; RV32-NEXT: .cfi_restore ra136; RV32-NEXT: addi sp, sp, 2032137; RV32-NEXT: .cfi_def_cfa_offset 0138; RV32-NEXT: ret139;140; RV64-LABEL: frame_4096b:141; RV64: # %bb.0:142; RV64-NEXT: addi sp, sp, -2032143; RV64-NEXT: .cfi_def_cfa_offset 2032144; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill145; RV64-NEXT: .cfi_offset ra, -8146; RV64-NEXT: addi sp, sp, -2048147; RV64-NEXT: addi sp, sp, -16148; RV64-NEXT: .cfi_def_cfa_offset 4096149; RV64-NEXT: addi a0, sp, 8150; RV64-NEXT: call callee151; RV64-NEXT: addi sp, sp, 2032152; RV64-NEXT: addi sp, sp, 32153; RV64-NEXT: .cfi_def_cfa_offset 2032154; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload155; RV64-NEXT: .cfi_restore ra156; RV64-NEXT: addi sp, sp, 2032157; RV64-NEXT: .cfi_def_cfa_offset 0158; RV64-NEXT: ret159 %a = alloca [4080 x i8]160 call void @callee(ptr %a)161 ret void162}163 164;; 2^12-16+2032165define void @frame_4kb() {166; RV32-LABEL: frame_4kb:167; RV32: # %bb.0:168; RV32-NEXT: addi sp, sp, -2032169; RV32-NEXT: .cfi_def_cfa_offset 2032170; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill171; RV32-NEXT: .cfi_offset ra, -4172; RV32-NEXT: lui a0, 1173; RV32-NEXT: sub sp, sp, a0174; RV32-NEXT: .cfi_def_cfa_offset 6128175; RV32-NEXT: addi a0, sp, 12176; RV32-NEXT: call callee177; RV32-NEXT: lui a0, 1178; RV32-NEXT: add sp, sp, a0179; RV32-NEXT: .cfi_def_cfa_offset 2032180; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload181; RV32-NEXT: .cfi_restore ra182; RV32-NEXT: addi sp, sp, 2032183; RV32-NEXT: .cfi_def_cfa_offset 0184; RV32-NEXT: ret185;186; RV64-LABEL: frame_4kb:187; RV64: # %bb.0:188; RV64-NEXT: addi sp, sp, -2032189; RV64-NEXT: .cfi_def_cfa_offset 2032190; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill191; RV64-NEXT: .cfi_offset ra, -8192; RV64-NEXT: lui a0, 1193; RV64-NEXT: sub sp, sp, a0194; RV64-NEXT: .cfi_def_cfa_offset 6128195; RV64-NEXT: addi a0, sp, 8196; RV64-NEXT: call callee197; RV64-NEXT: lui a0, 1198; RV64-NEXT: add sp, sp, a0199; RV64-NEXT: .cfi_def_cfa_offset 2032200; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload201; RV64-NEXT: .cfi_restore ra202; RV64-NEXT: addi sp, sp, 2032203; RV64-NEXT: .cfi_def_cfa_offset 0204; RV64-NEXT: ret205 %a = alloca [6112 x i8]206 call void @callee(ptr %a)207 ret void208}209 210define void @frame_4kb_offset_128() {211; RV32I-LABEL: frame_4kb_offset_128:212; RV32I: # %bb.0:213; RV32I-NEXT: addi sp, sp, -2032214; RV32I-NEXT: .cfi_def_cfa_offset 2032215; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill216; RV32I-NEXT: .cfi_offset ra, -4217; RV32I-NEXT: lui a0, 1218; RV32I-NEXT: addi a0, a0, 128219; RV32I-NEXT: sub sp, sp, a0220; RV32I-NEXT: .cfi_def_cfa_offset 6256221; RV32I-NEXT: addi a0, sp, 12222; RV32I-NEXT: call callee223; RV32I-NEXT: lui a0, 1224; RV32I-NEXT: addi a0, a0, 128225; RV32I-NEXT: add sp, sp, a0226; RV32I-NEXT: .cfi_def_cfa_offset 2032227; RV32I-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload228; RV32I-NEXT: .cfi_restore ra229; RV32I-NEXT: addi sp, sp, 2032230; RV32I-NEXT: .cfi_def_cfa_offset 0231; RV32I-NEXT: ret232;233; RV32ZBA-LABEL: frame_4kb_offset_128:234; RV32ZBA: # %bb.0:235; RV32ZBA-NEXT: addi sp, sp, -2032236; RV32ZBA-NEXT: .cfi_def_cfa_offset 2032237; RV32ZBA-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill238; RV32ZBA-NEXT: .cfi_offset ra, -4239; RV32ZBA-NEXT: li a0, -528240; RV32ZBA-NEXT: sh3add sp, a0, sp241; RV32ZBA-NEXT: .cfi_def_cfa_offset 6256242; RV32ZBA-NEXT: addi a0, sp, 12243; RV32ZBA-NEXT: call callee244; RV32ZBA-NEXT: li a0, 528245; RV32ZBA-NEXT: sh3add sp, a0, sp246; RV32ZBA-NEXT: .cfi_def_cfa_offset 2032247; RV32ZBA-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload248; RV32ZBA-NEXT: .cfi_restore ra249; RV32ZBA-NEXT: addi sp, sp, 2032250; RV32ZBA-NEXT: .cfi_def_cfa_offset 0251; RV32ZBA-NEXT: ret252;253; RV64I-LABEL: frame_4kb_offset_128:254; RV64I: # %bb.0:255; RV64I-NEXT: addi sp, sp, -2032256; RV64I-NEXT: .cfi_def_cfa_offset 2032257; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill258; RV64I-NEXT: .cfi_offset ra, -8259; RV64I-NEXT: lui a0, 1260; RV64I-NEXT: addi a0, a0, 128261; RV64I-NEXT: sub sp, sp, a0262; RV64I-NEXT: .cfi_def_cfa_offset 6256263; RV64I-NEXT: addi a0, sp, 8264; RV64I-NEXT: call callee265; RV64I-NEXT: lui a0, 1266; RV64I-NEXT: addi a0, a0, 128267; RV64I-NEXT: add sp, sp, a0268; RV64I-NEXT: .cfi_def_cfa_offset 2032269; RV64I-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload270; RV64I-NEXT: .cfi_restore ra271; RV64I-NEXT: addi sp, sp, 2032272; RV64I-NEXT: .cfi_def_cfa_offset 0273; RV64I-NEXT: ret274;275; RV64ZBA-LABEL: frame_4kb_offset_128:276; RV64ZBA: # %bb.0:277; RV64ZBA-NEXT: addi sp, sp, -2032278; RV64ZBA-NEXT: .cfi_def_cfa_offset 2032279; RV64ZBA-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill280; RV64ZBA-NEXT: .cfi_offset ra, -8281; RV64ZBA-NEXT: li a0, -528282; RV64ZBA-NEXT: sh3add sp, a0, sp283; RV64ZBA-NEXT: .cfi_def_cfa_offset 6256284; RV64ZBA-NEXT: addi a0, sp, 8285; RV64ZBA-NEXT: call callee286; RV64ZBA-NEXT: li a0, 528287; RV64ZBA-NEXT: sh3add sp, a0, sp288; RV64ZBA-NEXT: .cfi_def_cfa_offset 2032289; RV64ZBA-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload290; RV64ZBA-NEXT: .cfi_restore ra291; RV64ZBA-NEXT: addi sp, sp, 2032292; RV64ZBA-NEXT: .cfi_def_cfa_offset 0293; RV64ZBA-NEXT: ret294 %a = alloca [6240 x i8]295 call void @callee(ptr %a)296 ret void297}298 299 300;; 2^13-16+2032301define void @frame_8kb() {302; RV32-LABEL: frame_8kb:303; RV32: # %bb.0:304; RV32-NEXT: addi sp, sp, -2032305; RV32-NEXT: .cfi_def_cfa_offset 2032306; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill307; RV32-NEXT: .cfi_offset ra, -4308; RV32-NEXT: lui a0, 2309; RV32-NEXT: sub sp, sp, a0310; RV32-NEXT: .cfi_def_cfa_offset 10224311; RV32-NEXT: addi a0, sp, 12312; RV32-NEXT: call callee313; RV32-NEXT: lui a0, 2314; RV32-NEXT: add sp, sp, a0315; RV32-NEXT: .cfi_def_cfa_offset 2032316; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload317; RV32-NEXT: .cfi_restore ra318; RV32-NEXT: addi sp, sp, 2032319; RV32-NEXT: .cfi_def_cfa_offset 0320; RV32-NEXT: ret321;322; RV64-LABEL: frame_8kb:323; RV64: # %bb.0:324; RV64-NEXT: addi sp, sp, -2032325; RV64-NEXT: .cfi_def_cfa_offset 2032326; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill327; RV64-NEXT: .cfi_offset ra, -8328; RV64-NEXT: lui a0, 2329; RV64-NEXT: sub sp, sp, a0330; RV64-NEXT: .cfi_def_cfa_offset 10224331; RV64-NEXT: addi a0, sp, 8332; RV64-NEXT: call callee333; RV64-NEXT: lui a0, 2334; RV64-NEXT: add sp, sp, a0335; RV64-NEXT: .cfi_def_cfa_offset 2032336; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload337; RV64-NEXT: .cfi_restore ra338; RV64-NEXT: addi sp, sp, 2032339; RV64-NEXT: .cfi_def_cfa_offset 0340; RV64-NEXT: ret341 %a = alloca [10208 x i8]342 call void @callee(ptr %a)343 ret void344}345 346define void @frame_8kb_offset_128() {347; RV32I-LABEL: frame_8kb_offset_128:348; RV32I: # %bb.0:349; RV32I-NEXT: addi sp, sp, -2032350; RV32I-NEXT: .cfi_def_cfa_offset 2032351; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill352; RV32I-NEXT: .cfi_offset ra, -4353; RV32I-NEXT: lui a0, 2354; RV32I-NEXT: addi a0, a0, 128355; RV32I-NEXT: sub sp, sp, a0356; RV32I-NEXT: .cfi_def_cfa_offset 10352357; RV32I-NEXT: addi a0, sp, 12358; RV32I-NEXT: call callee359; RV32I-NEXT: lui a0, 2360; RV32I-NEXT: addi a0, a0, 128361; RV32I-NEXT: add sp, sp, a0362; RV32I-NEXT: .cfi_def_cfa_offset 2032363; RV32I-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload364; RV32I-NEXT: .cfi_restore ra365; RV32I-NEXT: addi sp, sp, 2032366; RV32I-NEXT: .cfi_def_cfa_offset 0367; RV32I-NEXT: ret368;369; RV32ZBA-LABEL: frame_8kb_offset_128:370; RV32ZBA: # %bb.0:371; RV32ZBA-NEXT: addi sp, sp, -2032372; RV32ZBA-NEXT: .cfi_def_cfa_offset 2032373; RV32ZBA-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill374; RV32ZBA-NEXT: .cfi_offset ra, -4375; RV32ZBA-NEXT: li a0, -1040376; RV32ZBA-NEXT: sh3add sp, a0, sp377; RV32ZBA-NEXT: .cfi_def_cfa_offset 10352378; RV32ZBA-NEXT: addi a0, sp, 12379; RV32ZBA-NEXT: call callee380; RV32ZBA-NEXT: li a0, 1040381; RV32ZBA-NEXT: sh3add sp, a0, sp382; RV32ZBA-NEXT: .cfi_def_cfa_offset 2032383; RV32ZBA-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload384; RV32ZBA-NEXT: .cfi_restore ra385; RV32ZBA-NEXT: addi sp, sp, 2032386; RV32ZBA-NEXT: .cfi_def_cfa_offset 0387; RV32ZBA-NEXT: ret388;389; RV64I-LABEL: frame_8kb_offset_128:390; RV64I: # %bb.0:391; RV64I-NEXT: addi sp, sp, -2032392; RV64I-NEXT: .cfi_def_cfa_offset 2032393; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill394; RV64I-NEXT: .cfi_offset ra, -8395; RV64I-NEXT: lui a0, 2396; RV64I-NEXT: addi a0, a0, 128397; RV64I-NEXT: sub sp, sp, a0398; RV64I-NEXT: .cfi_def_cfa_offset 10352399; RV64I-NEXT: addi a0, sp, 8400; RV64I-NEXT: call callee401; RV64I-NEXT: lui a0, 2402; RV64I-NEXT: addi a0, a0, 128403; RV64I-NEXT: add sp, sp, a0404; RV64I-NEXT: .cfi_def_cfa_offset 2032405; RV64I-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload406; RV64I-NEXT: .cfi_restore ra407; RV64I-NEXT: addi sp, sp, 2032408; RV64I-NEXT: .cfi_def_cfa_offset 0409; RV64I-NEXT: ret410;411; RV64ZBA-LABEL: frame_8kb_offset_128:412; RV64ZBA: # %bb.0:413; RV64ZBA-NEXT: addi sp, sp, -2032414; RV64ZBA-NEXT: .cfi_def_cfa_offset 2032415; RV64ZBA-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill416; RV64ZBA-NEXT: .cfi_offset ra, -8417; RV64ZBA-NEXT: li a0, -1040418; RV64ZBA-NEXT: sh3add sp, a0, sp419; RV64ZBA-NEXT: .cfi_def_cfa_offset 10352420; RV64ZBA-NEXT: addi a0, sp, 8421; RV64ZBA-NEXT: call callee422; RV64ZBA-NEXT: li a0, 1040423; RV64ZBA-NEXT: sh3add sp, a0, sp424; RV64ZBA-NEXT: .cfi_def_cfa_offset 2032425; RV64ZBA-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload426; RV64ZBA-NEXT: .cfi_restore ra427; RV64ZBA-NEXT: addi sp, sp, 2032428; RV64ZBA-NEXT: .cfi_def_cfa_offset 0429; RV64ZBA-NEXT: ret430 %a = alloca [10336 x i8]431 call void @callee(ptr %a)432 ret void433}434 435define void @frame_16kb_minus_80() {436; RV32I-LABEL: frame_16kb_minus_80:437; RV32I: # %bb.0:438; RV32I-NEXT: addi sp, sp, -2032439; RV32I-NEXT: .cfi_def_cfa_offset 2032440; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill441; RV32I-NEXT: .cfi_offset ra, -4442; RV32I-NEXT: lui a0, 4443; RV32I-NEXT: addi a0, a0, -80444; RV32I-NEXT: sub sp, sp, a0445; RV32I-NEXT: .cfi_def_cfa_offset 18336446; RV32I-NEXT: addi a0, sp, 12447; RV32I-NEXT: call callee448; RV32I-NEXT: lui a0, 4449; RV32I-NEXT: addi a0, a0, -80450; RV32I-NEXT: add sp, sp, a0451; RV32I-NEXT: .cfi_def_cfa_offset 2032452; RV32I-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload453; RV32I-NEXT: .cfi_restore ra454; RV32I-NEXT: addi sp, sp, 2032455; RV32I-NEXT: .cfi_def_cfa_offset 0456; RV32I-NEXT: ret457;458; RV32ZBA-LABEL: frame_16kb_minus_80:459; RV32ZBA: # %bb.0:460; RV32ZBA-NEXT: addi sp, sp, -2032461; RV32ZBA-NEXT: .cfi_def_cfa_offset 2032462; RV32ZBA-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill463; RV32ZBA-NEXT: .cfi_offset ra, -4464; RV32ZBA-NEXT: li a0, -2038465; RV32ZBA-NEXT: sh3add sp, a0, sp466; RV32ZBA-NEXT: .cfi_def_cfa_offset 18336467; RV32ZBA-NEXT: addi a0, sp, 12468; RV32ZBA-NEXT: call callee469; RV32ZBA-NEXT: li a0, 2038470; RV32ZBA-NEXT: sh3add sp, a0, sp471; RV32ZBA-NEXT: .cfi_def_cfa_offset 2032472; RV32ZBA-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload473; RV32ZBA-NEXT: .cfi_restore ra474; RV32ZBA-NEXT: addi sp, sp, 2032475; RV32ZBA-NEXT: .cfi_def_cfa_offset 0476; RV32ZBA-NEXT: ret477;478; RV64I-LABEL: frame_16kb_minus_80:479; RV64I: # %bb.0:480; RV64I-NEXT: addi sp, sp, -2032481; RV64I-NEXT: .cfi_def_cfa_offset 2032482; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill483; RV64I-NEXT: .cfi_offset ra, -8484; RV64I-NEXT: lui a0, 4485; RV64I-NEXT: addi a0, a0, -80486; RV64I-NEXT: sub sp, sp, a0487; RV64I-NEXT: .cfi_def_cfa_offset 18336488; RV64I-NEXT: addi a0, sp, 8489; RV64I-NEXT: call callee490; RV64I-NEXT: lui a0, 4491; RV64I-NEXT: addi a0, a0, -80492; RV64I-NEXT: add sp, sp, a0493; RV64I-NEXT: .cfi_def_cfa_offset 2032494; RV64I-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload495; RV64I-NEXT: .cfi_restore ra496; RV64I-NEXT: addi sp, sp, 2032497; RV64I-NEXT: .cfi_def_cfa_offset 0498; RV64I-NEXT: ret499;500; RV64ZBA-LABEL: frame_16kb_minus_80:501; RV64ZBA: # %bb.0:502; RV64ZBA-NEXT: addi sp, sp, -2032503; RV64ZBA-NEXT: .cfi_def_cfa_offset 2032504; RV64ZBA-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill505; RV64ZBA-NEXT: .cfi_offset ra, -8506; RV64ZBA-NEXT: li a0, -2038507; RV64ZBA-NEXT: sh3add sp, a0, sp508; RV64ZBA-NEXT: .cfi_def_cfa_offset 18336509; RV64ZBA-NEXT: addi a0, sp, 8510; RV64ZBA-NEXT: call callee511; RV64ZBA-NEXT: li a0, 2038512; RV64ZBA-NEXT: sh3add sp, a0, sp513; RV64ZBA-NEXT: .cfi_def_cfa_offset 2032514; RV64ZBA-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload515; RV64ZBA-NEXT: .cfi_restore ra516; RV64ZBA-NEXT: addi sp, sp, 2032517; RV64ZBA-NEXT: .cfi_def_cfa_offset 0518; RV64ZBA-NEXT: ret519 %a = alloca [18320 x i8]520 call void @callee(ptr %a)521 ret void522}523 524;; 2^14-16+2032525define void @frame_16kb() {526; RV32-LABEL: frame_16kb:527; RV32: # %bb.0:528; RV32-NEXT: addi sp, sp, -2032529; RV32-NEXT: .cfi_def_cfa_offset 2032530; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill531; RV32-NEXT: .cfi_offset ra, -4532; RV32-NEXT: lui a0, 4533; RV32-NEXT: sub sp, sp, a0534; RV32-NEXT: .cfi_def_cfa_offset 18416535; RV32-NEXT: addi a0, sp, 12536; RV32-NEXT: call callee537; RV32-NEXT: lui a0, 4538; RV32-NEXT: add sp, sp, a0539; RV32-NEXT: .cfi_def_cfa_offset 2032540; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload541; RV32-NEXT: .cfi_restore ra542; RV32-NEXT: addi sp, sp, 2032543; RV32-NEXT: .cfi_def_cfa_offset 0544; RV32-NEXT: ret545;546; RV64-LABEL: frame_16kb:547; RV64: # %bb.0:548; RV64-NEXT: addi sp, sp, -2032549; RV64-NEXT: .cfi_def_cfa_offset 2032550; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill551; RV64-NEXT: .cfi_offset ra, -8552; RV64-NEXT: lui a0, 4553; RV64-NEXT: sub sp, sp, a0554; RV64-NEXT: .cfi_def_cfa_offset 18416555; RV64-NEXT: addi a0, sp, 8556; RV64-NEXT: call callee557; RV64-NEXT: lui a0, 4558; RV64-NEXT: add sp, sp, a0559; RV64-NEXT: .cfi_def_cfa_offset 2032560; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload561; RV64-NEXT: .cfi_restore ra562; RV64-NEXT: addi sp, sp, 2032563; RV64-NEXT: .cfi_def_cfa_offset 0564; RV64-NEXT: ret565 %a = alloca [18400 x i8]566 call void @callee(ptr %a)567 ret void568}569 570;; 2^15-16+2032571define void @frame_32kb() {572; RV32-LABEL: frame_32kb:573; RV32: # %bb.0:574; RV32-NEXT: addi sp, sp, -2032575; RV32-NEXT: .cfi_def_cfa_offset 2032576; RV32-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill577; RV32-NEXT: .cfi_offset ra, -4578; RV32-NEXT: lui a0, 8579; RV32-NEXT: sub sp, sp, a0580; RV32-NEXT: .cfi_def_cfa_offset 34800581; RV32-NEXT: addi a0, sp, 12582; RV32-NEXT: call callee583; RV32-NEXT: lui a0, 8584; RV32-NEXT: add sp, sp, a0585; RV32-NEXT: .cfi_def_cfa_offset 2032586; RV32-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload587; RV32-NEXT: .cfi_restore ra588; RV32-NEXT: addi sp, sp, 2032589; RV32-NEXT: .cfi_def_cfa_offset 0590; RV32-NEXT: ret591;592; RV64-LABEL: frame_32kb:593; RV64: # %bb.0:594; RV64-NEXT: addi sp, sp, -2032595; RV64-NEXT: .cfi_def_cfa_offset 2032596; RV64-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill597; RV64-NEXT: .cfi_offset ra, -8598; RV64-NEXT: lui a0, 8599; RV64-NEXT: sub sp, sp, a0600; RV64-NEXT: .cfi_def_cfa_offset 34800601; RV64-NEXT: addi a0, sp, 8602; RV64-NEXT: call callee603; RV64-NEXT: lui a0, 8604; RV64-NEXT: add sp, sp, a0605; RV64-NEXT: .cfi_def_cfa_offset 2032606; RV64-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload607; RV64-NEXT: .cfi_restore ra608; RV64-NEXT: addi sp, sp, 2032609; RV64-NEXT: .cfi_def_cfa_offset 0610; RV64-NEXT: ret611 %a = alloca [34784 x i8]612 call void @callee(ptr %a)613 ret void614}615