brintos

brintos / llvm-project-archived public Read only

0
0
Text · 21.2 KiB · 0188884 Raw
632 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 -mattr=+d --verify-machineinstrs < %s \3; RUN:   | FileCheck %s --check-prefix=LA324; RUN: llc --mtriple=loongarch64 -mattr=+d --verify-machineinstrs < %s \5; RUN:   | FileCheck %s --check-prefix=LA646 7declare void @callee(ptr)8 9define void @caller32() {10; LA32-LABEL: caller32:11; LA32:       # %bb.0:12; LA32-NEXT:    addi.w $sp, $sp, -3213; LA32-NEXT:    .cfi_def_cfa_offset 3214; LA32-NEXT:    st.w $ra, $sp, 28 # 4-byte Folded Spill15; LA32-NEXT:    st.w $fp, $sp, 24 # 4-byte Folded Spill16; LA32-NEXT:    .cfi_offset 1, -417; LA32-NEXT:    .cfi_offset 22, -818; LA32-NEXT:    addi.w $fp, $sp, 3219; LA32-NEXT:    .cfi_def_cfa 22, 020; LA32-NEXT:    bstrins.w $sp, $zero, 4, 021; LA32-NEXT:    addi.w $a0, $sp, 022; LA32-NEXT:    bl callee23; LA32-NEXT:    addi.w $sp, $fp, -3224; LA32-NEXT:    ld.w $fp, $sp, 24 # 4-byte Folded Reload25; LA32-NEXT:    ld.w $ra, $sp, 28 # 4-byte Folded Reload26; LA32-NEXT:    addi.w $sp, $sp, 3227; LA32-NEXT:    ret28;29; LA64-LABEL: caller32:30; LA64:       # %bb.0:31; LA64-NEXT:    addi.d $sp, $sp, -6432; LA64-NEXT:    .cfi_def_cfa_offset 6433; LA64-NEXT:    st.d $ra, $sp, 56 # 8-byte Folded Spill34; LA64-NEXT:    st.d $fp, $sp, 48 # 8-byte Folded Spill35; LA64-NEXT:    .cfi_offset 1, -836; LA64-NEXT:    .cfi_offset 22, -1637; LA64-NEXT:    addi.d $fp, $sp, 6438; LA64-NEXT:    .cfi_def_cfa 22, 039; LA64-NEXT:    bstrins.d $sp, $zero, 4, 040; LA64-NEXT:    addi.d $a0, $sp, 3241; LA64-NEXT:    pcaddu18i $ra, %call36(callee)42; LA64-NEXT:    jirl $ra, $ra, 043; LA64-NEXT:    addi.d $sp, $fp, -6444; LA64-NEXT:    ld.d $fp, $sp, 48 # 8-byte Folded Reload45; LA64-NEXT:    ld.d $ra, $sp, 56 # 8-byte Folded Reload46; LA64-NEXT:    addi.d $sp, $sp, 6447; LA64-NEXT:    ret48  %1 = alloca i8, align 3249  call void @callee(ptr %1)50  ret void51}52 53define void @caller_no_realign32() "no-realign-stack" {54; LA32-LABEL: caller_no_realign32:55; LA32:       # %bb.0:56; LA32-NEXT:    addi.w $sp, $sp, -1657; LA32-NEXT:    .cfi_def_cfa_offset 1658; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill59; LA32-NEXT:    .cfi_offset 1, -460; LA32-NEXT:    addi.w $a0, $sp, 061; LA32-NEXT:    bl callee62; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload63; LA32-NEXT:    addi.w $sp, $sp, 1664; LA32-NEXT:    ret65;66; LA64-LABEL: caller_no_realign32:67; LA64:       # %bb.0:68; LA64-NEXT:    addi.d $sp, $sp, -1669; LA64-NEXT:    .cfi_def_cfa_offset 1670; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill71; LA64-NEXT:    .cfi_offset 1, -872; LA64-NEXT:    addi.d $a0, $sp, 073; LA64-NEXT:    pcaddu18i $ra, %call36(callee)74; LA64-NEXT:    jirl $ra, $ra, 075; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload76; LA64-NEXT:    addi.d $sp, $sp, 1677; LA64-NEXT:    ret78  %1 = alloca i8, align 3279  call void @callee(ptr %1)80  ret void81}82 83define void @caller64() {84; LA32-LABEL: caller64:85; LA32:       # %bb.0:86; LA32-NEXT:    addi.w $sp, $sp, -6487; LA32-NEXT:    .cfi_def_cfa_offset 6488; LA32-NEXT:    st.w $ra, $sp, 60 # 4-byte Folded Spill89; LA32-NEXT:    st.w $fp, $sp, 56 # 4-byte Folded Spill90; LA32-NEXT:    .cfi_offset 1, -491; LA32-NEXT:    .cfi_offset 22, -892; LA32-NEXT:    addi.w $fp, $sp, 6493; LA32-NEXT:    .cfi_def_cfa 22, 094; LA32-NEXT:    bstrins.w $sp, $zero, 5, 095; LA32-NEXT:    addi.w $a0, $sp, 096; LA32-NEXT:    bl callee97; LA32-NEXT:    addi.w $sp, $fp, -6498; LA32-NEXT:    ld.w $fp, $sp, 56 # 4-byte Folded Reload99; LA32-NEXT:    ld.w $ra, $sp, 60 # 4-byte Folded Reload100; LA32-NEXT:    addi.w $sp, $sp, 64101; LA32-NEXT:    ret102;103; LA64-LABEL: caller64:104; LA64:       # %bb.0:105; LA64-NEXT:    addi.d $sp, $sp, -128106; LA64-NEXT:    .cfi_def_cfa_offset 128107; LA64-NEXT:    st.d $ra, $sp, 120 # 8-byte Folded Spill108; LA64-NEXT:    st.d $fp, $sp, 112 # 8-byte Folded Spill109; LA64-NEXT:    .cfi_offset 1, -8110; LA64-NEXT:    .cfi_offset 22, -16111; LA64-NEXT:    addi.d $fp, $sp, 128112; LA64-NEXT:    .cfi_def_cfa 22, 0113; LA64-NEXT:    bstrins.d $sp, $zero, 5, 0114; LA64-NEXT:    addi.d $a0, $sp, 64115; LA64-NEXT:    pcaddu18i $ra, %call36(callee)116; LA64-NEXT:    jirl $ra, $ra, 0117; LA64-NEXT:    addi.d $sp, $fp, -128118; LA64-NEXT:    ld.d $fp, $sp, 112 # 8-byte Folded Reload119; LA64-NEXT:    ld.d $ra, $sp, 120 # 8-byte Folded Reload120; LA64-NEXT:    addi.d $sp, $sp, 128121; LA64-NEXT:    ret122  %1 = alloca i8, align 64123  call void @callee(ptr %1)124  ret void125}126 127define void @caller_no_realign64() "no-realign-stack" {128; LA32-LABEL: caller_no_realign64:129; LA32:       # %bb.0:130; LA32-NEXT:    addi.w $sp, $sp, -16131; LA32-NEXT:    .cfi_def_cfa_offset 16132; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill133; LA32-NEXT:    .cfi_offset 1, -4134; LA32-NEXT:    addi.w $a0, $sp, 0135; LA32-NEXT:    bl callee136; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload137; LA32-NEXT:    addi.w $sp, $sp, 16138; LA32-NEXT:    ret139;140; LA64-LABEL: caller_no_realign64:141; LA64:       # %bb.0:142; LA64-NEXT:    addi.d $sp, $sp, -16143; LA64-NEXT:    .cfi_def_cfa_offset 16144; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill145; LA64-NEXT:    .cfi_offset 1, -8146; LA64-NEXT:    addi.d $a0, $sp, 0147; LA64-NEXT:    pcaddu18i $ra, %call36(callee)148; LA64-NEXT:    jirl $ra, $ra, 0149; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload150; LA64-NEXT:    addi.d $sp, $sp, 16151; LA64-NEXT:    ret152  %1 = alloca i8, align 64153  call void @callee(ptr %1)154  ret void155}156 157define void @caller128() {158; LA32-LABEL: caller128:159; LA32:       # %bb.0:160; LA32-NEXT:    addi.w $sp, $sp, -128161; LA32-NEXT:    .cfi_def_cfa_offset 128162; LA32-NEXT:    st.w $ra, $sp, 124 # 4-byte Folded Spill163; LA32-NEXT:    st.w $fp, $sp, 120 # 4-byte Folded Spill164; LA32-NEXT:    .cfi_offset 1, -4165; LA32-NEXT:    .cfi_offset 22, -8166; LA32-NEXT:    addi.w $fp, $sp, 128167; LA32-NEXT:    .cfi_def_cfa 22, 0168; LA32-NEXT:    bstrins.w $sp, $zero, 6, 0169; LA32-NEXT:    addi.w $a0, $sp, 0170; LA32-NEXT:    bl callee171; LA32-NEXT:    addi.w $sp, $fp, -128172; LA32-NEXT:    ld.w $fp, $sp, 120 # 4-byte Folded Reload173; LA32-NEXT:    ld.w $ra, $sp, 124 # 4-byte Folded Reload174; LA32-NEXT:    addi.w $sp, $sp, 128175; LA32-NEXT:    ret176;177; LA64-LABEL: caller128:178; LA64:       # %bb.0:179; LA64-NEXT:    addi.d $sp, $sp, -256180; LA64-NEXT:    .cfi_def_cfa_offset 256181; LA64-NEXT:    st.d $ra, $sp, 248 # 8-byte Folded Spill182; LA64-NEXT:    st.d $fp, $sp, 240 # 8-byte Folded Spill183; LA64-NEXT:    .cfi_offset 1, -8184; LA64-NEXT:    .cfi_offset 22, -16185; LA64-NEXT:    addi.d $fp, $sp, 256186; LA64-NEXT:    .cfi_def_cfa 22, 0187; LA64-NEXT:    bstrins.d $sp, $zero, 6, 0188; LA64-NEXT:    addi.d $a0, $sp, 128189; LA64-NEXT:    pcaddu18i $ra, %call36(callee)190; LA64-NEXT:    jirl $ra, $ra, 0191; LA64-NEXT:    addi.d $sp, $fp, -256192; LA64-NEXT:    ld.d $fp, $sp, 240 # 8-byte Folded Reload193; LA64-NEXT:    ld.d $ra, $sp, 248 # 8-byte Folded Reload194; LA64-NEXT:    addi.d $sp, $sp, 256195; LA64-NEXT:    ret196  %1 = alloca i8, align 128197  call void @callee(ptr %1)198  ret void199}200 201define void @caller_no_realign128() "no-realign-stack" {202; LA32-LABEL: caller_no_realign128:203; LA32:       # %bb.0:204; LA32-NEXT:    addi.w $sp, $sp, -16205; LA32-NEXT:    .cfi_def_cfa_offset 16206; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill207; LA32-NEXT:    .cfi_offset 1, -4208; LA32-NEXT:    addi.w $a0, $sp, 0209; LA32-NEXT:    bl callee210; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload211; LA32-NEXT:    addi.w $sp, $sp, 16212; LA32-NEXT:    ret213;214; LA64-LABEL: caller_no_realign128:215; LA64:       # %bb.0:216; LA64-NEXT:    addi.d $sp, $sp, -16217; LA64-NEXT:    .cfi_def_cfa_offset 16218; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill219; LA64-NEXT:    .cfi_offset 1, -8220; LA64-NEXT:    addi.d $a0, $sp, 0221; LA64-NEXT:    pcaddu18i $ra, %call36(callee)222; LA64-NEXT:    jirl $ra, $ra, 0223; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload224; LA64-NEXT:    addi.d $sp, $sp, 16225; LA64-NEXT:    ret226  %1 = alloca i8, align 128227  call void @callee(ptr %1)228  ret void229}230 231define void @caller256() {232; LA32-LABEL: caller256:233; LA32:       # %bb.0:234; LA32-NEXT:    addi.w $sp, $sp, -256235; LA32-NEXT:    .cfi_def_cfa_offset 256236; LA32-NEXT:    st.w $ra, $sp, 252 # 4-byte Folded Spill237; LA32-NEXT:    st.w $fp, $sp, 248 # 4-byte Folded Spill238; LA32-NEXT:    .cfi_offset 1, -4239; LA32-NEXT:    .cfi_offset 22, -8240; LA32-NEXT:    addi.w $fp, $sp, 256241; LA32-NEXT:    .cfi_def_cfa 22, 0242; LA32-NEXT:    bstrins.w $sp, $zero, 7, 0243; LA32-NEXT:    addi.w $a0, $sp, 0244; LA32-NEXT:    bl callee245; LA32-NEXT:    addi.w $sp, $fp, -256246; LA32-NEXT:    ld.w $fp, $sp, 248 # 4-byte Folded Reload247; LA32-NEXT:    ld.w $ra, $sp, 252 # 4-byte Folded Reload248; LA32-NEXT:    addi.w $sp, $sp, 256249; LA32-NEXT:    ret250;251; LA64-LABEL: caller256:252; LA64:       # %bb.0:253; LA64-NEXT:    addi.d $sp, $sp, -512254; LA64-NEXT:    .cfi_def_cfa_offset 512255; LA64-NEXT:    st.d $ra, $sp, 504 # 8-byte Folded Spill256; LA64-NEXT:    st.d $fp, $sp, 496 # 8-byte Folded Spill257; LA64-NEXT:    .cfi_offset 1, -8258; LA64-NEXT:    .cfi_offset 22, -16259; LA64-NEXT:    addi.d $fp, $sp, 512260; LA64-NEXT:    .cfi_def_cfa 22, 0261; LA64-NEXT:    bstrins.d $sp, $zero, 7, 0262; LA64-NEXT:    addi.d $a0, $sp, 256263; LA64-NEXT:    pcaddu18i $ra, %call36(callee)264; LA64-NEXT:    jirl $ra, $ra, 0265; LA64-NEXT:    addi.d $sp, $fp, -512266; LA64-NEXT:    ld.d $fp, $sp, 496 # 8-byte Folded Reload267; LA64-NEXT:    ld.d $ra, $sp, 504 # 8-byte Folded Reload268; LA64-NEXT:    addi.d $sp, $sp, 512269; LA64-NEXT:    ret270  %1 = alloca i8, align 256271  call void @callee(ptr %1)272  ret void273}274 275define void @caller_no_realign256() "no-realign-stack" {276; LA32-LABEL: caller_no_realign256:277; LA32:       # %bb.0:278; LA32-NEXT:    addi.w $sp, $sp, -16279; LA32-NEXT:    .cfi_def_cfa_offset 16280; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill281; LA32-NEXT:    .cfi_offset 1, -4282; LA32-NEXT:    addi.w $a0, $sp, 0283; LA32-NEXT:    bl callee284; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload285; LA32-NEXT:    addi.w $sp, $sp, 16286; LA32-NEXT:    ret287;288; LA64-LABEL: caller_no_realign256:289; LA64:       # %bb.0:290; LA64-NEXT:    addi.d $sp, $sp, -16291; LA64-NEXT:    .cfi_def_cfa_offset 16292; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill293; LA64-NEXT:    .cfi_offset 1, -8294; LA64-NEXT:    addi.d $a0, $sp, 0295; LA64-NEXT:    pcaddu18i $ra, %call36(callee)296; LA64-NEXT:    jirl $ra, $ra, 0297; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload298; LA64-NEXT:    addi.d $sp, $sp, 16299; LA64-NEXT:    ret300  %1 = alloca i8, align 256301  call void @callee(ptr %1)302  ret void303}304 305define void @caller512() {306; LA32-LABEL: caller512:307; LA32:       # %bb.0:308; LA32-NEXT:    addi.w $sp, $sp, -1024309; LA32-NEXT:    .cfi_def_cfa_offset 1024310; LA32-NEXT:    st.w $ra, $sp, 1020 # 4-byte Folded Spill311; LA32-NEXT:    st.w $fp, $sp, 1016 # 4-byte Folded Spill312; LA32-NEXT:    .cfi_offset 1, -4313; LA32-NEXT:    .cfi_offset 22, -8314; LA32-NEXT:    addi.w $fp, $sp, 1024315; LA32-NEXT:    .cfi_def_cfa 22, 0316; LA32-NEXT:    bstrins.w $sp, $zero, 8, 0317; LA32-NEXT:    addi.w $a0, $sp, 512318; LA32-NEXT:    bl callee319; LA32-NEXT:    addi.w $sp, $fp, -1024320; LA32-NEXT:    ld.w $fp, $sp, 1016 # 4-byte Folded Reload321; LA32-NEXT:    ld.w $ra, $sp, 1020 # 4-byte Folded Reload322; LA32-NEXT:    addi.w $sp, $sp, 1024323; LA32-NEXT:    ret324;325; LA64-LABEL: caller512:326; LA64:       # %bb.0:327; LA64-NEXT:    addi.d $sp, $sp, -1024328; LA64-NEXT:    .cfi_def_cfa_offset 1024329; LA64-NEXT:    st.d $ra, $sp, 1016 # 8-byte Folded Spill330; LA64-NEXT:    st.d $fp, $sp, 1008 # 8-byte Folded Spill331; LA64-NEXT:    .cfi_offset 1, -8332; LA64-NEXT:    .cfi_offset 22, -16333; LA64-NEXT:    addi.d $fp, $sp, 1024334; LA64-NEXT:    .cfi_def_cfa 22, 0335; LA64-NEXT:    bstrins.d $sp, $zero, 8, 0336; LA64-NEXT:    addi.d $a0, $sp, 512337; LA64-NEXT:    pcaddu18i $ra, %call36(callee)338; LA64-NEXT:    jirl $ra, $ra, 0339; LA64-NEXT:    addi.d $sp, $fp, -1024340; LA64-NEXT:    ld.d $fp, $sp, 1008 # 8-byte Folded Reload341; LA64-NEXT:    ld.d $ra, $sp, 1016 # 8-byte Folded Reload342; LA64-NEXT:    addi.d $sp, $sp, 1024343; LA64-NEXT:    ret344  %1 = alloca i8, align 512345  call void @callee(ptr %1)346  ret void347}348 349define void @caller_no_realign512() "no-realign-stack" {350; LA32-LABEL: caller_no_realign512:351; LA32:       # %bb.0:352; LA32-NEXT:    addi.w $sp, $sp, -16353; LA32-NEXT:    .cfi_def_cfa_offset 16354; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill355; LA32-NEXT:    .cfi_offset 1, -4356; LA32-NEXT:    addi.w $a0, $sp, 0357; LA32-NEXT:    bl callee358; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload359; LA32-NEXT:    addi.w $sp, $sp, 16360; LA32-NEXT:    ret361;362; LA64-LABEL: caller_no_realign512:363; LA64:       # %bb.0:364; LA64-NEXT:    addi.d $sp, $sp, -16365; LA64-NEXT:    .cfi_def_cfa_offset 16366; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill367; LA64-NEXT:    .cfi_offset 1, -8368; LA64-NEXT:    addi.d $a0, $sp, 0369; LA64-NEXT:    pcaddu18i $ra, %call36(callee)370; LA64-NEXT:    jirl $ra, $ra, 0371; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload372; LA64-NEXT:    addi.d $sp, $sp, 16373; LA64-NEXT:    ret374  %1 = alloca i8, align 512375  call void @callee(ptr %1)376  ret void377}378 379define void @caller1024() {380; LA32-LABEL: caller1024:381; LA32:       # %bb.0:382; LA32-NEXT:    addi.w $sp, $sp, -2032383; LA32-NEXT:    .cfi_def_cfa_offset 2032384; LA32-NEXT:    st.w $ra, $sp, 2028 # 4-byte Folded Spill385; LA32-NEXT:    st.w $fp, $sp, 2024 # 4-byte Folded Spill386; LA32-NEXT:    .cfi_offset 1, -4387; LA32-NEXT:    .cfi_offset 22, -8388; LA32-NEXT:    addi.w $fp, $sp, 2032389; LA32-NEXT:    .cfi_def_cfa 22, 0390; LA32-NEXT:    addi.w $sp, $sp, -16391; LA32-NEXT:    bstrins.w $sp, $zero, 9, 0392; LA32-NEXT:    addi.w $a0, $sp, 1024393; LA32-NEXT:    bl callee394; LA32-NEXT:    addi.w $sp, $fp, -2048395; LA32-NEXT:    addi.w $sp, $sp, 16396; LA32-NEXT:    ld.w $fp, $sp, 2024 # 4-byte Folded Reload397; LA32-NEXT:    ld.w $ra, $sp, 2028 # 4-byte Folded Reload398; LA32-NEXT:    addi.w $sp, $sp, 2032399; LA32-NEXT:    ret400;401; LA64-LABEL: caller1024:402; LA64:       # %bb.0:403; LA64-NEXT:    addi.d $sp, $sp, -2032404; LA64-NEXT:    .cfi_def_cfa_offset 2032405; LA64-NEXT:    st.d $ra, $sp, 2024 # 8-byte Folded Spill406; LA64-NEXT:    st.d $fp, $sp, 2016 # 8-byte Folded Spill407; LA64-NEXT:    .cfi_offset 1, -8408; LA64-NEXT:    .cfi_offset 22, -16409; LA64-NEXT:    addi.d $fp, $sp, 2032410; LA64-NEXT:    .cfi_def_cfa 22, 0411; LA64-NEXT:    addi.d $sp, $sp, -16412; LA64-NEXT:    bstrins.d $sp, $zero, 9, 0413; LA64-NEXT:    addi.d $a0, $sp, 1024414; LA64-NEXT:    pcaddu18i $ra, %call36(callee)415; LA64-NEXT:    jirl $ra, $ra, 0416; LA64-NEXT:    addi.d $sp, $fp, -2048417; LA64-NEXT:    addi.d $sp, $sp, 16418; LA64-NEXT:    ld.d $fp, $sp, 2016 # 8-byte Folded Reload419; LA64-NEXT:    ld.d $ra, $sp, 2024 # 8-byte Folded Reload420; LA64-NEXT:    addi.d $sp, $sp, 2032421; LA64-NEXT:    ret422  %1 = alloca i8, align 1024423  call void @callee(ptr %1)424  ret void425}426 427define void @caller_no_realign1024() "no-realign-stack" {428; LA32-LABEL: caller_no_realign1024:429; LA32:       # %bb.0:430; LA32-NEXT:    addi.w $sp, $sp, -16431; LA32-NEXT:    .cfi_def_cfa_offset 16432; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill433; LA32-NEXT:    .cfi_offset 1, -4434; LA32-NEXT:    addi.w $a0, $sp, 0435; LA32-NEXT:    bl callee436; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload437; LA32-NEXT:    addi.w $sp, $sp, 16438; LA32-NEXT:    ret439;440; LA64-LABEL: caller_no_realign1024:441; LA64:       # %bb.0:442; LA64-NEXT:    addi.d $sp, $sp, -16443; LA64-NEXT:    .cfi_def_cfa_offset 16444; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill445; LA64-NEXT:    .cfi_offset 1, -8446; LA64-NEXT:    addi.d $a0, $sp, 0447; LA64-NEXT:    pcaddu18i $ra, %call36(callee)448; LA64-NEXT:    jirl $ra, $ra, 0449; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload450; LA64-NEXT:    addi.d $sp, $sp, 16451; LA64-NEXT:    ret452  %1 = alloca i8, align 1024453  call void @callee(ptr %1)454  ret void455}456 457define void @caller2048() {458; LA32-LABEL: caller2048:459; LA32:       # %bb.0:460; LA32-NEXT:    addi.w $sp, $sp, -2032461; LA32-NEXT:    .cfi_def_cfa_offset 2032462; LA32-NEXT:    st.w $ra, $sp, 2028 # 4-byte Folded Spill463; LA32-NEXT:    st.w $fp, $sp, 2024 # 4-byte Folded Spill464; LA32-NEXT:    .cfi_offset 1, -4465; LA32-NEXT:    .cfi_offset 22, -8466; LA32-NEXT:    addi.w $fp, $sp, 2032467; LA32-NEXT:    .cfi_def_cfa 22, 0468; LA32-NEXT:    addi.w $sp, $sp, -2048469; LA32-NEXT:    addi.w $sp, $sp, -16470; LA32-NEXT:    bstrins.w $sp, $zero, 10, 0471; LA32-NEXT:    ori $a0, $zero, 2048472; LA32-NEXT:    add.w $a0, $sp, $a0473; LA32-NEXT:    bl callee474; LA32-NEXT:    lu12i.w $a0, 1475; LA32-NEXT:    sub.w $sp, $fp, $a0476; LA32-NEXT:    addi.w $sp, $sp, 2032477; LA32-NEXT:    addi.w $sp, $sp, 32478; LA32-NEXT:    ld.w $fp, $sp, 2024 # 4-byte Folded Reload479; LA32-NEXT:    ld.w $ra, $sp, 2028 # 4-byte Folded Reload480; LA32-NEXT:    addi.w $sp, $sp, 2032481; LA32-NEXT:    ret482;483; LA64-LABEL: caller2048:484; LA64:       # %bb.0:485; LA64-NEXT:    addi.d $sp, $sp, -2032486; LA64-NEXT:    .cfi_def_cfa_offset 2032487; LA64-NEXT:    st.d $ra, $sp, 2024 # 8-byte Folded Spill488; LA64-NEXT:    st.d $fp, $sp, 2016 # 8-byte Folded Spill489; LA64-NEXT:    .cfi_offset 1, -8490; LA64-NEXT:    .cfi_offset 22, -16491; LA64-NEXT:    addi.d $fp, $sp, 2032492; LA64-NEXT:    .cfi_def_cfa 22, 0493; LA64-NEXT:    addi.d $sp, $sp, -2048494; LA64-NEXT:    addi.d $sp, $sp, -16495; LA64-NEXT:    bstrins.d $sp, $zero, 10, 0496; LA64-NEXT:    ori $a0, $zero, 2048497; LA64-NEXT:    add.d $a0, $sp, $a0498; LA64-NEXT:    pcaddu18i $ra, %call36(callee)499; LA64-NEXT:    jirl $ra, $ra, 0500; LA64-NEXT:    lu12i.w $a0, 1501; LA64-NEXT:    sub.d $sp, $fp, $a0502; LA64-NEXT:    addi.d $sp, $sp, 2032503; LA64-NEXT:    addi.d $sp, $sp, 32504; LA64-NEXT:    ld.d $fp, $sp, 2016 # 8-byte Folded Reload505; LA64-NEXT:    ld.d $ra, $sp, 2024 # 8-byte Folded Reload506; LA64-NEXT:    addi.d $sp, $sp, 2032507; LA64-NEXT:    ret508  %1 = alloca i8, align 2048509  call void @callee(ptr %1)510  ret void511}512 513define void @caller_no_realign2048() "no-realign-stack" {514; LA32-LABEL: caller_no_realign2048:515; LA32:       # %bb.0:516; LA32-NEXT:    addi.w $sp, $sp, -16517; LA32-NEXT:    .cfi_def_cfa_offset 16518; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill519; LA32-NEXT:    .cfi_offset 1, -4520; LA32-NEXT:    addi.w $a0, $sp, 0521; LA32-NEXT:    bl callee522; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload523; LA32-NEXT:    addi.w $sp, $sp, 16524; LA32-NEXT:    ret525;526; LA64-LABEL: caller_no_realign2048:527; LA64:       # %bb.0:528; LA64-NEXT:    addi.d $sp, $sp, -16529; LA64-NEXT:    .cfi_def_cfa_offset 16530; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill531; LA64-NEXT:    .cfi_offset 1, -8532; LA64-NEXT:    addi.d $a0, $sp, 0533; LA64-NEXT:    pcaddu18i $ra, %call36(callee)534; LA64-NEXT:    jirl $ra, $ra, 0535; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload536; LA64-NEXT:    addi.d $sp, $sp, 16537; LA64-NEXT:    ret538  %1 = alloca i8, align 2048539  call void @callee(ptr %1)540  ret void541}542 543define void @caller4096() {544; LA32-LABEL: caller4096:545; LA32:       # %bb.0:546; LA32-NEXT:    addi.w $sp, $sp, -2032547; LA32-NEXT:    .cfi_def_cfa_offset 2032548; LA32-NEXT:    st.w $ra, $sp, 2028 # 4-byte Folded Spill549; LA32-NEXT:    st.w $fp, $sp, 2024 # 4-byte Folded Spill550; LA32-NEXT:    .cfi_offset 1, -4551; LA32-NEXT:    .cfi_offset 22, -8552; LA32-NEXT:    addi.w $fp, $sp, 2032553; LA32-NEXT:    .cfi_def_cfa 22, 0554; LA32-NEXT:    lu12i.w $a0, 1555; LA32-NEXT:    ori $a0, $a0, 2064556; LA32-NEXT:    sub.w $sp, $sp, $a0557; LA32-NEXT:    bstrins.w $sp, $zero, 11, 0558; LA32-NEXT:    lu12i.w $a0, 1559; LA32-NEXT:    add.w $a0, $sp, $a0560; LA32-NEXT:    bl callee561; LA32-NEXT:    lu12i.w $a0, 2562; LA32-NEXT:    sub.w $sp, $fp, $a0563; LA32-NEXT:    lu12i.w $a0, 1564; LA32-NEXT:    ori $a0, $a0, 2064565; LA32-NEXT:    add.w $sp, $sp, $a0566; LA32-NEXT:    ld.w $fp, $sp, 2024 # 4-byte Folded Reload567; LA32-NEXT:    ld.w $ra, $sp, 2028 # 4-byte Folded Reload568; LA32-NEXT:    addi.w $sp, $sp, 2032569; LA32-NEXT:    ret570;571; LA64-LABEL: caller4096:572; LA64:       # %bb.0:573; LA64-NEXT:    addi.d $sp, $sp, -2032574; LA64-NEXT:    .cfi_def_cfa_offset 2032575; LA64-NEXT:    st.d $ra, $sp, 2024 # 8-byte Folded Spill576; LA64-NEXT:    st.d $fp, $sp, 2016 # 8-byte Folded Spill577; LA64-NEXT:    .cfi_offset 1, -8578; LA64-NEXT:    .cfi_offset 22, -16579; LA64-NEXT:    addi.d $fp, $sp, 2032580; LA64-NEXT:    .cfi_def_cfa 22, 0581; LA64-NEXT:    lu12i.w $a0, 1582; LA64-NEXT:    ori $a0, $a0, 2064583; LA64-NEXT:    sub.d $sp, $sp, $a0584; LA64-NEXT:    bstrins.d $sp, $zero, 11, 0585; LA64-NEXT:    lu12i.w $a0, 1586; LA64-NEXT:    add.d $a0, $sp, $a0587; LA64-NEXT:    pcaddu18i $ra, %call36(callee)588; LA64-NEXT:    jirl $ra, $ra, 0589; LA64-NEXT:    lu12i.w $a0, 2590; LA64-NEXT:    sub.d $sp, $fp, $a0591; LA64-NEXT:    lu12i.w $a0, 1592; LA64-NEXT:    ori $a0, $a0, 2064593; LA64-NEXT:    add.d $sp, $sp, $a0594; LA64-NEXT:    ld.d $fp, $sp, 2016 # 8-byte Folded Reload595; LA64-NEXT:    ld.d $ra, $sp, 2024 # 8-byte Folded Reload596; LA64-NEXT:    addi.d $sp, $sp, 2032597; LA64-NEXT:    ret598  %1 = alloca i8, align 4096599  call void @callee(ptr %1)600  ret void601}602 603define void @caller_no_realign4096() "no-realign-stack" {604; LA32-LABEL: caller_no_realign4096:605; LA32:       # %bb.0:606; LA32-NEXT:    addi.w $sp, $sp, -16607; LA32-NEXT:    .cfi_def_cfa_offset 16608; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill609; LA32-NEXT:    .cfi_offset 1, -4610; LA32-NEXT:    addi.w $a0, $sp, 0611; LA32-NEXT:    bl callee612; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload613; LA32-NEXT:    addi.w $sp, $sp, 16614; LA32-NEXT:    ret615;616; LA64-LABEL: caller_no_realign4096:617; LA64:       # %bb.0:618; LA64-NEXT:    addi.d $sp, $sp, -16619; LA64-NEXT:    .cfi_def_cfa_offset 16620; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill621; LA64-NEXT:    .cfi_offset 1, -8622; LA64-NEXT:    addi.d $a0, $sp, 0623; LA64-NEXT:    pcaddu18i $ra, %call36(callee)624; LA64-NEXT:    jirl $ra, $ra, 0625; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload626; LA64-NEXT:    addi.d $sp, $sp, 16627; LA64-NEXT:    ret628  %1 = alloca i8, align 4096629  call void @callee(ptr %1)630  ret void631}632