brintos

brintos / llvm-project-archived public Read only

0
0
Text · 51.9 KiB · 55e1c62 Raw
1452 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-prefix=RV32I4; RUN: llc -mtriple=riscv32 -target-abi ilp32e -verify-machineinstrs < %s \5; RUN:   | FileCheck %s -check-prefix=RV32I-ILP32E6; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \7; RUN:   | FileCheck %s -check-prefix=RV64I8; RUN: llc -mtriple=riscv64 -target-abi lp64e -verify-machineinstrs < %s \9; RUN:   | FileCheck %s -check-prefix=RV64I-LP64E10 11declare void @callee(ptr)12 13define void @caller16() {14; RV32I-LABEL: caller16:15; RV32I:       # %bb.0:16; RV32I-NEXT:    addi sp, sp, -1617; RV32I-NEXT:    .cfi_def_cfa_offset 1618; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill19; RV32I-NEXT:    .cfi_offset ra, -420; RV32I-NEXT:    mv a0, sp21; RV32I-NEXT:    call callee22; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload23; RV32I-NEXT:    .cfi_restore ra24; RV32I-NEXT:    addi sp, sp, 1625; RV32I-NEXT:    .cfi_def_cfa_offset 026; RV32I-NEXT:    ret27;28; RV32I-ILP32E-LABEL: caller16:29; RV32I-ILP32E:       # %bb.0:30; RV32I-ILP32E-NEXT:    addi sp, sp, -1631; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 1632; RV32I-ILP32E-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill33; RV32I-ILP32E-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill34; RV32I-ILP32E-NEXT:    .cfi_offset ra, -435; RV32I-ILP32E-NEXT:    .cfi_offset s0, -836; RV32I-ILP32E-NEXT:    addi s0, sp, 1637; RV32I-ILP32E-NEXT:    .cfi_def_cfa s0, 038; RV32I-ILP32E-NEXT:    andi sp, sp, -1639; RV32I-ILP32E-NEXT:    mv a0, sp40; RV32I-ILP32E-NEXT:    call callee41; RV32I-ILP32E-NEXT:    addi sp, s0, -1642; RV32I-ILP32E-NEXT:    .cfi_def_cfa sp, 1643; RV32I-ILP32E-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload44; RV32I-ILP32E-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload45; RV32I-ILP32E-NEXT:    .cfi_restore ra46; RV32I-ILP32E-NEXT:    .cfi_restore s047; RV32I-ILP32E-NEXT:    addi sp, sp, 1648; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 049; RV32I-ILP32E-NEXT:    ret50;51; RV64I-LABEL: caller16:52; RV64I:       # %bb.0:53; RV64I-NEXT:    addi sp, sp, -1654; RV64I-NEXT:    .cfi_def_cfa_offset 1655; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill56; RV64I-NEXT:    .cfi_offset ra, -857; RV64I-NEXT:    mv a0, sp58; RV64I-NEXT:    call callee59; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload60; RV64I-NEXT:    .cfi_restore ra61; RV64I-NEXT:    addi sp, sp, 1662; RV64I-NEXT:    .cfi_def_cfa_offset 063; RV64I-NEXT:    ret64;65; RV64I-LP64E-LABEL: caller16:66; RV64I-LP64E:       # %bb.0:67; RV64I-LP64E-NEXT:    addi sp, sp, -3268; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 3269; RV64I-LP64E-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill70; RV64I-LP64E-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill71; RV64I-LP64E-NEXT:    .cfi_offset ra, -872; RV64I-LP64E-NEXT:    .cfi_offset s0, -1673; RV64I-LP64E-NEXT:    addi s0, sp, 3274; RV64I-LP64E-NEXT:    .cfi_def_cfa s0, 075; RV64I-LP64E-NEXT:    andi sp, sp, -1676; RV64I-LP64E-NEXT:    mv a0, sp77; RV64I-LP64E-NEXT:    call callee78; RV64I-LP64E-NEXT:    addi sp, s0, -3279; RV64I-LP64E-NEXT:    .cfi_def_cfa sp, 3280; RV64I-LP64E-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload81; RV64I-LP64E-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload82; RV64I-LP64E-NEXT:    .cfi_restore ra83; RV64I-LP64E-NEXT:    .cfi_restore s084; RV64I-LP64E-NEXT:    addi sp, sp, 3285; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 086; RV64I-LP64E-NEXT:    ret87  %1 = alloca i8, align 1688  call void @callee(ptr %1)89  ret void90}91 92define void @caller_no_realign16() "no-realign-stack" {93; RV32I-LABEL: caller_no_realign16:94; RV32I:       # %bb.0:95; RV32I-NEXT:    addi sp, sp, -1696; RV32I-NEXT:    .cfi_def_cfa_offset 1697; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill98; RV32I-NEXT:    .cfi_offset ra, -499; RV32I-NEXT:    mv a0, sp100; RV32I-NEXT:    call callee101; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload102; RV32I-NEXT:    .cfi_restore ra103; RV32I-NEXT:    addi sp, sp, 16104; RV32I-NEXT:    .cfi_def_cfa_offset 0105; RV32I-NEXT:    ret106;107; RV32I-ILP32E-LABEL: caller_no_realign16:108; RV32I-ILP32E:       # %bb.0:109; RV32I-ILP32E-NEXT:    addi sp, sp, -8110; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 8111; RV32I-ILP32E-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill112; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4113; RV32I-ILP32E-NEXT:    mv a0, sp114; RV32I-ILP32E-NEXT:    call callee115; RV32I-ILP32E-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload116; RV32I-ILP32E-NEXT:    .cfi_restore ra117; RV32I-ILP32E-NEXT:    addi sp, sp, 8118; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0119; RV32I-ILP32E-NEXT:    ret120;121; RV64I-LABEL: caller_no_realign16:122; RV64I:       # %bb.0:123; RV64I-NEXT:    addi sp, sp, -16124; RV64I-NEXT:    .cfi_def_cfa_offset 16125; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill126; RV64I-NEXT:    .cfi_offset ra, -8127; RV64I-NEXT:    mv a0, sp128; RV64I-NEXT:    call callee129; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload130; RV64I-NEXT:    .cfi_restore ra131; RV64I-NEXT:    addi sp, sp, 16132; RV64I-NEXT:    .cfi_def_cfa_offset 0133; RV64I-NEXT:    ret134;135; RV64I-LP64E-LABEL: caller_no_realign16:136; RV64I-LP64E:       # %bb.0:137; RV64I-LP64E-NEXT:    addi sp, sp, -16138; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 16139; RV64I-LP64E-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill140; RV64I-LP64E-NEXT:    .cfi_offset ra, -8141; RV64I-LP64E-NEXT:    mv a0, sp142; RV64I-LP64E-NEXT:    call callee143; RV64I-LP64E-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload144; RV64I-LP64E-NEXT:    .cfi_restore ra145; RV64I-LP64E-NEXT:    addi sp, sp, 16146; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0147; RV64I-LP64E-NEXT:    ret148  %1 = alloca i8, align 16149  call void @callee(ptr %1)150  ret void151}152 153define void @caller32() {154; RV32I-LABEL: caller32:155; RV32I:       # %bb.0:156; RV32I-NEXT:    addi sp, sp, -32157; RV32I-NEXT:    .cfi_def_cfa_offset 32158; RV32I-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill159; RV32I-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill160; RV32I-NEXT:    .cfi_offset ra, -4161; RV32I-NEXT:    .cfi_offset s0, -8162; RV32I-NEXT:    addi s0, sp, 32163; RV32I-NEXT:    .cfi_def_cfa s0, 0164; RV32I-NEXT:    andi sp, sp, -32165; RV32I-NEXT:    mv a0, sp166; RV32I-NEXT:    call callee167; RV32I-NEXT:    addi sp, s0, -32168; RV32I-NEXT:    .cfi_def_cfa sp, 32169; RV32I-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload170; RV32I-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload171; RV32I-NEXT:    .cfi_restore ra172; RV32I-NEXT:    .cfi_restore s0173; RV32I-NEXT:    addi sp, sp, 32174; RV32I-NEXT:    .cfi_def_cfa_offset 0175; RV32I-NEXT:    ret176;177; RV32I-ILP32E-LABEL: caller32:178; RV32I-ILP32E:       # %bb.0:179; RV32I-ILP32E-NEXT:    addi sp, sp, -32180; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 32181; RV32I-ILP32E-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill182; RV32I-ILP32E-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill183; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4184; RV32I-ILP32E-NEXT:    .cfi_offset s0, -8185; RV32I-ILP32E-NEXT:    addi s0, sp, 32186; RV32I-ILP32E-NEXT:    .cfi_def_cfa s0, 0187; RV32I-ILP32E-NEXT:    andi sp, sp, -32188; RV32I-ILP32E-NEXT:    mv a0, sp189; RV32I-ILP32E-NEXT:    call callee190; RV32I-ILP32E-NEXT:    addi sp, s0, -32191; RV32I-ILP32E-NEXT:    .cfi_def_cfa sp, 32192; RV32I-ILP32E-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload193; RV32I-ILP32E-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload194; RV32I-ILP32E-NEXT:    .cfi_restore ra195; RV32I-ILP32E-NEXT:    .cfi_restore s0196; RV32I-ILP32E-NEXT:    addi sp, sp, 32197; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0198; RV32I-ILP32E-NEXT:    ret199;200; RV64I-LABEL: caller32:201; RV64I:       # %bb.0:202; RV64I-NEXT:    addi sp, sp, -32203; RV64I-NEXT:    .cfi_def_cfa_offset 32204; RV64I-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill205; RV64I-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill206; RV64I-NEXT:    .cfi_offset ra, -8207; RV64I-NEXT:    .cfi_offset s0, -16208; RV64I-NEXT:    addi s0, sp, 32209; RV64I-NEXT:    .cfi_def_cfa s0, 0210; RV64I-NEXT:    andi sp, sp, -32211; RV64I-NEXT:    mv a0, sp212; RV64I-NEXT:    call callee213; RV64I-NEXT:    addi sp, s0, -32214; RV64I-NEXT:    .cfi_def_cfa sp, 32215; RV64I-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload216; RV64I-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload217; RV64I-NEXT:    .cfi_restore ra218; RV64I-NEXT:    .cfi_restore s0219; RV64I-NEXT:    addi sp, sp, 32220; RV64I-NEXT:    .cfi_def_cfa_offset 0221; RV64I-NEXT:    ret222;223; RV64I-LP64E-LABEL: caller32:224; RV64I-LP64E:       # %bb.0:225; RV64I-LP64E-NEXT:    addi sp, sp, -32226; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 32227; RV64I-LP64E-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill228; RV64I-LP64E-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill229; RV64I-LP64E-NEXT:    .cfi_offset ra, -8230; RV64I-LP64E-NEXT:    .cfi_offset s0, -16231; RV64I-LP64E-NEXT:    addi s0, sp, 32232; RV64I-LP64E-NEXT:    .cfi_def_cfa s0, 0233; RV64I-LP64E-NEXT:    andi sp, sp, -32234; RV64I-LP64E-NEXT:    mv a0, sp235; RV64I-LP64E-NEXT:    call callee236; RV64I-LP64E-NEXT:    addi sp, s0, -32237; RV64I-LP64E-NEXT:    .cfi_def_cfa sp, 32238; RV64I-LP64E-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload239; RV64I-LP64E-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload240; RV64I-LP64E-NEXT:    .cfi_restore ra241; RV64I-LP64E-NEXT:    .cfi_restore s0242; RV64I-LP64E-NEXT:    addi sp, sp, 32243; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0244; RV64I-LP64E-NEXT:    ret245  %1 = alloca i8, align 32246  call void @callee(ptr %1)247  ret void248}249 250define void @caller_no_realign32() "no-realign-stack" {251; RV32I-LABEL: caller_no_realign32:252; RV32I:       # %bb.0:253; RV32I-NEXT:    addi sp, sp, -16254; RV32I-NEXT:    .cfi_def_cfa_offset 16255; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill256; RV32I-NEXT:    .cfi_offset ra, -4257; RV32I-NEXT:    mv a0, sp258; RV32I-NEXT:    call callee259; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload260; RV32I-NEXT:    .cfi_restore ra261; RV32I-NEXT:    addi sp, sp, 16262; RV32I-NEXT:    .cfi_def_cfa_offset 0263; RV32I-NEXT:    ret264;265; RV32I-ILP32E-LABEL: caller_no_realign32:266; RV32I-ILP32E:       # %bb.0:267; RV32I-ILP32E-NEXT:    addi sp, sp, -8268; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 8269; RV32I-ILP32E-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill270; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4271; RV32I-ILP32E-NEXT:    mv a0, sp272; RV32I-ILP32E-NEXT:    call callee273; RV32I-ILP32E-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload274; RV32I-ILP32E-NEXT:    .cfi_restore ra275; RV32I-ILP32E-NEXT:    addi sp, sp, 8276; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0277; RV32I-ILP32E-NEXT:    ret278;279; RV64I-LABEL: caller_no_realign32:280; RV64I:       # %bb.0:281; RV64I-NEXT:    addi sp, sp, -16282; RV64I-NEXT:    .cfi_def_cfa_offset 16283; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill284; RV64I-NEXT:    .cfi_offset ra, -8285; RV64I-NEXT:    mv a0, sp286; RV64I-NEXT:    call callee287; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload288; RV64I-NEXT:    .cfi_restore ra289; RV64I-NEXT:    addi sp, sp, 16290; RV64I-NEXT:    .cfi_def_cfa_offset 0291; RV64I-NEXT:    ret292;293; RV64I-LP64E-LABEL: caller_no_realign32:294; RV64I-LP64E:       # %bb.0:295; RV64I-LP64E-NEXT:    addi sp, sp, -16296; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 16297; RV64I-LP64E-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill298; RV64I-LP64E-NEXT:    .cfi_offset ra, -8299; RV64I-LP64E-NEXT:    mv a0, sp300; RV64I-LP64E-NEXT:    call callee301; RV64I-LP64E-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload302; RV64I-LP64E-NEXT:    .cfi_restore ra303; RV64I-LP64E-NEXT:    addi sp, sp, 16304; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0305; RV64I-LP64E-NEXT:    ret306  %1 = alloca i8, align 32307  call void @callee(ptr %1)308  ret void309}310 311define void @caller64() {312; RV32I-LABEL: caller64:313; RV32I:       # %bb.0:314; RV32I-NEXT:    addi sp, sp, -64315; RV32I-NEXT:    .cfi_def_cfa_offset 64316; RV32I-NEXT:    sw ra, 60(sp) # 4-byte Folded Spill317; RV32I-NEXT:    sw s0, 56(sp) # 4-byte Folded Spill318; RV32I-NEXT:    .cfi_offset ra, -4319; RV32I-NEXT:    .cfi_offset s0, -8320; RV32I-NEXT:    addi s0, sp, 64321; RV32I-NEXT:    .cfi_def_cfa s0, 0322; RV32I-NEXT:    andi sp, sp, -64323; RV32I-NEXT:    mv a0, sp324; RV32I-NEXT:    call callee325; RV32I-NEXT:    addi sp, s0, -64326; RV32I-NEXT:    .cfi_def_cfa sp, 64327; RV32I-NEXT:    lw ra, 60(sp) # 4-byte Folded Reload328; RV32I-NEXT:    lw s0, 56(sp) # 4-byte Folded Reload329; RV32I-NEXT:    .cfi_restore ra330; RV32I-NEXT:    .cfi_restore s0331; RV32I-NEXT:    addi sp, sp, 64332; RV32I-NEXT:    .cfi_def_cfa_offset 0333; RV32I-NEXT:    ret334;335; RV32I-ILP32E-LABEL: caller64:336; RV32I-ILP32E:       # %bb.0:337; RV32I-ILP32E-NEXT:    addi sp, sp, -64338; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 64339; RV32I-ILP32E-NEXT:    sw ra, 60(sp) # 4-byte Folded Spill340; RV32I-ILP32E-NEXT:    sw s0, 56(sp) # 4-byte Folded Spill341; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4342; RV32I-ILP32E-NEXT:    .cfi_offset s0, -8343; RV32I-ILP32E-NEXT:    addi s0, sp, 64344; RV32I-ILP32E-NEXT:    .cfi_def_cfa s0, 0345; RV32I-ILP32E-NEXT:    andi sp, sp, -64346; RV32I-ILP32E-NEXT:    mv a0, sp347; RV32I-ILP32E-NEXT:    call callee348; RV32I-ILP32E-NEXT:    addi sp, s0, -64349; RV32I-ILP32E-NEXT:    .cfi_def_cfa sp, 64350; RV32I-ILP32E-NEXT:    lw ra, 60(sp) # 4-byte Folded Reload351; RV32I-ILP32E-NEXT:    lw s0, 56(sp) # 4-byte Folded Reload352; RV32I-ILP32E-NEXT:    .cfi_restore ra353; RV32I-ILP32E-NEXT:    .cfi_restore s0354; RV32I-ILP32E-NEXT:    addi sp, sp, 64355; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0356; RV32I-ILP32E-NEXT:    ret357;358; RV64I-LABEL: caller64:359; RV64I:       # %bb.0:360; RV64I-NEXT:    addi sp, sp, -64361; RV64I-NEXT:    .cfi_def_cfa_offset 64362; RV64I-NEXT:    sd ra, 56(sp) # 8-byte Folded Spill363; RV64I-NEXT:    sd s0, 48(sp) # 8-byte Folded Spill364; RV64I-NEXT:    .cfi_offset ra, -8365; RV64I-NEXT:    .cfi_offset s0, -16366; RV64I-NEXT:    addi s0, sp, 64367; RV64I-NEXT:    .cfi_def_cfa s0, 0368; RV64I-NEXT:    andi sp, sp, -64369; RV64I-NEXT:    mv a0, sp370; RV64I-NEXT:    call callee371; RV64I-NEXT:    addi sp, s0, -64372; RV64I-NEXT:    .cfi_def_cfa sp, 64373; RV64I-NEXT:    ld ra, 56(sp) # 8-byte Folded Reload374; RV64I-NEXT:    ld s0, 48(sp) # 8-byte Folded Reload375; RV64I-NEXT:    .cfi_restore ra376; RV64I-NEXT:    .cfi_restore s0377; RV64I-NEXT:    addi sp, sp, 64378; RV64I-NEXT:    .cfi_def_cfa_offset 0379; RV64I-NEXT:    ret380;381; RV64I-LP64E-LABEL: caller64:382; RV64I-LP64E:       # %bb.0:383; RV64I-LP64E-NEXT:    addi sp, sp, -64384; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 64385; RV64I-LP64E-NEXT:    sd ra, 56(sp) # 8-byte Folded Spill386; RV64I-LP64E-NEXT:    sd s0, 48(sp) # 8-byte Folded Spill387; RV64I-LP64E-NEXT:    .cfi_offset ra, -8388; RV64I-LP64E-NEXT:    .cfi_offset s0, -16389; RV64I-LP64E-NEXT:    addi s0, sp, 64390; RV64I-LP64E-NEXT:    .cfi_def_cfa s0, 0391; RV64I-LP64E-NEXT:    andi sp, sp, -64392; RV64I-LP64E-NEXT:    mv a0, sp393; RV64I-LP64E-NEXT:    call callee394; RV64I-LP64E-NEXT:    addi sp, s0, -64395; RV64I-LP64E-NEXT:    .cfi_def_cfa sp, 64396; RV64I-LP64E-NEXT:    ld ra, 56(sp) # 8-byte Folded Reload397; RV64I-LP64E-NEXT:    ld s0, 48(sp) # 8-byte Folded Reload398; RV64I-LP64E-NEXT:    .cfi_restore ra399; RV64I-LP64E-NEXT:    .cfi_restore s0400; RV64I-LP64E-NEXT:    addi sp, sp, 64401; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0402; RV64I-LP64E-NEXT:    ret403  %1 = alloca i8, align 64404  call void @callee(ptr %1)405  ret void406}407 408define void @caller_no_realign64() "no-realign-stack" {409; RV32I-LABEL: caller_no_realign64:410; RV32I:       # %bb.0:411; RV32I-NEXT:    addi sp, sp, -16412; RV32I-NEXT:    .cfi_def_cfa_offset 16413; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill414; RV32I-NEXT:    .cfi_offset ra, -4415; RV32I-NEXT:    mv a0, sp416; RV32I-NEXT:    call callee417; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload418; RV32I-NEXT:    .cfi_restore ra419; RV32I-NEXT:    addi sp, sp, 16420; RV32I-NEXT:    .cfi_def_cfa_offset 0421; RV32I-NEXT:    ret422;423; RV32I-ILP32E-LABEL: caller_no_realign64:424; RV32I-ILP32E:       # %bb.0:425; RV32I-ILP32E-NEXT:    addi sp, sp, -8426; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 8427; RV32I-ILP32E-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill428; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4429; RV32I-ILP32E-NEXT:    mv a0, sp430; RV32I-ILP32E-NEXT:    call callee431; RV32I-ILP32E-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload432; RV32I-ILP32E-NEXT:    .cfi_restore ra433; RV32I-ILP32E-NEXT:    addi sp, sp, 8434; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0435; RV32I-ILP32E-NEXT:    ret436;437; RV64I-LABEL: caller_no_realign64:438; RV64I:       # %bb.0:439; RV64I-NEXT:    addi sp, sp, -16440; RV64I-NEXT:    .cfi_def_cfa_offset 16441; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill442; RV64I-NEXT:    .cfi_offset ra, -8443; RV64I-NEXT:    mv a0, sp444; RV64I-NEXT:    call callee445; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload446; RV64I-NEXT:    .cfi_restore ra447; RV64I-NEXT:    addi sp, sp, 16448; RV64I-NEXT:    .cfi_def_cfa_offset 0449; RV64I-NEXT:    ret450;451; RV64I-LP64E-LABEL: caller_no_realign64:452; RV64I-LP64E:       # %bb.0:453; RV64I-LP64E-NEXT:    addi sp, sp, -16454; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 16455; RV64I-LP64E-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill456; RV64I-LP64E-NEXT:    .cfi_offset ra, -8457; RV64I-LP64E-NEXT:    mv a0, sp458; RV64I-LP64E-NEXT:    call callee459; RV64I-LP64E-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload460; RV64I-LP64E-NEXT:    .cfi_restore ra461; RV64I-LP64E-NEXT:    addi sp, sp, 16462; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0463; RV64I-LP64E-NEXT:    ret464  %1 = alloca i8, align 64465  call void @callee(ptr %1)466  ret void467}468 469define void @caller128() {470; RV32I-LABEL: caller128:471; RV32I:       # %bb.0:472; RV32I-NEXT:    addi sp, sp, -128473; RV32I-NEXT:    .cfi_def_cfa_offset 128474; RV32I-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill475; RV32I-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill476; RV32I-NEXT:    .cfi_offset ra, -4477; RV32I-NEXT:    .cfi_offset s0, -8478; RV32I-NEXT:    addi s0, sp, 128479; RV32I-NEXT:    .cfi_def_cfa s0, 0480; RV32I-NEXT:    andi sp, sp, -128481; RV32I-NEXT:    mv a0, sp482; RV32I-NEXT:    call callee483; RV32I-NEXT:    addi sp, s0, -128484; RV32I-NEXT:    .cfi_def_cfa sp, 128485; RV32I-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload486; RV32I-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload487; RV32I-NEXT:    .cfi_restore ra488; RV32I-NEXT:    .cfi_restore s0489; RV32I-NEXT:    addi sp, sp, 128490; RV32I-NEXT:    .cfi_def_cfa_offset 0491; RV32I-NEXT:    ret492;493; RV32I-ILP32E-LABEL: caller128:494; RV32I-ILP32E:       # %bb.0:495; RV32I-ILP32E-NEXT:    addi sp, sp, -128496; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 128497; RV32I-ILP32E-NEXT:    sw ra, 124(sp) # 4-byte Folded Spill498; RV32I-ILP32E-NEXT:    sw s0, 120(sp) # 4-byte Folded Spill499; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4500; RV32I-ILP32E-NEXT:    .cfi_offset s0, -8501; RV32I-ILP32E-NEXT:    addi s0, sp, 128502; RV32I-ILP32E-NEXT:    .cfi_def_cfa s0, 0503; RV32I-ILP32E-NEXT:    andi sp, sp, -128504; RV32I-ILP32E-NEXT:    mv a0, sp505; RV32I-ILP32E-NEXT:    call callee506; RV32I-ILP32E-NEXT:    addi sp, s0, -128507; RV32I-ILP32E-NEXT:    .cfi_def_cfa sp, 128508; RV32I-ILP32E-NEXT:    lw ra, 124(sp) # 4-byte Folded Reload509; RV32I-ILP32E-NEXT:    lw s0, 120(sp) # 4-byte Folded Reload510; RV32I-ILP32E-NEXT:    .cfi_restore ra511; RV32I-ILP32E-NEXT:    .cfi_restore s0512; RV32I-ILP32E-NEXT:    addi sp, sp, 128513; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0514; RV32I-ILP32E-NEXT:    ret515;516; RV64I-LABEL: caller128:517; RV64I:       # %bb.0:518; RV64I-NEXT:    addi sp, sp, -128519; RV64I-NEXT:    .cfi_def_cfa_offset 128520; RV64I-NEXT:    sd ra, 120(sp) # 8-byte Folded Spill521; RV64I-NEXT:    sd s0, 112(sp) # 8-byte Folded Spill522; RV64I-NEXT:    .cfi_offset ra, -8523; RV64I-NEXT:    .cfi_offset s0, -16524; RV64I-NEXT:    addi s0, sp, 128525; RV64I-NEXT:    .cfi_def_cfa s0, 0526; RV64I-NEXT:    andi sp, sp, -128527; RV64I-NEXT:    mv a0, sp528; RV64I-NEXT:    call callee529; RV64I-NEXT:    addi sp, s0, -128530; RV64I-NEXT:    .cfi_def_cfa sp, 128531; RV64I-NEXT:    ld ra, 120(sp) # 8-byte Folded Reload532; RV64I-NEXT:    ld s0, 112(sp) # 8-byte Folded Reload533; RV64I-NEXT:    .cfi_restore ra534; RV64I-NEXT:    .cfi_restore s0535; RV64I-NEXT:    addi sp, sp, 128536; RV64I-NEXT:    .cfi_def_cfa_offset 0537; RV64I-NEXT:    ret538;539; RV64I-LP64E-LABEL: caller128:540; RV64I-LP64E:       # %bb.0:541; RV64I-LP64E-NEXT:    addi sp, sp, -128542; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 128543; RV64I-LP64E-NEXT:    sd ra, 120(sp) # 8-byte Folded Spill544; RV64I-LP64E-NEXT:    sd s0, 112(sp) # 8-byte Folded Spill545; RV64I-LP64E-NEXT:    .cfi_offset ra, -8546; RV64I-LP64E-NEXT:    .cfi_offset s0, -16547; RV64I-LP64E-NEXT:    addi s0, sp, 128548; RV64I-LP64E-NEXT:    .cfi_def_cfa s0, 0549; RV64I-LP64E-NEXT:    andi sp, sp, -128550; RV64I-LP64E-NEXT:    mv a0, sp551; RV64I-LP64E-NEXT:    call callee552; RV64I-LP64E-NEXT:    addi sp, s0, -128553; RV64I-LP64E-NEXT:    .cfi_def_cfa sp, 128554; RV64I-LP64E-NEXT:    ld ra, 120(sp) # 8-byte Folded Reload555; RV64I-LP64E-NEXT:    ld s0, 112(sp) # 8-byte Folded Reload556; RV64I-LP64E-NEXT:    .cfi_restore ra557; RV64I-LP64E-NEXT:    .cfi_restore s0558; RV64I-LP64E-NEXT:    addi sp, sp, 128559; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0560; RV64I-LP64E-NEXT:    ret561  %1 = alloca i8, align 128562  call void @callee(ptr %1)563  ret void564}565 566define void @caller_no_realign128() "no-realign-stack" {567; RV32I-LABEL: caller_no_realign128:568; RV32I:       # %bb.0:569; RV32I-NEXT:    addi sp, sp, -16570; RV32I-NEXT:    .cfi_def_cfa_offset 16571; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill572; RV32I-NEXT:    .cfi_offset ra, -4573; RV32I-NEXT:    mv a0, sp574; RV32I-NEXT:    call callee575; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload576; RV32I-NEXT:    .cfi_restore ra577; RV32I-NEXT:    addi sp, sp, 16578; RV32I-NEXT:    .cfi_def_cfa_offset 0579; RV32I-NEXT:    ret580;581; RV32I-ILP32E-LABEL: caller_no_realign128:582; RV32I-ILP32E:       # %bb.0:583; RV32I-ILP32E-NEXT:    addi sp, sp, -8584; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 8585; RV32I-ILP32E-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill586; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4587; RV32I-ILP32E-NEXT:    mv a0, sp588; RV32I-ILP32E-NEXT:    call callee589; RV32I-ILP32E-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload590; RV32I-ILP32E-NEXT:    .cfi_restore ra591; RV32I-ILP32E-NEXT:    addi sp, sp, 8592; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0593; RV32I-ILP32E-NEXT:    ret594;595; RV64I-LABEL: caller_no_realign128:596; RV64I:       # %bb.0:597; RV64I-NEXT:    addi sp, sp, -16598; RV64I-NEXT:    .cfi_def_cfa_offset 16599; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill600; RV64I-NEXT:    .cfi_offset ra, -8601; RV64I-NEXT:    mv a0, sp602; RV64I-NEXT:    call callee603; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload604; RV64I-NEXT:    .cfi_restore ra605; RV64I-NEXT:    addi sp, sp, 16606; RV64I-NEXT:    .cfi_def_cfa_offset 0607; RV64I-NEXT:    ret608;609; RV64I-LP64E-LABEL: caller_no_realign128:610; RV64I-LP64E:       # %bb.0:611; RV64I-LP64E-NEXT:    addi sp, sp, -16612; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 16613; RV64I-LP64E-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill614; RV64I-LP64E-NEXT:    .cfi_offset ra, -8615; RV64I-LP64E-NEXT:    mv a0, sp616; RV64I-LP64E-NEXT:    call callee617; RV64I-LP64E-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload618; RV64I-LP64E-NEXT:    .cfi_restore ra619; RV64I-LP64E-NEXT:    addi sp, sp, 16620; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0621; RV64I-LP64E-NEXT:    ret622  %1 = alloca i8, align 128623  call void @callee(ptr %1)624  ret void625}626 627define void @caller256() {628; RV32I-LABEL: caller256:629; RV32I:       # %bb.0:630; RV32I-NEXT:    addi sp, sp, -256631; RV32I-NEXT:    .cfi_def_cfa_offset 256632; RV32I-NEXT:    sw ra, 252(sp) # 4-byte Folded Spill633; RV32I-NEXT:    sw s0, 248(sp) # 4-byte Folded Spill634; RV32I-NEXT:    .cfi_offset ra, -4635; RV32I-NEXT:    .cfi_offset s0, -8636; RV32I-NEXT:    addi s0, sp, 256637; RV32I-NEXT:    .cfi_def_cfa s0, 0638; RV32I-NEXT:    andi sp, sp, -256639; RV32I-NEXT:    mv a0, sp640; RV32I-NEXT:    call callee641; RV32I-NEXT:    addi sp, s0, -256642; RV32I-NEXT:    .cfi_def_cfa sp, 256643; RV32I-NEXT:    lw ra, 252(sp) # 4-byte Folded Reload644; RV32I-NEXT:    lw s0, 248(sp) # 4-byte Folded Reload645; RV32I-NEXT:    .cfi_restore ra646; RV32I-NEXT:    .cfi_restore s0647; RV32I-NEXT:    addi sp, sp, 256648; RV32I-NEXT:    .cfi_def_cfa_offset 0649; RV32I-NEXT:    ret650;651; RV32I-ILP32E-LABEL: caller256:652; RV32I-ILP32E:       # %bb.0:653; RV32I-ILP32E-NEXT:    addi sp, sp, -256654; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 256655; RV32I-ILP32E-NEXT:    sw ra, 252(sp) # 4-byte Folded Spill656; RV32I-ILP32E-NEXT:    sw s0, 248(sp) # 4-byte Folded Spill657; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4658; RV32I-ILP32E-NEXT:    .cfi_offset s0, -8659; RV32I-ILP32E-NEXT:    addi s0, sp, 256660; RV32I-ILP32E-NEXT:    .cfi_def_cfa s0, 0661; RV32I-ILP32E-NEXT:    andi sp, sp, -256662; RV32I-ILP32E-NEXT:    mv a0, sp663; RV32I-ILP32E-NEXT:    call callee664; RV32I-ILP32E-NEXT:    addi sp, s0, -256665; RV32I-ILP32E-NEXT:    .cfi_def_cfa sp, 256666; RV32I-ILP32E-NEXT:    lw ra, 252(sp) # 4-byte Folded Reload667; RV32I-ILP32E-NEXT:    lw s0, 248(sp) # 4-byte Folded Reload668; RV32I-ILP32E-NEXT:    .cfi_restore ra669; RV32I-ILP32E-NEXT:    .cfi_restore s0670; RV32I-ILP32E-NEXT:    addi sp, sp, 256671; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0672; RV32I-ILP32E-NEXT:    ret673;674; RV64I-LABEL: caller256:675; RV64I:       # %bb.0:676; RV64I-NEXT:    addi sp, sp, -256677; RV64I-NEXT:    .cfi_def_cfa_offset 256678; RV64I-NEXT:    sd ra, 248(sp) # 8-byte Folded Spill679; RV64I-NEXT:    sd s0, 240(sp) # 8-byte Folded Spill680; RV64I-NEXT:    .cfi_offset ra, -8681; RV64I-NEXT:    .cfi_offset s0, -16682; RV64I-NEXT:    addi s0, sp, 256683; RV64I-NEXT:    .cfi_def_cfa s0, 0684; RV64I-NEXT:    andi sp, sp, -256685; RV64I-NEXT:    mv a0, sp686; RV64I-NEXT:    call callee687; RV64I-NEXT:    addi sp, s0, -256688; RV64I-NEXT:    .cfi_def_cfa sp, 256689; RV64I-NEXT:    ld ra, 248(sp) # 8-byte Folded Reload690; RV64I-NEXT:    ld s0, 240(sp) # 8-byte Folded Reload691; RV64I-NEXT:    .cfi_restore ra692; RV64I-NEXT:    .cfi_restore s0693; RV64I-NEXT:    addi sp, sp, 256694; RV64I-NEXT:    .cfi_def_cfa_offset 0695; RV64I-NEXT:    ret696;697; RV64I-LP64E-LABEL: caller256:698; RV64I-LP64E:       # %bb.0:699; RV64I-LP64E-NEXT:    addi sp, sp, -256700; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 256701; RV64I-LP64E-NEXT:    sd ra, 248(sp) # 8-byte Folded Spill702; RV64I-LP64E-NEXT:    sd s0, 240(sp) # 8-byte Folded Spill703; RV64I-LP64E-NEXT:    .cfi_offset ra, -8704; RV64I-LP64E-NEXT:    .cfi_offset s0, -16705; RV64I-LP64E-NEXT:    addi s0, sp, 256706; RV64I-LP64E-NEXT:    .cfi_def_cfa s0, 0707; RV64I-LP64E-NEXT:    andi sp, sp, -256708; RV64I-LP64E-NEXT:    mv a0, sp709; RV64I-LP64E-NEXT:    call callee710; RV64I-LP64E-NEXT:    addi sp, s0, -256711; RV64I-LP64E-NEXT:    .cfi_def_cfa sp, 256712; RV64I-LP64E-NEXT:    ld ra, 248(sp) # 8-byte Folded Reload713; RV64I-LP64E-NEXT:    ld s0, 240(sp) # 8-byte Folded Reload714; RV64I-LP64E-NEXT:    .cfi_restore ra715; RV64I-LP64E-NEXT:    .cfi_restore s0716; RV64I-LP64E-NEXT:    addi sp, sp, 256717; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0718; RV64I-LP64E-NEXT:    ret719  %1 = alloca i8, align 256720  call void @callee(ptr %1)721  ret void722}723 724define void @caller_no_realign256() "no-realign-stack" {725; RV32I-LABEL: caller_no_realign256:726; RV32I:       # %bb.0:727; RV32I-NEXT:    addi sp, sp, -16728; RV32I-NEXT:    .cfi_def_cfa_offset 16729; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill730; RV32I-NEXT:    .cfi_offset ra, -4731; RV32I-NEXT:    mv a0, sp732; RV32I-NEXT:    call callee733; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload734; RV32I-NEXT:    .cfi_restore ra735; RV32I-NEXT:    addi sp, sp, 16736; RV32I-NEXT:    .cfi_def_cfa_offset 0737; RV32I-NEXT:    ret738;739; RV32I-ILP32E-LABEL: caller_no_realign256:740; RV32I-ILP32E:       # %bb.0:741; RV32I-ILP32E-NEXT:    addi sp, sp, -8742; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 8743; RV32I-ILP32E-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill744; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4745; RV32I-ILP32E-NEXT:    mv a0, sp746; RV32I-ILP32E-NEXT:    call callee747; RV32I-ILP32E-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload748; RV32I-ILP32E-NEXT:    .cfi_restore ra749; RV32I-ILP32E-NEXT:    addi sp, sp, 8750; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0751; RV32I-ILP32E-NEXT:    ret752;753; RV64I-LABEL: caller_no_realign256:754; RV64I:       # %bb.0:755; RV64I-NEXT:    addi sp, sp, -16756; RV64I-NEXT:    .cfi_def_cfa_offset 16757; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill758; RV64I-NEXT:    .cfi_offset ra, -8759; RV64I-NEXT:    mv a0, sp760; RV64I-NEXT:    call callee761; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload762; RV64I-NEXT:    .cfi_restore ra763; RV64I-NEXT:    addi sp, sp, 16764; RV64I-NEXT:    .cfi_def_cfa_offset 0765; RV64I-NEXT:    ret766;767; RV64I-LP64E-LABEL: caller_no_realign256:768; RV64I-LP64E:       # %bb.0:769; RV64I-LP64E-NEXT:    addi sp, sp, -16770; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 16771; RV64I-LP64E-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill772; RV64I-LP64E-NEXT:    .cfi_offset ra, -8773; RV64I-LP64E-NEXT:    mv a0, sp774; RV64I-LP64E-NEXT:    call callee775; RV64I-LP64E-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload776; RV64I-LP64E-NEXT:    .cfi_restore ra777; RV64I-LP64E-NEXT:    addi sp, sp, 16778; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0779; RV64I-LP64E-NEXT:    ret780  %1 = alloca i8, align 256781  call void @callee(ptr %1)782  ret void783}784 785define void @caller512() {786; RV32I-LABEL: caller512:787; RV32I:       # %bb.0:788; RV32I-NEXT:    addi sp, sp, -1024789; RV32I-NEXT:    .cfi_def_cfa_offset 1024790; RV32I-NEXT:    sw ra, 1020(sp) # 4-byte Folded Spill791; RV32I-NEXT:    sw s0, 1016(sp) # 4-byte Folded Spill792; RV32I-NEXT:    .cfi_offset ra, -4793; RV32I-NEXT:    .cfi_offset s0, -8794; RV32I-NEXT:    addi s0, sp, 1024795; RV32I-NEXT:    .cfi_def_cfa s0, 0796; RV32I-NEXT:    andi sp, sp, -512797; RV32I-NEXT:    addi a0, sp, 512798; RV32I-NEXT:    call callee799; RV32I-NEXT:    addi sp, s0, -1024800; RV32I-NEXT:    .cfi_def_cfa sp, 1024801; RV32I-NEXT:    lw ra, 1020(sp) # 4-byte Folded Reload802; RV32I-NEXT:    lw s0, 1016(sp) # 4-byte Folded Reload803; RV32I-NEXT:    .cfi_restore ra804; RV32I-NEXT:    .cfi_restore s0805; RV32I-NEXT:    addi sp, sp, 1024806; RV32I-NEXT:    .cfi_def_cfa_offset 0807; RV32I-NEXT:    ret808;809; RV32I-ILP32E-LABEL: caller512:810; RV32I-ILP32E:       # %bb.0:811; RV32I-ILP32E-NEXT:    addi sp, sp, -1024812; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 1024813; RV32I-ILP32E-NEXT:    sw ra, 1020(sp) # 4-byte Folded Spill814; RV32I-ILP32E-NEXT:    sw s0, 1016(sp) # 4-byte Folded Spill815; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4816; RV32I-ILP32E-NEXT:    .cfi_offset s0, -8817; RV32I-ILP32E-NEXT:    addi s0, sp, 1024818; RV32I-ILP32E-NEXT:    .cfi_def_cfa s0, 0819; RV32I-ILP32E-NEXT:    andi sp, sp, -512820; RV32I-ILP32E-NEXT:    addi a0, sp, 512821; RV32I-ILP32E-NEXT:    call callee822; RV32I-ILP32E-NEXT:    addi sp, s0, -1024823; RV32I-ILP32E-NEXT:    .cfi_def_cfa sp, 1024824; RV32I-ILP32E-NEXT:    lw ra, 1020(sp) # 4-byte Folded Reload825; RV32I-ILP32E-NEXT:    lw s0, 1016(sp) # 4-byte Folded Reload826; RV32I-ILP32E-NEXT:    .cfi_restore ra827; RV32I-ILP32E-NEXT:    .cfi_restore s0828; RV32I-ILP32E-NEXT:    addi sp, sp, 1024829; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0830; RV32I-ILP32E-NEXT:    ret831;832; RV64I-LABEL: caller512:833; RV64I:       # %bb.0:834; RV64I-NEXT:    addi sp, sp, -1024835; RV64I-NEXT:    .cfi_def_cfa_offset 1024836; RV64I-NEXT:    sd ra, 1016(sp) # 8-byte Folded Spill837; RV64I-NEXT:    sd s0, 1008(sp) # 8-byte Folded Spill838; RV64I-NEXT:    .cfi_offset ra, -8839; RV64I-NEXT:    .cfi_offset s0, -16840; RV64I-NEXT:    addi s0, sp, 1024841; RV64I-NEXT:    .cfi_def_cfa s0, 0842; RV64I-NEXT:    andi sp, sp, -512843; RV64I-NEXT:    addi a0, sp, 512844; RV64I-NEXT:    call callee845; RV64I-NEXT:    addi sp, s0, -1024846; RV64I-NEXT:    .cfi_def_cfa sp, 1024847; RV64I-NEXT:    ld ra, 1016(sp) # 8-byte Folded Reload848; RV64I-NEXT:    ld s0, 1008(sp) # 8-byte Folded Reload849; RV64I-NEXT:    .cfi_restore ra850; RV64I-NEXT:    .cfi_restore s0851; RV64I-NEXT:    addi sp, sp, 1024852; RV64I-NEXT:    .cfi_def_cfa_offset 0853; RV64I-NEXT:    ret854;855; RV64I-LP64E-LABEL: caller512:856; RV64I-LP64E:       # %bb.0:857; RV64I-LP64E-NEXT:    addi sp, sp, -1024858; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 1024859; RV64I-LP64E-NEXT:    sd ra, 1016(sp) # 8-byte Folded Spill860; RV64I-LP64E-NEXT:    sd s0, 1008(sp) # 8-byte Folded Spill861; RV64I-LP64E-NEXT:    .cfi_offset ra, -8862; RV64I-LP64E-NEXT:    .cfi_offset s0, -16863; RV64I-LP64E-NEXT:    addi s0, sp, 1024864; RV64I-LP64E-NEXT:    .cfi_def_cfa s0, 0865; RV64I-LP64E-NEXT:    andi sp, sp, -512866; RV64I-LP64E-NEXT:    addi a0, sp, 512867; RV64I-LP64E-NEXT:    call callee868; RV64I-LP64E-NEXT:    addi sp, s0, -1024869; RV64I-LP64E-NEXT:    .cfi_def_cfa sp, 1024870; RV64I-LP64E-NEXT:    ld ra, 1016(sp) # 8-byte Folded Reload871; RV64I-LP64E-NEXT:    ld s0, 1008(sp) # 8-byte Folded Reload872; RV64I-LP64E-NEXT:    .cfi_restore ra873; RV64I-LP64E-NEXT:    .cfi_restore s0874; RV64I-LP64E-NEXT:    addi sp, sp, 1024875; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0876; RV64I-LP64E-NEXT:    ret877  %1 = alloca i8, align 512878  call void @callee(ptr %1)879  ret void880}881 882define void @caller_no_realign512() "no-realign-stack" {883; RV32I-LABEL: caller_no_realign512:884; RV32I:       # %bb.0:885; RV32I-NEXT:    addi sp, sp, -16886; RV32I-NEXT:    .cfi_def_cfa_offset 16887; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill888; RV32I-NEXT:    .cfi_offset ra, -4889; RV32I-NEXT:    mv a0, sp890; RV32I-NEXT:    call callee891; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload892; RV32I-NEXT:    .cfi_restore ra893; RV32I-NEXT:    addi sp, sp, 16894; RV32I-NEXT:    .cfi_def_cfa_offset 0895; RV32I-NEXT:    ret896;897; RV32I-ILP32E-LABEL: caller_no_realign512:898; RV32I-ILP32E:       # %bb.0:899; RV32I-ILP32E-NEXT:    addi sp, sp, -8900; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 8901; RV32I-ILP32E-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill902; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4903; RV32I-ILP32E-NEXT:    mv a0, sp904; RV32I-ILP32E-NEXT:    call callee905; RV32I-ILP32E-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload906; RV32I-ILP32E-NEXT:    .cfi_restore ra907; RV32I-ILP32E-NEXT:    addi sp, sp, 8908; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0909; RV32I-ILP32E-NEXT:    ret910;911; RV64I-LABEL: caller_no_realign512:912; RV64I:       # %bb.0:913; RV64I-NEXT:    addi sp, sp, -16914; RV64I-NEXT:    .cfi_def_cfa_offset 16915; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill916; RV64I-NEXT:    .cfi_offset ra, -8917; RV64I-NEXT:    mv a0, sp918; RV64I-NEXT:    call callee919; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload920; RV64I-NEXT:    .cfi_restore ra921; RV64I-NEXT:    addi sp, sp, 16922; RV64I-NEXT:    .cfi_def_cfa_offset 0923; RV64I-NEXT:    ret924;925; RV64I-LP64E-LABEL: caller_no_realign512:926; RV64I-LP64E:       # %bb.0:927; RV64I-LP64E-NEXT:    addi sp, sp, -16928; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 16929; RV64I-LP64E-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill930; RV64I-LP64E-NEXT:    .cfi_offset ra, -8931; RV64I-LP64E-NEXT:    mv a0, sp932; RV64I-LP64E-NEXT:    call callee933; RV64I-LP64E-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload934; RV64I-LP64E-NEXT:    .cfi_restore ra935; RV64I-LP64E-NEXT:    addi sp, sp, 16936; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 0937; RV64I-LP64E-NEXT:    ret938  %1 = alloca i8, align 512939  call void @callee(ptr %1)940  ret void941}942 943define void @caller1024() {944; RV32I-LABEL: caller1024:945; RV32I:       # %bb.0:946; RV32I-NEXT:    addi sp, sp, -2032947; RV32I-NEXT:    .cfi_def_cfa_offset 2032948; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill949; RV32I-NEXT:    sw s0, 2024(sp) # 4-byte Folded Spill950; RV32I-NEXT:    .cfi_offset ra, -4951; RV32I-NEXT:    .cfi_offset s0, -8952; RV32I-NEXT:    addi s0, sp, 2032953; RV32I-NEXT:    .cfi_def_cfa s0, 0954; RV32I-NEXT:    addi sp, sp, -16955; RV32I-NEXT:    andi sp, sp, -1024956; RV32I-NEXT:    addi a0, sp, 1024957; RV32I-NEXT:    call callee958; RV32I-NEXT:    addi sp, s0, -2032959; RV32I-NEXT:    .cfi_def_cfa sp, 2032960; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload961; RV32I-NEXT:    lw s0, 2024(sp) # 4-byte Folded Reload962; RV32I-NEXT:    .cfi_restore ra963; RV32I-NEXT:    .cfi_restore s0964; RV32I-NEXT:    addi sp, sp, 2032965; RV32I-NEXT:    .cfi_def_cfa_offset 0966; RV32I-NEXT:    ret967;968; RV32I-ILP32E-LABEL: caller1024:969; RV32I-ILP32E:       # %bb.0:970; RV32I-ILP32E-NEXT:    addi sp, sp, -2044971; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 2044972; RV32I-ILP32E-NEXT:    sw ra, 2040(sp) # 4-byte Folded Spill973; RV32I-ILP32E-NEXT:    sw s0, 2036(sp) # 4-byte Folded Spill974; RV32I-ILP32E-NEXT:    .cfi_offset ra, -4975; RV32I-ILP32E-NEXT:    .cfi_offset s0, -8976; RV32I-ILP32E-NEXT:    addi s0, sp, 2044977; RV32I-ILP32E-NEXT:    .cfi_def_cfa s0, 0978; RV32I-ILP32E-NEXT:    addi sp, sp, -4979; RV32I-ILP32E-NEXT:    andi sp, sp, -1024980; RV32I-ILP32E-NEXT:    addi a0, sp, 1024981; RV32I-ILP32E-NEXT:    call callee982; RV32I-ILP32E-NEXT:    addi sp, s0, -2044983; RV32I-ILP32E-NEXT:    .cfi_def_cfa sp, 2044984; RV32I-ILP32E-NEXT:    lw ra, 2040(sp) # 4-byte Folded Reload985; RV32I-ILP32E-NEXT:    lw s0, 2036(sp) # 4-byte Folded Reload986; RV32I-ILP32E-NEXT:    .cfi_restore ra987; RV32I-ILP32E-NEXT:    .cfi_restore s0988; RV32I-ILP32E-NEXT:    addi sp, sp, 2044989; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 0990; RV32I-ILP32E-NEXT:    ret991;992; RV64I-LABEL: caller1024:993; RV64I:       # %bb.0:994; RV64I-NEXT:    addi sp, sp, -2032995; RV64I-NEXT:    .cfi_def_cfa_offset 2032996; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill997; RV64I-NEXT:    sd s0, 2016(sp) # 8-byte Folded Spill998; RV64I-NEXT:    .cfi_offset ra, -8999; RV64I-NEXT:    .cfi_offset s0, -161000; RV64I-NEXT:    addi s0, sp, 20321001; RV64I-NEXT:    .cfi_def_cfa s0, 01002; RV64I-NEXT:    addi sp, sp, -161003; RV64I-NEXT:    andi sp, sp, -10241004; RV64I-NEXT:    addi a0, sp, 10241005; RV64I-NEXT:    call callee1006; RV64I-NEXT:    addi sp, s0, -20321007; RV64I-NEXT:    .cfi_def_cfa sp, 20321008; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload1009; RV64I-NEXT:    ld s0, 2016(sp) # 8-byte Folded Reload1010; RV64I-NEXT:    .cfi_restore ra1011; RV64I-NEXT:    .cfi_restore s01012; RV64I-NEXT:    addi sp, sp, 20321013; RV64I-NEXT:    .cfi_def_cfa_offset 01014; RV64I-NEXT:    ret1015;1016; RV64I-LP64E-LABEL: caller1024:1017; RV64I-LP64E:       # %bb.0:1018; RV64I-LP64E-NEXT:    addi sp, sp, -20401019; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 20401020; RV64I-LP64E-NEXT:    sd ra, 2032(sp) # 8-byte Folded Spill1021; RV64I-LP64E-NEXT:    sd s0, 2024(sp) # 8-byte Folded Spill1022; RV64I-LP64E-NEXT:    .cfi_offset ra, -81023; RV64I-LP64E-NEXT:    .cfi_offset s0, -161024; RV64I-LP64E-NEXT:    addi s0, sp, 20401025; RV64I-LP64E-NEXT:    .cfi_def_cfa s0, 01026; RV64I-LP64E-NEXT:    addi sp, sp, -81027; RV64I-LP64E-NEXT:    andi sp, sp, -10241028; RV64I-LP64E-NEXT:    addi a0, sp, 10241029; RV64I-LP64E-NEXT:    call callee1030; RV64I-LP64E-NEXT:    addi sp, s0, -20401031; RV64I-LP64E-NEXT:    .cfi_def_cfa sp, 20401032; RV64I-LP64E-NEXT:    ld ra, 2032(sp) # 8-byte Folded Reload1033; RV64I-LP64E-NEXT:    ld s0, 2024(sp) # 8-byte Folded Reload1034; RV64I-LP64E-NEXT:    .cfi_restore ra1035; RV64I-LP64E-NEXT:    .cfi_restore s01036; RV64I-LP64E-NEXT:    addi sp, sp, 20401037; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 01038; RV64I-LP64E-NEXT:    ret1039  %1 = alloca i8, align 10241040  call void @callee(ptr %1)1041  ret void1042}1043 1044define void @caller_no_realign1024() "no-realign-stack" {1045; RV32I-LABEL: caller_no_realign1024:1046; RV32I:       # %bb.0:1047; RV32I-NEXT:    addi sp, sp, -161048; RV32I-NEXT:    .cfi_def_cfa_offset 161049; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1050; RV32I-NEXT:    .cfi_offset ra, -41051; RV32I-NEXT:    mv a0, sp1052; RV32I-NEXT:    call callee1053; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1054; RV32I-NEXT:    .cfi_restore ra1055; RV32I-NEXT:    addi sp, sp, 161056; RV32I-NEXT:    .cfi_def_cfa_offset 01057; RV32I-NEXT:    ret1058;1059; RV32I-ILP32E-LABEL: caller_no_realign1024:1060; RV32I-ILP32E:       # %bb.0:1061; RV32I-ILP32E-NEXT:    addi sp, sp, -81062; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 81063; RV32I-ILP32E-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill1064; RV32I-ILP32E-NEXT:    .cfi_offset ra, -41065; RV32I-ILP32E-NEXT:    mv a0, sp1066; RV32I-ILP32E-NEXT:    call callee1067; RV32I-ILP32E-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload1068; RV32I-ILP32E-NEXT:    .cfi_restore ra1069; RV32I-ILP32E-NEXT:    addi sp, sp, 81070; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 01071; RV32I-ILP32E-NEXT:    ret1072;1073; RV64I-LABEL: caller_no_realign1024:1074; RV64I:       # %bb.0:1075; RV64I-NEXT:    addi sp, sp, -161076; RV64I-NEXT:    .cfi_def_cfa_offset 161077; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1078; RV64I-NEXT:    .cfi_offset ra, -81079; RV64I-NEXT:    mv a0, sp1080; RV64I-NEXT:    call callee1081; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1082; RV64I-NEXT:    .cfi_restore ra1083; RV64I-NEXT:    addi sp, sp, 161084; RV64I-NEXT:    .cfi_def_cfa_offset 01085; RV64I-NEXT:    ret1086;1087; RV64I-LP64E-LABEL: caller_no_realign1024:1088; RV64I-LP64E:       # %bb.0:1089; RV64I-LP64E-NEXT:    addi sp, sp, -161090; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 161091; RV64I-LP64E-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1092; RV64I-LP64E-NEXT:    .cfi_offset ra, -81093; RV64I-LP64E-NEXT:    mv a0, sp1094; RV64I-LP64E-NEXT:    call callee1095; RV64I-LP64E-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1096; RV64I-LP64E-NEXT:    .cfi_restore ra1097; RV64I-LP64E-NEXT:    addi sp, sp, 161098; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 01099; RV64I-LP64E-NEXT:    ret1100  %1 = alloca i8, align 10241101  call void @callee(ptr %1)1102  ret void1103}1104 1105define void @caller2048() {1106; RV32I-LABEL: caller2048:1107; RV32I:       # %bb.0:1108; RV32I-NEXT:    addi sp, sp, -20321109; RV32I-NEXT:    .cfi_def_cfa_offset 20321110; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill1111; RV32I-NEXT:    sw s0, 2024(sp) # 4-byte Folded Spill1112; RV32I-NEXT:    .cfi_offset ra, -41113; RV32I-NEXT:    .cfi_offset s0, -81114; RV32I-NEXT:    addi s0, sp, 20321115; RV32I-NEXT:    .cfi_def_cfa s0, 01116; RV32I-NEXT:    addi sp, sp, -20481117; RV32I-NEXT:    addi sp, sp, -161118; RV32I-NEXT:    andi sp, sp, -20481119; RV32I-NEXT:    addi a0, sp, 20471120; RV32I-NEXT:    addi a0, a0, 11121; RV32I-NEXT:    call callee1122; RV32I-NEXT:    addi sp, s0, -20321123; RV32I-NEXT:    .cfi_def_cfa sp, 20321124; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload1125; RV32I-NEXT:    lw s0, 2024(sp) # 4-byte Folded Reload1126; RV32I-NEXT:    .cfi_restore ra1127; RV32I-NEXT:    .cfi_restore s01128; RV32I-NEXT:    addi sp, sp, 20321129; RV32I-NEXT:    .cfi_def_cfa_offset 01130; RV32I-NEXT:    ret1131;1132; RV32I-ILP32E-LABEL: caller2048:1133; RV32I-ILP32E:       # %bb.0:1134; RV32I-ILP32E-NEXT:    addi sp, sp, -20441135; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 20441136; RV32I-ILP32E-NEXT:    sw ra, 2040(sp) # 4-byte Folded Spill1137; RV32I-ILP32E-NEXT:    sw s0, 2036(sp) # 4-byte Folded Spill1138; RV32I-ILP32E-NEXT:    .cfi_offset ra, -41139; RV32I-ILP32E-NEXT:    .cfi_offset s0, -81140; RV32I-ILP32E-NEXT:    addi s0, sp, 20441141; RV32I-ILP32E-NEXT:    .cfi_def_cfa s0, 01142; RV32I-ILP32E-NEXT:    addi sp, sp, -20481143; RV32I-ILP32E-NEXT:    addi sp, sp, -41144; RV32I-ILP32E-NEXT:    andi sp, sp, -20481145; RV32I-ILP32E-NEXT:    addi a0, sp, 20471146; RV32I-ILP32E-NEXT:    addi a0, a0, 11147; RV32I-ILP32E-NEXT:    call callee1148; RV32I-ILP32E-NEXT:    addi sp, s0, -20441149; RV32I-ILP32E-NEXT:    .cfi_def_cfa sp, 20441150; RV32I-ILP32E-NEXT:    lw ra, 2040(sp) # 4-byte Folded Reload1151; RV32I-ILP32E-NEXT:    lw s0, 2036(sp) # 4-byte Folded Reload1152; RV32I-ILP32E-NEXT:    .cfi_restore ra1153; RV32I-ILP32E-NEXT:    .cfi_restore s01154; RV32I-ILP32E-NEXT:    addi sp, sp, 20441155; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 01156; RV32I-ILP32E-NEXT:    ret1157;1158; RV64I-LABEL: caller2048:1159; RV64I:       # %bb.0:1160; RV64I-NEXT:    addi sp, sp, -20321161; RV64I-NEXT:    .cfi_def_cfa_offset 20321162; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill1163; RV64I-NEXT:    sd s0, 2016(sp) # 8-byte Folded Spill1164; RV64I-NEXT:    .cfi_offset ra, -81165; RV64I-NEXT:    .cfi_offset s0, -161166; RV64I-NEXT:    addi s0, sp, 20321167; RV64I-NEXT:    .cfi_def_cfa s0, 01168; RV64I-NEXT:    addi sp, sp, -20481169; RV64I-NEXT:    addi sp, sp, -161170; RV64I-NEXT:    andi sp, sp, -20481171; RV64I-NEXT:    addi a0, sp, 20471172; RV64I-NEXT:    addi a0, a0, 11173; RV64I-NEXT:    call callee1174; RV64I-NEXT:    addi sp, s0, -20321175; RV64I-NEXT:    .cfi_def_cfa sp, 20321176; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload1177; RV64I-NEXT:    ld s0, 2016(sp) # 8-byte Folded Reload1178; RV64I-NEXT:    .cfi_restore ra1179; RV64I-NEXT:    .cfi_restore s01180; RV64I-NEXT:    addi sp, sp, 20321181; RV64I-NEXT:    .cfi_def_cfa_offset 01182; RV64I-NEXT:    ret1183;1184; RV64I-LP64E-LABEL: caller2048:1185; RV64I-LP64E:       # %bb.0:1186; RV64I-LP64E-NEXT:    addi sp, sp, -20401187; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 20401188; RV64I-LP64E-NEXT:    sd ra, 2032(sp) # 8-byte Folded Spill1189; RV64I-LP64E-NEXT:    sd s0, 2024(sp) # 8-byte Folded Spill1190; RV64I-LP64E-NEXT:    .cfi_offset ra, -81191; RV64I-LP64E-NEXT:    .cfi_offset s0, -161192; RV64I-LP64E-NEXT:    addi s0, sp, 20401193; RV64I-LP64E-NEXT:    .cfi_def_cfa s0, 01194; RV64I-LP64E-NEXT:    addi sp, sp, -20481195; RV64I-LP64E-NEXT:    addi sp, sp, -81196; RV64I-LP64E-NEXT:    andi sp, sp, -20481197; RV64I-LP64E-NEXT:    addi a0, sp, 20471198; RV64I-LP64E-NEXT:    addi a0, a0, 11199; RV64I-LP64E-NEXT:    call callee1200; RV64I-LP64E-NEXT:    addi sp, s0, -20401201; RV64I-LP64E-NEXT:    .cfi_def_cfa sp, 20401202; RV64I-LP64E-NEXT:    ld ra, 2032(sp) # 8-byte Folded Reload1203; RV64I-LP64E-NEXT:    ld s0, 2024(sp) # 8-byte Folded Reload1204; RV64I-LP64E-NEXT:    .cfi_restore ra1205; RV64I-LP64E-NEXT:    .cfi_restore s01206; RV64I-LP64E-NEXT:    addi sp, sp, 20401207; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 01208; RV64I-LP64E-NEXT:    ret1209  %1 = alloca i8, align 20481210  call void @callee(ptr %1)1211  ret void1212}1213 1214define void @caller_no_realign2048() "no-realign-stack" {1215; RV32I-LABEL: caller_no_realign2048:1216; RV32I:       # %bb.0:1217; RV32I-NEXT:    addi sp, sp, -161218; RV32I-NEXT:    .cfi_def_cfa_offset 161219; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1220; RV32I-NEXT:    .cfi_offset ra, -41221; RV32I-NEXT:    mv a0, sp1222; RV32I-NEXT:    call callee1223; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1224; RV32I-NEXT:    .cfi_restore ra1225; RV32I-NEXT:    addi sp, sp, 161226; RV32I-NEXT:    .cfi_def_cfa_offset 01227; RV32I-NEXT:    ret1228;1229; RV32I-ILP32E-LABEL: caller_no_realign2048:1230; RV32I-ILP32E:       # %bb.0:1231; RV32I-ILP32E-NEXT:    addi sp, sp, -81232; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 81233; RV32I-ILP32E-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill1234; RV32I-ILP32E-NEXT:    .cfi_offset ra, -41235; RV32I-ILP32E-NEXT:    mv a0, sp1236; RV32I-ILP32E-NEXT:    call callee1237; RV32I-ILP32E-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload1238; RV32I-ILP32E-NEXT:    .cfi_restore ra1239; RV32I-ILP32E-NEXT:    addi sp, sp, 81240; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 01241; RV32I-ILP32E-NEXT:    ret1242;1243; RV64I-LABEL: caller_no_realign2048:1244; RV64I:       # %bb.0:1245; RV64I-NEXT:    addi sp, sp, -161246; RV64I-NEXT:    .cfi_def_cfa_offset 161247; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1248; RV64I-NEXT:    .cfi_offset ra, -81249; RV64I-NEXT:    mv a0, sp1250; RV64I-NEXT:    call callee1251; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1252; RV64I-NEXT:    .cfi_restore ra1253; RV64I-NEXT:    addi sp, sp, 161254; RV64I-NEXT:    .cfi_def_cfa_offset 01255; RV64I-NEXT:    ret1256;1257; RV64I-LP64E-LABEL: caller_no_realign2048:1258; RV64I-LP64E:       # %bb.0:1259; RV64I-LP64E-NEXT:    addi sp, sp, -161260; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 161261; RV64I-LP64E-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1262; RV64I-LP64E-NEXT:    .cfi_offset ra, -81263; RV64I-LP64E-NEXT:    mv a0, sp1264; RV64I-LP64E-NEXT:    call callee1265; RV64I-LP64E-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1266; RV64I-LP64E-NEXT:    .cfi_restore ra1267; RV64I-LP64E-NEXT:    addi sp, sp, 161268; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 01269; RV64I-LP64E-NEXT:    ret1270  %1 = alloca i8, align 20481271  call void @callee(ptr %1)1272  ret void1273}1274 1275define void @caller4096() {1276; RV32I-LABEL: caller4096:1277; RV32I:       # %bb.0:1278; RV32I-NEXT:    addi sp, sp, -20321279; RV32I-NEXT:    .cfi_def_cfa_offset 20321280; RV32I-NEXT:    sw ra, 2028(sp) # 4-byte Folded Spill1281; RV32I-NEXT:    sw s0, 2024(sp) # 4-byte Folded Spill1282; RV32I-NEXT:    .cfi_offset ra, -41283; RV32I-NEXT:    .cfi_offset s0, -81284; RV32I-NEXT:    addi s0, sp, 20321285; RV32I-NEXT:    .cfi_def_cfa s0, 01286; RV32I-NEXT:    lui a0, 21287; RV32I-NEXT:    addi a0, a0, -20321288; RV32I-NEXT:    sub sp, sp, a01289; RV32I-NEXT:    srli a0, sp, 121290; RV32I-NEXT:    slli sp, a0, 121291; RV32I-NEXT:    lui a0, 11292; RV32I-NEXT:    add a0, sp, a01293; RV32I-NEXT:    call callee1294; RV32I-NEXT:    addi sp, s0, -20321295; RV32I-NEXT:    .cfi_def_cfa sp, 20321296; RV32I-NEXT:    lw ra, 2028(sp) # 4-byte Folded Reload1297; RV32I-NEXT:    lw s0, 2024(sp) # 4-byte Folded Reload1298; RV32I-NEXT:    .cfi_restore ra1299; RV32I-NEXT:    .cfi_restore s01300; RV32I-NEXT:    addi sp, sp, 20321301; RV32I-NEXT:    .cfi_def_cfa_offset 01302; RV32I-NEXT:    ret1303;1304; RV32I-ILP32E-LABEL: caller4096:1305; RV32I-ILP32E:       # %bb.0:1306; RV32I-ILP32E-NEXT:    addi sp, sp, -20441307; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 20441308; RV32I-ILP32E-NEXT:    sw ra, 2040(sp) # 4-byte Folded Spill1309; RV32I-ILP32E-NEXT:    sw s0, 2036(sp) # 4-byte Folded Spill1310; RV32I-ILP32E-NEXT:    .cfi_offset ra, -41311; RV32I-ILP32E-NEXT:    .cfi_offset s0, -81312; RV32I-ILP32E-NEXT:    addi s0, sp, 20441313; RV32I-ILP32E-NEXT:    .cfi_def_cfa s0, 01314; RV32I-ILP32E-NEXT:    lui a0, 21315; RV32I-ILP32E-NEXT:    addi a0, a0, -20441316; RV32I-ILP32E-NEXT:    sub sp, sp, a01317; RV32I-ILP32E-NEXT:    srli a0, sp, 121318; RV32I-ILP32E-NEXT:    slli sp, a0, 121319; RV32I-ILP32E-NEXT:    lui a0, 11320; RV32I-ILP32E-NEXT:    add a0, sp, a01321; RV32I-ILP32E-NEXT:    call callee1322; RV32I-ILP32E-NEXT:    addi sp, s0, -20441323; RV32I-ILP32E-NEXT:    .cfi_def_cfa sp, 20441324; RV32I-ILP32E-NEXT:    lw ra, 2040(sp) # 4-byte Folded Reload1325; RV32I-ILP32E-NEXT:    lw s0, 2036(sp) # 4-byte Folded Reload1326; RV32I-ILP32E-NEXT:    .cfi_restore ra1327; RV32I-ILP32E-NEXT:    .cfi_restore s01328; RV32I-ILP32E-NEXT:    addi sp, sp, 20441329; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 01330; RV32I-ILP32E-NEXT:    ret1331;1332; RV64I-LABEL: caller4096:1333; RV64I:       # %bb.0:1334; RV64I-NEXT:    addi sp, sp, -20321335; RV64I-NEXT:    .cfi_def_cfa_offset 20321336; RV64I-NEXT:    sd ra, 2024(sp) # 8-byte Folded Spill1337; RV64I-NEXT:    sd s0, 2016(sp) # 8-byte Folded Spill1338; RV64I-NEXT:    .cfi_offset ra, -81339; RV64I-NEXT:    .cfi_offset s0, -161340; RV64I-NEXT:    addi s0, sp, 20321341; RV64I-NEXT:    .cfi_def_cfa s0, 01342; RV64I-NEXT:    lui a0, 21343; RV64I-NEXT:    addi a0, a0, -20321344; RV64I-NEXT:    sub sp, sp, a01345; RV64I-NEXT:    srli a0, sp, 121346; RV64I-NEXT:    slli sp, a0, 121347; RV64I-NEXT:    lui a0, 11348; RV64I-NEXT:    add a0, sp, a01349; RV64I-NEXT:    call callee1350; RV64I-NEXT:    addi sp, s0, -20321351; RV64I-NEXT:    .cfi_def_cfa sp, 20321352; RV64I-NEXT:    ld ra, 2024(sp) # 8-byte Folded Reload1353; RV64I-NEXT:    ld s0, 2016(sp) # 8-byte Folded Reload1354; RV64I-NEXT:    .cfi_restore ra1355; RV64I-NEXT:    .cfi_restore s01356; RV64I-NEXT:    addi sp, sp, 20321357; RV64I-NEXT:    .cfi_def_cfa_offset 01358; RV64I-NEXT:    ret1359;1360; RV64I-LP64E-LABEL: caller4096:1361; RV64I-LP64E:       # %bb.0:1362; RV64I-LP64E-NEXT:    addi sp, sp, -20401363; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 20401364; RV64I-LP64E-NEXT:    sd ra, 2032(sp) # 8-byte Folded Spill1365; RV64I-LP64E-NEXT:    sd s0, 2024(sp) # 8-byte Folded Spill1366; RV64I-LP64E-NEXT:    .cfi_offset ra, -81367; RV64I-LP64E-NEXT:    .cfi_offset s0, -161368; RV64I-LP64E-NEXT:    addi s0, sp, 20401369; RV64I-LP64E-NEXT:    .cfi_def_cfa s0, 01370; RV64I-LP64E-NEXT:    lui a0, 21371; RV64I-LP64E-NEXT:    addi a0, a0, -20401372; RV64I-LP64E-NEXT:    sub sp, sp, a01373; RV64I-LP64E-NEXT:    srli a0, sp, 121374; RV64I-LP64E-NEXT:    slli sp, a0, 121375; RV64I-LP64E-NEXT:    lui a0, 11376; RV64I-LP64E-NEXT:    add a0, sp, a01377; RV64I-LP64E-NEXT:    call callee1378; RV64I-LP64E-NEXT:    addi sp, s0, -20401379; RV64I-LP64E-NEXT:    .cfi_def_cfa sp, 20401380; RV64I-LP64E-NEXT:    ld ra, 2032(sp) # 8-byte Folded Reload1381; RV64I-LP64E-NEXT:    ld s0, 2024(sp) # 8-byte Folded Reload1382; RV64I-LP64E-NEXT:    .cfi_restore ra1383; RV64I-LP64E-NEXT:    .cfi_restore s01384; RV64I-LP64E-NEXT:    addi sp, sp, 20401385; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 01386; RV64I-LP64E-NEXT:    ret1387  %1 = alloca i8, align 40961388  call void @callee(ptr %1)1389  ret void1390}1391 1392define void @caller_no_realign4096() "no-realign-stack" {1393; RV32I-LABEL: caller_no_realign4096:1394; RV32I:       # %bb.0:1395; RV32I-NEXT:    addi sp, sp, -161396; RV32I-NEXT:    .cfi_def_cfa_offset 161397; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1398; RV32I-NEXT:    .cfi_offset ra, -41399; RV32I-NEXT:    mv a0, sp1400; RV32I-NEXT:    call callee1401; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1402; RV32I-NEXT:    .cfi_restore ra1403; RV32I-NEXT:    addi sp, sp, 161404; RV32I-NEXT:    .cfi_def_cfa_offset 01405; RV32I-NEXT:    ret1406;1407; RV32I-ILP32E-LABEL: caller_no_realign4096:1408; RV32I-ILP32E:       # %bb.0:1409; RV32I-ILP32E-NEXT:    addi sp, sp, -81410; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 81411; RV32I-ILP32E-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill1412; RV32I-ILP32E-NEXT:    .cfi_offset ra, -41413; RV32I-ILP32E-NEXT:    mv a0, sp1414; RV32I-ILP32E-NEXT:    call callee1415; RV32I-ILP32E-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload1416; RV32I-ILP32E-NEXT:    .cfi_restore ra1417; RV32I-ILP32E-NEXT:    addi sp, sp, 81418; RV32I-ILP32E-NEXT:    .cfi_def_cfa_offset 01419; RV32I-ILP32E-NEXT:    ret1420;1421; RV64I-LABEL: caller_no_realign4096:1422; RV64I:       # %bb.0:1423; RV64I-NEXT:    addi sp, sp, -161424; RV64I-NEXT:    .cfi_def_cfa_offset 161425; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1426; RV64I-NEXT:    .cfi_offset ra, -81427; RV64I-NEXT:    mv a0, sp1428; RV64I-NEXT:    call callee1429; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1430; RV64I-NEXT:    .cfi_restore ra1431; RV64I-NEXT:    addi sp, sp, 161432; RV64I-NEXT:    .cfi_def_cfa_offset 01433; RV64I-NEXT:    ret1434;1435; RV64I-LP64E-LABEL: caller_no_realign4096:1436; RV64I-LP64E:       # %bb.0:1437; RV64I-LP64E-NEXT:    addi sp, sp, -161438; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 161439; RV64I-LP64E-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1440; RV64I-LP64E-NEXT:    .cfi_offset ra, -81441; RV64I-LP64E-NEXT:    mv a0, sp1442; RV64I-LP64E-NEXT:    call callee1443; RV64I-LP64E-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1444; RV64I-LP64E-NEXT:    .cfi_restore ra1445; RV64I-LP64E-NEXT:    addi sp, sp, 161446; RV64I-LP64E-NEXT:    .cfi_def_cfa_offset 01447; RV64I-LP64E-NEXT:    ret1448  %1 = alloca i8, align 40961449  call void @callee(ptr %1)1450  ret void1451}1452