brintos

brintos / llvm-project-archived public Read only

0
0
Text · 122.4 KiB · 807fe9e Raw
2799 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -target-abi ilp32e -verify-machineinstrs < %s \3; RUN:   | FileCheck -check-prefix=ILP32E-FPELIM %s4; RUN: llc -mtriple=riscv32 -target-abi ilp32e -frame-pointer=all \5; RUN:   -verify-machineinstrs < %s \6; RUN:   | FileCheck -check-prefix=ILP32E-WITHFP %s7; RUN: llc -mtriple=riscv32 -target-abi ilp32e -mattr=+save-restore -verify-machineinstrs < %s \8; RUN:   | FileCheck -check-prefix=ILP32E-FPELIM-SAVE-RESTORE %s9; RUN: llc -mtriple=riscv32 -target-abi ilp32e -mattr=+save-restore -frame-pointer=all \10; RUN:   -verify-machineinstrs < %s \11; RUN:   | FileCheck -check-prefix=ILP32E-WITHFP-SAVE-RESTORE %s12 13; This file contains tests that will have differing output for the ilp32e ABIs.14 15define i32 @callee_float_in_regs(i32 %a, float %b) {16; ILP32E-FPELIM-LABEL: callee_float_in_regs:17; ILP32E-FPELIM:       # %bb.0:18; ILP32E-FPELIM-NEXT:    addi sp, sp, -819; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 820; ILP32E-FPELIM-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill21; ILP32E-FPELIM-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill22; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -423; ILP32E-FPELIM-NEXT:    .cfi_offset s0, -824; ILP32E-FPELIM-NEXT:    mv s0, a025; ILP32E-FPELIM-NEXT:    mv a0, a126; ILP32E-FPELIM-NEXT:    call __fixsfsi27; ILP32E-FPELIM-NEXT:    add a0, s0, a028; ILP32E-FPELIM-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload29; ILP32E-FPELIM-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload30; ILP32E-FPELIM-NEXT:    .cfi_restore ra31; ILP32E-FPELIM-NEXT:    .cfi_restore s032; ILP32E-FPELIM-NEXT:    addi sp, sp, 833; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 034; ILP32E-FPELIM-NEXT:    ret35;36; ILP32E-WITHFP-LABEL: callee_float_in_regs:37; ILP32E-WITHFP:       # %bb.0:38; ILP32E-WITHFP-NEXT:    addi sp, sp, -1239; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 1240; ILP32E-WITHFP-NEXT:    sw ra, 8(sp) # 4-byte Folded Spill41; ILP32E-WITHFP-NEXT:    sw s0, 4(sp) # 4-byte Folded Spill42; ILP32E-WITHFP-NEXT:    sw s1, 0(sp) # 4-byte Folded Spill43; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -444; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -845; ILP32E-WITHFP-NEXT:    .cfi_offset s1, -1246; ILP32E-WITHFP-NEXT:    addi s0, sp, 1247; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 048; ILP32E-WITHFP-NEXT:    mv s1, a049; ILP32E-WITHFP-NEXT:    mv a0, a150; ILP32E-WITHFP-NEXT:    call __fixsfsi51; ILP32E-WITHFP-NEXT:    add a0, s1, a052; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 1253; ILP32E-WITHFP-NEXT:    lw ra, 8(sp) # 4-byte Folded Reload54; ILP32E-WITHFP-NEXT:    lw s0, 4(sp) # 4-byte Folded Reload55; ILP32E-WITHFP-NEXT:    lw s1, 0(sp) # 4-byte Folded Reload56; ILP32E-WITHFP-NEXT:    .cfi_restore ra57; ILP32E-WITHFP-NEXT:    .cfi_restore s058; ILP32E-WITHFP-NEXT:    .cfi_restore s159; ILP32E-WITHFP-NEXT:    addi sp, sp, 1260; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 061; ILP32E-WITHFP-NEXT:    ret62;63; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_float_in_regs:64; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:65; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_166; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 867; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -468; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset s0, -869; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv s0, a070; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv a0, a171; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call __fixsfsi72; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, s0, a073; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_174;75; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_float_in_regs:76; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:77; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_278; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 1279; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -480; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -881; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s1, -1282; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 1283; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 084; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv s1, a085; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv a0, a186; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call __fixsfsi87; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, s1, a088; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 1289; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_290  %b_fptosi = fptosi float %b to i3291  %1 = add i32 %a, %b_fptosi92  ret i32 %193}94 95define i32 @caller_float_in_regs() {96; ILP32E-FPELIM-LABEL: caller_float_in_regs:97; ILP32E-FPELIM:       # %bb.0:98; ILP32E-FPELIM-NEXT:    addi sp, sp, -499; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 4100; ILP32E-FPELIM-NEXT:    sw ra, 0(sp) # 4-byte Folded Spill101; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -4102; ILP32E-FPELIM-NEXT:    li a0, 1103; ILP32E-FPELIM-NEXT:    lui a1, 262144104; ILP32E-FPELIM-NEXT:    call callee_float_in_regs105; ILP32E-FPELIM-NEXT:    lw ra, 0(sp) # 4-byte Folded Reload106; ILP32E-FPELIM-NEXT:    .cfi_restore ra107; ILP32E-FPELIM-NEXT:    addi sp, sp, 4108; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 0109; ILP32E-FPELIM-NEXT:    ret110;111; ILP32E-WITHFP-LABEL: caller_float_in_regs:112; ILP32E-WITHFP:       # %bb.0:113; ILP32E-WITHFP-NEXT:    addi sp, sp, -8114; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 8115; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill116; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill117; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4118; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8119; ILP32E-WITHFP-NEXT:    addi s0, sp, 8120; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0121; ILP32E-WITHFP-NEXT:    li a0, 1122; ILP32E-WITHFP-NEXT:    lui a1, 262144123; ILP32E-WITHFP-NEXT:    call callee_float_in_regs124; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 8125; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload126; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload127; ILP32E-WITHFP-NEXT:    .cfi_restore ra128; ILP32E-WITHFP-NEXT:    .cfi_restore s0129; ILP32E-WITHFP-NEXT:    addi sp, sp, 8130; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 0131; ILP32E-WITHFP-NEXT:    ret132;133; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_float_in_regs:134; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:135; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_0136; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 4137; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4138; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 1139; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui a1, 262144140; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_float_in_regs141; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_0142;143; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_float_in_regs:144; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:145; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1146; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8147; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4148; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8149; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 8150; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0151; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 1152; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui a1, 262144153; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_float_in_regs154; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 8155; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_1156  %1 = call i32 @callee_float_in_regs(i32 1, float 2.0)157  ret i32 %1158}159 160define i32 @callee_float_on_stack(i64 %a, i64 %b, i64 %c, i64 %d, float %e) {161; ILP32E-FPELIM-LABEL: callee_float_on_stack:162; ILP32E-FPELIM:       # %bb.0:163; ILP32E-FPELIM-NEXT:    lw a0, 8(sp)164; ILP32E-FPELIM-NEXT:    lw a1, 0(sp)165; ILP32E-FPELIM-NEXT:    add a0, a1, a0166; ILP32E-FPELIM-NEXT:    ret167;168; ILP32E-WITHFP-LABEL: callee_float_on_stack:169; ILP32E-WITHFP:       # %bb.0:170; ILP32E-WITHFP-NEXT:    addi sp, sp, -8171; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 8172; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill173; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill174; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4175; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8176; ILP32E-WITHFP-NEXT:    addi s0, sp, 8177; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0178; ILP32E-WITHFP-NEXT:    lw a0, 8(s0)179; ILP32E-WITHFP-NEXT:    lw a1, 0(s0)180; ILP32E-WITHFP-NEXT:    add a0, a1, a0181; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 8182; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload183; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload184; ILP32E-WITHFP-NEXT:    .cfi_restore ra185; ILP32E-WITHFP-NEXT:    .cfi_restore s0186; ILP32E-WITHFP-NEXT:    addi sp, sp, 8187; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 0188; ILP32E-WITHFP-NEXT:    ret189;190; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_float_on_stack:191; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:192; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a0, 8(sp)193; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a1, 0(sp)194; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a1, a0195; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret196;197; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_float_on_stack:198; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:199; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1200; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8201; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4202; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8203; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 8204; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0205; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a0, 8(s0)206; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a1, 0(s0)207; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a1, a0208; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 8209; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_1210  %1 = trunc i64 %d to i32211  %2 = bitcast float %e to i32212  %3 = add i32 %1, %2213  ret i32 %3214}215 216define i32 @caller_float_on_stack() {217; ILP32E-FPELIM-LABEL: caller_float_on_stack:218; ILP32E-FPELIM:       # %bb.0:219; ILP32E-FPELIM-NEXT:    addi sp, sp, -16220; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 16221; ILP32E-FPELIM-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill222; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -4223; ILP32E-FPELIM-NEXT:    lui a1, 264704224; ILP32E-FPELIM-NEXT:    li a3, 4225; ILP32E-FPELIM-NEXT:    li a0, 1226; ILP32E-FPELIM-NEXT:    li a2, 2227; ILP32E-FPELIM-NEXT:    li a4, 3228; ILP32E-FPELIM-NEXT:    sw a3, 0(sp)229; ILP32E-FPELIM-NEXT:    sw zero, 4(sp)230; ILP32E-FPELIM-NEXT:    sw a1, 8(sp)231; ILP32E-FPELIM-NEXT:    li a1, 0232; ILP32E-FPELIM-NEXT:    li a3, 0233; ILP32E-FPELIM-NEXT:    li a5, 0234; ILP32E-FPELIM-NEXT:    call callee_float_on_stack235; ILP32E-FPELIM-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload236; ILP32E-FPELIM-NEXT:    .cfi_restore ra237; ILP32E-FPELIM-NEXT:    addi sp, sp, 16238; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 0239; ILP32E-FPELIM-NEXT:    ret240;241; ILP32E-WITHFP-LABEL: caller_float_on_stack:242; ILP32E-WITHFP:       # %bb.0:243; ILP32E-WITHFP-NEXT:    addi sp, sp, -20244; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 20245; ILP32E-WITHFP-NEXT:    sw ra, 16(sp) # 4-byte Folded Spill246; ILP32E-WITHFP-NEXT:    sw s0, 12(sp) # 4-byte Folded Spill247; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4248; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8249; ILP32E-WITHFP-NEXT:    addi s0, sp, 20250; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0251; ILP32E-WITHFP-NEXT:    lui a1, 264704252; ILP32E-WITHFP-NEXT:    li a3, 4253; ILP32E-WITHFP-NEXT:    li a0, 1254; ILP32E-WITHFP-NEXT:    li a2, 2255; ILP32E-WITHFP-NEXT:    li a4, 3256; ILP32E-WITHFP-NEXT:    sw a3, 0(sp)257; ILP32E-WITHFP-NEXT:    sw zero, 4(sp)258; ILP32E-WITHFP-NEXT:    sw a1, 8(sp)259; ILP32E-WITHFP-NEXT:    li a1, 0260; ILP32E-WITHFP-NEXT:    li a3, 0261; ILP32E-WITHFP-NEXT:    li a5, 0262; ILP32E-WITHFP-NEXT:    call callee_float_on_stack263; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 20264; ILP32E-WITHFP-NEXT:    lw ra, 16(sp) # 4-byte Folded Reload265; ILP32E-WITHFP-NEXT:    lw s0, 12(sp) # 4-byte Folded Reload266; ILP32E-WITHFP-NEXT:    .cfi_restore ra267; ILP32E-WITHFP-NEXT:    .cfi_restore s0268; ILP32E-WITHFP-NEXT:    addi sp, sp, 20269; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 0270; ILP32E-WITHFP-NEXT:    ret271;272; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_float_on_stack:273; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:274; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_0275; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 4276; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4277; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, -12278; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 16279; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui a1, 264704280; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a3, 4281; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 1282; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a2, 2283; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a4, 3284; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a3, 0(sp)285; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 4(sp)286; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a1, 8(sp)287; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a1, 0288; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a3, 0289; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a5, 0290; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_float_on_stack291; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, 12292; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 4293; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_0294;295; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_float_on_stack:296; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:297; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1298; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8299; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4300; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8301; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, -12302; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 20303; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 20304; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0305; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui a1, 264704306; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a3, 4307; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 1308; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a2, 2309; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a4, 3310; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a3, 0(sp)311; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 4(sp)312; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a1, 8(sp)313; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a1, 0314; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a3, 0315; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a5, 0316; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_float_on_stack317; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 20318; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, 12319; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8320; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_1321  %1 = call i32 @callee_float_on_stack(i64 1, i64 2, i64 3, i64 4, float 5.0)322  ret i32 %1323}324 325define float @callee_tiny_scalar_ret() {326; ILP32E-FPELIM-LABEL: callee_tiny_scalar_ret:327; ILP32E-FPELIM:       # %bb.0:328; ILP32E-FPELIM-NEXT:    lui a0, 260096329; ILP32E-FPELIM-NEXT:    ret330;331; ILP32E-WITHFP-LABEL: callee_tiny_scalar_ret:332; ILP32E-WITHFP:       # %bb.0:333; ILP32E-WITHFP-NEXT:    addi sp, sp, -8334; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 8335; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill336; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill337; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4338; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8339; ILP32E-WITHFP-NEXT:    addi s0, sp, 8340; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0341; ILP32E-WITHFP-NEXT:    lui a0, 260096342; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 8343; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload344; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload345; ILP32E-WITHFP-NEXT:    .cfi_restore ra346; ILP32E-WITHFP-NEXT:    .cfi_restore s0347; ILP32E-WITHFP-NEXT:    addi sp, sp, 8348; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 0349; ILP32E-WITHFP-NEXT:    ret350;351; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_tiny_scalar_ret:352; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:353; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui a0, 260096354; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret355;356; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_tiny_scalar_ret:357; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:358; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1359; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8360; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4361; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8362; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 8363; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0364; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui a0, 260096365; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 8366; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_1367  ret float 1.0368}369 370define i32 @caller_tiny_scalar_ret() {371; ILP32E-FPELIM-LABEL: caller_tiny_scalar_ret:372; ILP32E-FPELIM:       # %bb.0:373; ILP32E-FPELIM-NEXT:    addi sp, sp, -4374; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 4375; ILP32E-FPELIM-NEXT:    sw ra, 0(sp) # 4-byte Folded Spill376; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -4377; ILP32E-FPELIM-NEXT:    call callee_tiny_scalar_ret378; ILP32E-FPELIM-NEXT:    lw ra, 0(sp) # 4-byte Folded Reload379; ILP32E-FPELIM-NEXT:    .cfi_restore ra380; ILP32E-FPELIM-NEXT:    addi sp, sp, 4381; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 0382; ILP32E-FPELIM-NEXT:    ret383;384; ILP32E-WITHFP-LABEL: caller_tiny_scalar_ret:385; ILP32E-WITHFP:       # %bb.0:386; ILP32E-WITHFP-NEXT:    addi sp, sp, -8387; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 8388; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill389; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill390; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4391; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8392; ILP32E-WITHFP-NEXT:    addi s0, sp, 8393; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0394; ILP32E-WITHFP-NEXT:    call callee_tiny_scalar_ret395; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 8396; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload397; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload398; ILP32E-WITHFP-NEXT:    .cfi_restore ra399; ILP32E-WITHFP-NEXT:    .cfi_restore s0400; ILP32E-WITHFP-NEXT:    addi sp, sp, 8401; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 0402; ILP32E-WITHFP-NEXT:    ret403;404; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_tiny_scalar_ret:405; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:406; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_0407; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 4408; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4409; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_tiny_scalar_ret410; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_0411;412; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_tiny_scalar_ret:413; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:414; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1415; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8416; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4417; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8418; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 8419; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0420; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_tiny_scalar_ret421; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 8422; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_1423  %1 = call float @callee_tiny_scalar_ret()424  %2 = bitcast float %1 to i32425  ret i32 %2426}427 428; Check that on RV32 ilp32e, double is passed in a pair of registers. Unlike429; the convention for varargs, this need not be an aligned pair.430 431define i32 @callee_double_in_regs(i32 %a, double %b) {432; ILP32E-FPELIM-LABEL: callee_double_in_regs:433; ILP32E-FPELIM:       # %bb.0:434; ILP32E-FPELIM-NEXT:    addi sp, sp, -8435; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 8436; ILP32E-FPELIM-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill437; ILP32E-FPELIM-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill438; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -4439; ILP32E-FPELIM-NEXT:    .cfi_offset s0, -8440; ILP32E-FPELIM-NEXT:    mv s0, a0441; ILP32E-FPELIM-NEXT:    mv a0, a1442; ILP32E-FPELIM-NEXT:    mv a1, a2443; ILP32E-FPELIM-NEXT:    call __fixdfsi444; ILP32E-FPELIM-NEXT:    add a0, s0, a0445; ILP32E-FPELIM-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload446; ILP32E-FPELIM-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload447; ILP32E-FPELIM-NEXT:    .cfi_restore ra448; ILP32E-FPELIM-NEXT:    .cfi_restore s0449; ILP32E-FPELIM-NEXT:    addi sp, sp, 8450; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 0451; ILP32E-FPELIM-NEXT:    ret452;453; ILP32E-WITHFP-LABEL: callee_double_in_regs:454; ILP32E-WITHFP:       # %bb.0:455; ILP32E-WITHFP-NEXT:    addi sp, sp, -12456; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 12457; ILP32E-WITHFP-NEXT:    sw ra, 8(sp) # 4-byte Folded Spill458; ILP32E-WITHFP-NEXT:    sw s0, 4(sp) # 4-byte Folded Spill459; ILP32E-WITHFP-NEXT:    sw s1, 0(sp) # 4-byte Folded Spill460; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4461; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8462; ILP32E-WITHFP-NEXT:    .cfi_offset s1, -12463; ILP32E-WITHFP-NEXT:    addi s0, sp, 12464; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0465; ILP32E-WITHFP-NEXT:    mv s1, a0466; ILP32E-WITHFP-NEXT:    mv a0, a1467; ILP32E-WITHFP-NEXT:    mv a1, a2468; ILP32E-WITHFP-NEXT:    call __fixdfsi469; ILP32E-WITHFP-NEXT:    add a0, s1, a0470; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 12471; ILP32E-WITHFP-NEXT:    lw ra, 8(sp) # 4-byte Folded Reload472; ILP32E-WITHFP-NEXT:    lw s0, 4(sp) # 4-byte Folded Reload473; ILP32E-WITHFP-NEXT:    lw s1, 0(sp) # 4-byte Folded Reload474; ILP32E-WITHFP-NEXT:    .cfi_restore ra475; ILP32E-WITHFP-NEXT:    .cfi_restore s0476; ILP32E-WITHFP-NEXT:    .cfi_restore s1477; ILP32E-WITHFP-NEXT:    addi sp, sp, 12478; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 0479; ILP32E-WITHFP-NEXT:    ret480;481; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_double_in_regs:482; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:483; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1484; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8485; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4486; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8487; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv s0, a0488; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv a0, a1489; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv a1, a2490; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call __fixdfsi491; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, s0, a0492; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_1493;494; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_double_in_regs:495; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:496; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_2497; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 12498; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4499; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8500; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s1, -12501; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 12502; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0503; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv s1, a0504; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv a0, a1505; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv a1, a2506; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call __fixdfsi507; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, s1, a0508; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 12509; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_2510  %b_fptosi = fptosi double %b to i32511  %1 = add i32 %a, %b_fptosi512  ret i32 %1513}514 515define i32 @caller_double_in_regs() {516; ILP32E-FPELIM-LABEL: caller_double_in_regs:517; ILP32E-FPELIM:       # %bb.0:518; ILP32E-FPELIM-NEXT:    addi sp, sp, -4519; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 4520; ILP32E-FPELIM-NEXT:    sw ra, 0(sp) # 4-byte Folded Spill521; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -4522; ILP32E-FPELIM-NEXT:    li a0, 1523; ILP32E-FPELIM-NEXT:    lui a2, 262144524; ILP32E-FPELIM-NEXT:    li a1, 0525; ILP32E-FPELIM-NEXT:    call callee_double_in_regs526; ILP32E-FPELIM-NEXT:    lw ra, 0(sp) # 4-byte Folded Reload527; ILP32E-FPELIM-NEXT:    .cfi_restore ra528; ILP32E-FPELIM-NEXT:    addi sp, sp, 4529; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 0530; ILP32E-FPELIM-NEXT:    ret531;532; ILP32E-WITHFP-LABEL: caller_double_in_regs:533; ILP32E-WITHFP:       # %bb.0:534; ILP32E-WITHFP-NEXT:    addi sp, sp, -8535; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 8536; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill537; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill538; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4539; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8540; ILP32E-WITHFP-NEXT:    addi s0, sp, 8541; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0542; ILP32E-WITHFP-NEXT:    li a0, 1543; ILP32E-WITHFP-NEXT:    lui a2, 262144544; ILP32E-WITHFP-NEXT:    li a1, 0545; ILP32E-WITHFP-NEXT:    call callee_double_in_regs546; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 8547; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload548; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload549; ILP32E-WITHFP-NEXT:    .cfi_restore ra550; ILP32E-WITHFP-NEXT:    .cfi_restore s0551; ILP32E-WITHFP-NEXT:    addi sp, sp, 8552; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 0553; ILP32E-WITHFP-NEXT:    ret554;555; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_double_in_regs:556; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:557; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_0558; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 4559; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4560; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 1561; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui a2, 262144562; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a1, 0563; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_double_in_regs564; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_0565;566; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_double_in_regs:567; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:568; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1569; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8570; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4571; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8572; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 8573; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0574; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 1575; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui a2, 262144576; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a1, 0577; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_double_in_regs578; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 8579; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_1580  %1 = call i32 @callee_double_in_regs(i32 1, double 2.0)581  ret i32 %1582}583 584; Check 2x*xlen values are aligned appropriately when passed on the stack585; Must keep define on a single line due to an update_llc_test_checks.py limitation586define i32 @callee_aligned_stack(i32 %a, i32 %b, fp128 %c, i32 %d, i32 %e, i64 %f, i32 %g, i32 %h, double %i, i32 %j, [2 x i32] %k) {587; The double should be 8-byte aligned on the stack, but the two-element array588; should only be 4-byte aligned589; ILP32E-FPELIM-LABEL: callee_aligned_stack:590; ILP32E-FPELIM:       # %bb.0:591; ILP32E-FPELIM-NEXT:    lw a0, 0(a2)592; ILP32E-FPELIM-NEXT:    lw a1, 12(sp)593; ILP32E-FPELIM-NEXT:    lw a2, 4(sp)594; ILP32E-FPELIM-NEXT:    lw a3, 8(sp)595; ILP32E-FPELIM-NEXT:    lw a4, 24(sp)596; ILP32E-FPELIM-NEXT:    lw a5, 20(sp)597; ILP32E-FPELIM-NEXT:    add a0, a0, a2598; ILP32E-FPELIM-NEXT:    add a1, a3, a1599; ILP32E-FPELIM-NEXT:    add a0, a0, a1600; ILP32E-FPELIM-NEXT:    add a4, a5, a4601; ILP32E-FPELIM-NEXT:    add a0, a0, a4602; ILP32E-FPELIM-NEXT:    ret603;604; ILP32E-WITHFP-LABEL: callee_aligned_stack:605; ILP32E-WITHFP:       # %bb.0:606; ILP32E-WITHFP-NEXT:    addi sp, sp, -8607; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 8608; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill609; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill610; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4611; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8612; ILP32E-WITHFP-NEXT:    addi s0, sp, 8613; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0614; ILP32E-WITHFP-NEXT:    lw a0, 0(a2)615; ILP32E-WITHFP-NEXT:    lw a1, 12(s0)616; ILP32E-WITHFP-NEXT:    lw a2, 4(s0)617; ILP32E-WITHFP-NEXT:    lw a3, 8(s0)618; ILP32E-WITHFP-NEXT:    lw a4, 24(s0)619; ILP32E-WITHFP-NEXT:    lw a5, 20(s0)620; ILP32E-WITHFP-NEXT:    add a0, a0, a2621; ILP32E-WITHFP-NEXT:    add a1, a3, a1622; ILP32E-WITHFP-NEXT:    add a0, a0, a1623; ILP32E-WITHFP-NEXT:    add a4, a5, a4624; ILP32E-WITHFP-NEXT:    add a0, a0, a4625; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 8626; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload627; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload628; ILP32E-WITHFP-NEXT:    .cfi_restore ra629; ILP32E-WITHFP-NEXT:    .cfi_restore s0630; ILP32E-WITHFP-NEXT:    addi sp, sp, 8631; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 0632; ILP32E-WITHFP-NEXT:    ret633;634; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_aligned_stack:635; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:636; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a0, 0(a2)637; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a1, 12(sp)638; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a2, 4(sp)639; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a3, 8(sp)640; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a4, 24(sp)641; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a5, 20(sp)642; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a2643; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a1, a3, a1644; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a1645; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a4, a5, a4646; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a4647; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret648;649; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_aligned_stack:650; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:651; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1652; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8653; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4654; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8655; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 8656; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0657; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a0, 0(a2)658; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a1, 12(s0)659; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a2, 4(s0)660; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a3, 8(s0)661; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a4, 24(s0)662; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a5, 20(s0)663; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a2664; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a1, a3, a1665; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a1666; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a4, a5, a4667; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a4668; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 8669; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_1670  %1 = bitcast fp128 %c to i128671  %2 = trunc i128 %1 to i32672  %3 = add i32 %2, %g673  %4 = add i32 %3, %h674  %5 = bitcast double %i to i64675  %6 = trunc i64 %5 to i32676  %7 = add i32 %4, %6677  %8 = add i32 %7, %j678  %9 = extractvalue [2 x i32] %k, 0679  %10 = add i32 %8, %9680  ret i32 %10681}682 683define void @caller_aligned_stack() {684; The double should be 8-byte aligned on the stack, but the two-element array685; should only be 4-byte aligned686; ILP32E-FPELIM-LABEL: caller_aligned_stack:687; ILP32E-FPELIM:       # %bb.0:688; ILP32E-FPELIM-NEXT:    addi sp, sp, -64689; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 64690; ILP32E-FPELIM-NEXT:    sw ra, 60(sp) # 4-byte Folded Spill691; ILP32E-FPELIM-NEXT:    sw s0, 56(sp) # 4-byte Folded Spill692; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -4693; ILP32E-FPELIM-NEXT:    .cfi_offset s0, -8694; ILP32E-FPELIM-NEXT:    addi s0, sp, 64695; ILP32E-FPELIM-NEXT:    .cfi_def_cfa s0, 0696; ILP32E-FPELIM-NEXT:    andi sp, sp, -16697; ILP32E-FPELIM-NEXT:    li a3, 18698; ILP32E-FPELIM-NEXT:    li a4, 17699; ILP32E-FPELIM-NEXT:    li a5, 16700; ILP32E-FPELIM-NEXT:    lui a6, 262236701; ILP32E-FPELIM-NEXT:    lui a7, 377487702; ILP32E-FPELIM-NEXT:    li t0, 15703; ILP32E-FPELIM-NEXT:    li t1, 14704; ILP32E-FPELIM-NEXT:    li t2, 4705; ILP32E-FPELIM-NEXT:    lui t3, 262153706; ILP32E-FPELIM-NEXT:    lui t4, 545260707; ILP32E-FPELIM-NEXT:    lui t5, 964690708; ILP32E-FPELIM-NEXT:    lui t6, 335544709; ILP32E-FPELIM-NEXT:    lui s2, 688509710; ILP32E-FPELIM-NEXT:    li a0, 1711; ILP32E-FPELIM-NEXT:    li a1, 11712; ILP32E-FPELIM-NEXT:    addi a2, sp, 32713; ILP32E-FPELIM-NEXT:    addi a6, a6, 655714; ILP32E-FPELIM-NEXT:    sw a6, 16(sp)715; ILP32E-FPELIM-NEXT:    sw a5, 20(sp)716; ILP32E-FPELIM-NEXT:    sw a4, 24(sp)717; ILP32E-FPELIM-NEXT:    sw a3, 28(sp)718; ILP32E-FPELIM-NEXT:    li a3, 12719; ILP32E-FPELIM-NEXT:    addi a4, a7, 1475720; ILP32E-FPELIM-NEXT:    sw t2, 0(sp)721; ILP32E-FPELIM-NEXT:    sw t1, 4(sp)722; ILP32E-FPELIM-NEXT:    sw t0, 8(sp)723; ILP32E-FPELIM-NEXT:    sw a4, 12(sp)724; ILP32E-FPELIM-NEXT:    li a4, 13725; ILP32E-FPELIM-NEXT:    addi a6, t3, 491726; ILP32E-FPELIM-NEXT:    addi a7, t4, -1967727; ILP32E-FPELIM-NEXT:    addi t0, t5, -328728; ILP32E-FPELIM-NEXT:    addi t1, t6, 1311729; ILP32E-FPELIM-NEXT:    addi a5, s2, -2048730; ILP32E-FPELIM-NEXT:    sw t1, 32(sp)731; ILP32E-FPELIM-NEXT:    sw t0, 36(sp)732; ILP32E-FPELIM-NEXT:    sw a7, 40(sp)733; ILP32E-FPELIM-NEXT:    sw a6, 44(sp)734; ILP32E-FPELIM-NEXT:    call callee_aligned_stack735; ILP32E-FPELIM-NEXT:    addi sp, s0, -64736; ILP32E-FPELIM-NEXT:    .cfi_def_cfa sp, 64737; ILP32E-FPELIM-NEXT:    lw ra, 60(sp) # 4-byte Folded Reload738; ILP32E-FPELIM-NEXT:    lw s0, 56(sp) # 4-byte Folded Reload739; ILP32E-FPELIM-NEXT:    .cfi_restore ra740; ILP32E-FPELIM-NEXT:    .cfi_restore s0741; ILP32E-FPELIM-NEXT:    addi sp, sp, 64742; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 0743; ILP32E-FPELIM-NEXT:    ret744;745; ILP32E-WITHFP-LABEL: caller_aligned_stack:746; ILP32E-WITHFP:       # %bb.0:747; ILP32E-WITHFP-NEXT:    addi sp, sp, -64748; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 64749; ILP32E-WITHFP-NEXT:    sw ra, 60(sp) # 4-byte Folded Spill750; ILP32E-WITHFP-NEXT:    sw s0, 56(sp) # 4-byte Folded Spill751; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4752; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8753; ILP32E-WITHFP-NEXT:    addi s0, sp, 64754; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0755; ILP32E-WITHFP-NEXT:    andi sp, sp, -16756; ILP32E-WITHFP-NEXT:    li a3, 18757; ILP32E-WITHFP-NEXT:    li a4, 17758; ILP32E-WITHFP-NEXT:    li a5, 16759; ILP32E-WITHFP-NEXT:    lui a6, 262236760; ILP32E-WITHFP-NEXT:    lui a7, 377487761; ILP32E-WITHFP-NEXT:    li t0, 15762; ILP32E-WITHFP-NEXT:    li t1, 14763; ILP32E-WITHFP-NEXT:    li t2, 4764; ILP32E-WITHFP-NEXT:    lui t3, 262153765; ILP32E-WITHFP-NEXT:    lui t4, 545260766; ILP32E-WITHFP-NEXT:    lui t5, 964690767; ILP32E-WITHFP-NEXT:    lui t6, 335544768; ILP32E-WITHFP-NEXT:    lui s2, 688509769; ILP32E-WITHFP-NEXT:    li a0, 1770; ILP32E-WITHFP-NEXT:    li a1, 11771; ILP32E-WITHFP-NEXT:    addi a2, sp, 32772; ILP32E-WITHFP-NEXT:    addi a6, a6, 655773; ILP32E-WITHFP-NEXT:    sw a6, 16(sp)774; ILP32E-WITHFP-NEXT:    sw a5, 20(sp)775; ILP32E-WITHFP-NEXT:    sw a4, 24(sp)776; ILP32E-WITHFP-NEXT:    sw a3, 28(sp)777; ILP32E-WITHFP-NEXT:    li a3, 12778; ILP32E-WITHFP-NEXT:    addi a4, a7, 1475779; ILP32E-WITHFP-NEXT:    sw t2, 0(sp)780; ILP32E-WITHFP-NEXT:    sw t1, 4(sp)781; ILP32E-WITHFP-NEXT:    sw t0, 8(sp)782; ILP32E-WITHFP-NEXT:    sw a4, 12(sp)783; ILP32E-WITHFP-NEXT:    li a4, 13784; ILP32E-WITHFP-NEXT:    addi a6, t3, 491785; ILP32E-WITHFP-NEXT:    addi a7, t4, -1967786; ILP32E-WITHFP-NEXT:    addi t0, t5, -328787; ILP32E-WITHFP-NEXT:    addi t1, t6, 1311788; ILP32E-WITHFP-NEXT:    addi a5, s2, -2048789; ILP32E-WITHFP-NEXT:    sw t1, 32(sp)790; ILP32E-WITHFP-NEXT:    sw t0, 36(sp)791; ILP32E-WITHFP-NEXT:    sw a7, 40(sp)792; ILP32E-WITHFP-NEXT:    sw a6, 44(sp)793; ILP32E-WITHFP-NEXT:    call callee_aligned_stack794; ILP32E-WITHFP-NEXT:    addi sp, s0, -64795; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 64796; ILP32E-WITHFP-NEXT:    lw ra, 60(sp) # 4-byte Folded Reload797; ILP32E-WITHFP-NEXT:    lw s0, 56(sp) # 4-byte Folded Reload798; ILP32E-WITHFP-NEXT:    .cfi_restore ra799; ILP32E-WITHFP-NEXT:    .cfi_restore s0800; ILP32E-WITHFP-NEXT:    addi sp, sp, 64801; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 0802; ILP32E-WITHFP-NEXT:    ret803;804; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_aligned_stack:805; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:806; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1807; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8808; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4809; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8810; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, -56811; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 64812; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi s0, sp, 64813; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0814; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    andi sp, sp, -16815; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a3, 18816; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a4, 17817; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a5, 16818; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui a6, 262236819; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui a7, 377487820; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li t0, 15821; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li t1, 14822; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li t2, 4823; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui t3, 262153824; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui t4, 545260825; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui t5, 964690826; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui t6, 335544827; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui s2, 688509828; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 1829; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a1, 11830; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi a2, sp, 32831; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi a6, a6, 655832; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a6, 16(sp)833; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a5, 20(sp)834; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a4, 24(sp)835; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a3, 28(sp)836; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a3, 12837; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi a4, a7, 1475838; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw t2, 0(sp)839; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw t1, 4(sp)840; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw t0, 8(sp)841; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a4, 12(sp)842; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a4, 13843; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi a6, t3, 491844; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi a7, t4, -1967845; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi t0, t5, -328846; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi t1, t6, 1311847; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi a5, s2, -2048848; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw t1, 32(sp)849; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw t0, 36(sp)850; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a7, 40(sp)851; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a6, 44(sp)852; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_aligned_stack853; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, s0, -64854; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 64855; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, 56856; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8857; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_1858;859; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_aligned_stack:860; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:861; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1862; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8863; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4864; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8865; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, -56866; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 64867; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 64868; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0869; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    andi sp, sp, -16870; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a3, 18871; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a4, 17872; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a5, 16873; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui a6, 262236874; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui a7, 377487875; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li t0, 15876; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li t1, 14877; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li t2, 4878; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui t3, 262153879; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui t4, 545260880; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui t5, 964690881; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui t6, 335544882; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui s2, 688509883; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 1884; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a1, 11885; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi a2, sp, 32886; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi a6, a6, 655887; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a6, 16(sp)888; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a5, 20(sp)889; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a4, 24(sp)890; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a3, 28(sp)891; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a3, 12892; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi a4, a7, 1475893; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw t2, 0(sp)894; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw t1, 4(sp)895; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw t0, 8(sp)896; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a4, 12(sp)897; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a4, 13898; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi a6, t3, 491899; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi a7, t4, -1967900; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi t0, t5, -328901; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi t1, t6, 1311902; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi a5, s2, -2048903; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw t1, 32(sp)904; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw t0, 36(sp)905; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a7, 40(sp)906; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a6, 44(sp)907; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_aligned_stack908; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, s0, -64909; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 64910; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, 56911; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8912; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_1913  %1 = call i32 @callee_aligned_stack(i32 1, i32 11,914    fp128 0xLEB851EB851EB851F400091EB851EB851, i32 12, i32 13,915    i64 20000000000, i32 14, i32 15, double 2.720000e+00, i32 16,916    [2 x i32] [i32 17, i32 18])917  ret void918}919 920define double @callee_small_scalar_ret() {921; ILP32E-FPELIM-LABEL: callee_small_scalar_ret:922; ILP32E-FPELIM:       # %bb.0:923; ILP32E-FPELIM-NEXT:    lui a1, 261888924; ILP32E-FPELIM-NEXT:    li a0, 0925; ILP32E-FPELIM-NEXT:    ret926;927; ILP32E-WITHFP-LABEL: callee_small_scalar_ret:928; ILP32E-WITHFP:       # %bb.0:929; ILP32E-WITHFP-NEXT:    addi sp, sp, -8930; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 8931; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill932; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill933; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4934; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8935; ILP32E-WITHFP-NEXT:    addi s0, sp, 8936; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0937; ILP32E-WITHFP-NEXT:    lui a1, 261888938; ILP32E-WITHFP-NEXT:    li a0, 0939; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 8940; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload941; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload942; ILP32E-WITHFP-NEXT:    .cfi_restore ra943; ILP32E-WITHFP-NEXT:    .cfi_restore s0944; ILP32E-WITHFP-NEXT:    addi sp, sp, 8945; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 0946; ILP32E-WITHFP-NEXT:    ret947;948; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_small_scalar_ret:949; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:950; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui a1, 261888951; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 0952; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret953;954; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_small_scalar_ret:955; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:956; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_1957; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 8958; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -4959; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -8960; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 8961; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 0962; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui a1, 261888963; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 0964; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 8965; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_1966  ret double 1.0967}968 969define i64 @caller_small_scalar_ret() {970; ILP32E-FPELIM-LABEL: caller_small_scalar_ret:971; ILP32E-FPELIM:       # %bb.0:972; ILP32E-FPELIM-NEXT:    addi sp, sp, -4973; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 4974; ILP32E-FPELIM-NEXT:    sw ra, 0(sp) # 4-byte Folded Spill975; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -4976; ILP32E-FPELIM-NEXT:    call callee_small_scalar_ret977; ILP32E-FPELIM-NEXT:    lw ra, 0(sp) # 4-byte Folded Reload978; ILP32E-FPELIM-NEXT:    .cfi_restore ra979; ILP32E-FPELIM-NEXT:    addi sp, sp, 4980; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 0981; ILP32E-FPELIM-NEXT:    ret982;983; ILP32E-WITHFP-LABEL: caller_small_scalar_ret:984; ILP32E-WITHFP:       # %bb.0:985; ILP32E-WITHFP-NEXT:    addi sp, sp, -8986; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 8987; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill988; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill989; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -4990; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -8991; ILP32E-WITHFP-NEXT:    addi s0, sp, 8992; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 0993; ILP32E-WITHFP-NEXT:    call callee_small_scalar_ret994; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 8995; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload996; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload997; ILP32E-WITHFP-NEXT:    .cfi_restore ra998; ILP32E-WITHFP-NEXT:    .cfi_restore s0999; ILP32E-WITHFP-NEXT:    addi sp, sp, 81000; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 01001; ILP32E-WITHFP-NEXT:    ret1002;1003; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_small_scalar_ret:1004; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:1005; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_01006; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 41007; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41008; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_small_scalar_ret1009; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_01010;1011; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_small_scalar_ret:1012; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:1013; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11014; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81015; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41016; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81017; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 81018; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01019; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_small_scalar_ret1020; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 81021; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_11022  %1 = call double @callee_small_scalar_ret()1023  %2 = bitcast double %1 to i641024  ret i64 %21025}1026 1027; Check that on RV32, i64 is passed in a pair of registers. Unlike1028; the convention for varargs, this need not be an aligned pair.1029 1030define i32 @callee_i64_in_regs(i32 %a, i64 %b) {1031; ILP32E-FPELIM-LABEL: callee_i64_in_regs:1032; ILP32E-FPELIM:       # %bb.0:1033; ILP32E-FPELIM-NEXT:    add a0, a0, a11034; ILP32E-FPELIM-NEXT:    ret1035;1036; ILP32E-WITHFP-LABEL: callee_i64_in_regs:1037; ILP32E-WITHFP:       # %bb.0:1038; ILP32E-WITHFP-NEXT:    addi sp, sp, -81039; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 81040; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill1041; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill1042; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -41043; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -81044; ILP32E-WITHFP-NEXT:    addi s0, sp, 81045; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 01046; ILP32E-WITHFP-NEXT:    add a0, a0, a11047; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 81048; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload1049; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload1050; ILP32E-WITHFP-NEXT:    .cfi_restore ra1051; ILP32E-WITHFP-NEXT:    .cfi_restore s01052; ILP32E-WITHFP-NEXT:    addi sp, sp, 81053; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 01054; ILP32E-WITHFP-NEXT:    ret1055;1056; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_i64_in_regs:1057; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:1058; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a11059; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret1060;1061; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_i64_in_regs:1062; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:1063; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11064; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81065; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41066; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81067; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 81068; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01069; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a11070; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 81071; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_11072  %b_trunc = trunc i64 %b to i321073  %1 = add i32 %a, %b_trunc1074  ret i32 %11075}1076 1077define i32 @caller_i64_in_regs() {1078; ILP32E-FPELIM-LABEL: caller_i64_in_regs:1079; ILP32E-FPELIM:       # %bb.0:1080; ILP32E-FPELIM-NEXT:    addi sp, sp, -41081; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 41082; ILP32E-FPELIM-NEXT:    sw ra, 0(sp) # 4-byte Folded Spill1083; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -41084; ILP32E-FPELIM-NEXT:    li a0, 11085; ILP32E-FPELIM-NEXT:    li a1, 21086; ILP32E-FPELIM-NEXT:    li a2, 01087; ILP32E-FPELIM-NEXT:    call callee_i64_in_regs1088; ILP32E-FPELIM-NEXT:    lw ra, 0(sp) # 4-byte Folded Reload1089; ILP32E-FPELIM-NEXT:    .cfi_restore ra1090; ILP32E-FPELIM-NEXT:    addi sp, sp, 41091; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 01092; ILP32E-FPELIM-NEXT:    ret1093;1094; ILP32E-WITHFP-LABEL: caller_i64_in_regs:1095; ILP32E-WITHFP:       # %bb.0:1096; ILP32E-WITHFP-NEXT:    addi sp, sp, -81097; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 81098; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill1099; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill1100; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -41101; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -81102; ILP32E-WITHFP-NEXT:    addi s0, sp, 81103; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 01104; ILP32E-WITHFP-NEXT:    li a0, 11105; ILP32E-WITHFP-NEXT:    li a1, 21106; ILP32E-WITHFP-NEXT:    li a2, 01107; ILP32E-WITHFP-NEXT:    call callee_i64_in_regs1108; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 81109; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload1110; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload1111; ILP32E-WITHFP-NEXT:    .cfi_restore ra1112; ILP32E-WITHFP-NEXT:    .cfi_restore s01113; ILP32E-WITHFP-NEXT:    addi sp, sp, 81114; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 01115; ILP32E-WITHFP-NEXT:    ret1116;1117; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_i64_in_regs:1118; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:1119; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_01120; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 41121; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41122; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 11123; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a1, 21124; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a2, 01125; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_i64_in_regs1126; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_01127;1128; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_i64_in_regs:1129; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:1130; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11131; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81132; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41133; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81134; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 81135; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01136; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 11137; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a1, 21138; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a2, 01139; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_i64_in_regs1140; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 81141; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_11142  %1 = call i32 @callee_i64_in_regs(i32 1, i64 2)1143  ret i32 %11144}1145 1146; Check that the stack is used once the GPRs are exhausted1147 1148define i32 @callee_many_scalars(i8 %a, i16 %b, i32 %c, i64 %d, i32 %e, i32 %f, i64 %g, i32 %h) {1149; ILP32E-FPELIM-LABEL: callee_many_scalars:1150; ILP32E-FPELIM:       # %bb.0:1151; ILP32E-FPELIM-NEXT:    lw a6, 12(sp)1152; ILP32E-FPELIM-NEXT:    lw a7, 0(sp)1153; ILP32E-FPELIM-NEXT:    lw t0, 4(sp)1154; ILP32E-FPELIM-NEXT:    lw t1, 8(sp)1155; ILP32E-FPELIM-NEXT:    zext.b a0, a01156; ILP32E-FPELIM-NEXT:    slli a1, a1, 161157; ILP32E-FPELIM-NEXT:    srli a1, a1, 161158; ILP32E-FPELIM-NEXT:    add a0, a0, a21159; ILP32E-FPELIM-NEXT:    add a0, a0, a11160; ILP32E-FPELIM-NEXT:    add a0, a0, a51161; ILP32E-FPELIM-NEXT:    xor a1, a4, t11162; ILP32E-FPELIM-NEXT:    xor a2, a3, t01163; ILP32E-FPELIM-NEXT:    add a0, a0, a71164; ILP32E-FPELIM-NEXT:    or a1, a2, a11165; ILP32E-FPELIM-NEXT:    seqz a1, a11166; ILP32E-FPELIM-NEXT:    add a0, a0, a61167; ILP32E-FPELIM-NEXT:    add a0, a1, a01168; ILP32E-FPELIM-NEXT:    ret1169;1170; ILP32E-WITHFP-LABEL: callee_many_scalars:1171; ILP32E-WITHFP:       # %bb.0:1172; ILP32E-WITHFP-NEXT:    addi sp, sp, -81173; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 81174; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill1175; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill1176; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -41177; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -81178; ILP32E-WITHFP-NEXT:    addi s0, sp, 81179; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 01180; ILP32E-WITHFP-NEXT:    lw a6, 12(s0)1181; ILP32E-WITHFP-NEXT:    lw a7, 0(s0)1182; ILP32E-WITHFP-NEXT:    lw t0, 4(s0)1183; ILP32E-WITHFP-NEXT:    lw t1, 8(s0)1184; ILP32E-WITHFP-NEXT:    zext.b a0, a01185; ILP32E-WITHFP-NEXT:    slli a1, a1, 161186; ILP32E-WITHFP-NEXT:    srli a1, a1, 161187; ILP32E-WITHFP-NEXT:    add a0, a0, a21188; ILP32E-WITHFP-NEXT:    add a0, a0, a11189; ILP32E-WITHFP-NEXT:    add a0, a0, a51190; ILP32E-WITHFP-NEXT:    xor a1, a4, t11191; ILP32E-WITHFP-NEXT:    xor a2, a3, t01192; ILP32E-WITHFP-NEXT:    add a0, a0, a71193; ILP32E-WITHFP-NEXT:    or a1, a2, a11194; ILP32E-WITHFP-NEXT:    seqz a1, a11195; ILP32E-WITHFP-NEXT:    add a0, a0, a61196; ILP32E-WITHFP-NEXT:    add a0, a1, a01197; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 81198; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload1199; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload1200; ILP32E-WITHFP-NEXT:    .cfi_restore ra1201; ILP32E-WITHFP-NEXT:    .cfi_restore s01202; ILP32E-WITHFP-NEXT:    addi sp, sp, 81203; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 01204; ILP32E-WITHFP-NEXT:    ret1205;1206; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_many_scalars:1207; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:1208; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a6, 12(sp)1209; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a7, 0(sp)1210; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw t0, 4(sp)1211; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw t1, 8(sp)1212; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    zext.b a0, a01213; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    slli a1, a1, 161214; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    srli a1, a1, 161215; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a21216; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a11217; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a51218; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a1, a4, t11219; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a2, a3, t01220; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a71221; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    or a1, a2, a11222; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    seqz a1, a11223; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a61224; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a1, a01225; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret1226;1227; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_many_scalars:1228; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:1229; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11230; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81231; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41232; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81233; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 81234; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01235; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a6, 12(s0)1236; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a7, 0(s0)1237; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw t0, 4(s0)1238; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw t1, 8(s0)1239; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    zext.b a0, a01240; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    slli a1, a1, 161241; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    srli a1, a1, 161242; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a21243; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a11244; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a51245; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a1, a4, t11246; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a2, a3, t01247; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a71248; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    or a1, a2, a11249; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    seqz a1, a11250; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a61251; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a1, a01252; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 81253; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_11254  %a_ext = zext i8 %a to i321255  %b_ext = zext i16 %b to i321256  %1 = add i32 %a_ext, %b_ext1257  %2 = add i32 %1, %c1258  %3 = icmp eq i64 %d, %g1259  %4 = zext i1 %3 to i321260  %5 = add i32 %4, %21261  %6 = add i32 %5, %e1262  %7 = add i32 %6, %f1263  %8 = add i32 %7, %h1264  ret i32 %81265}1266 1267define i32 @caller_many_scalars() {1268; ILP32E-FPELIM-LABEL: caller_many_scalars:1269; ILP32E-FPELIM:       # %bb.0:1270; ILP32E-FPELIM-NEXT:    addi sp, sp, -201271; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 201272; ILP32E-FPELIM-NEXT:    sw ra, 16(sp) # 4-byte Folded Spill1273; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -41274; ILP32E-FPELIM-NEXT:    li a4, 81275; ILP32E-FPELIM-NEXT:    li a6, 71276; ILP32E-FPELIM-NEXT:    li a7, 61277; ILP32E-FPELIM-NEXT:    li a0, 11278; ILP32E-FPELIM-NEXT:    li a1, 21279; ILP32E-FPELIM-NEXT:    li a2, 31280; ILP32E-FPELIM-NEXT:    li a3, 41281; ILP32E-FPELIM-NEXT:    li a5, 51282; ILP32E-FPELIM-NEXT:    sw a7, 0(sp)1283; ILP32E-FPELIM-NEXT:    sw a6, 4(sp)1284; ILP32E-FPELIM-NEXT:    sw zero, 8(sp)1285; ILP32E-FPELIM-NEXT:    sw a4, 12(sp)1286; ILP32E-FPELIM-NEXT:    li a4, 01287; ILP32E-FPELIM-NEXT:    call callee_many_scalars1288; ILP32E-FPELIM-NEXT:    lw ra, 16(sp) # 4-byte Folded Reload1289; ILP32E-FPELIM-NEXT:    .cfi_restore ra1290; ILP32E-FPELIM-NEXT:    addi sp, sp, 201291; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 01292; ILP32E-FPELIM-NEXT:    ret1293;1294; ILP32E-WITHFP-LABEL: caller_many_scalars:1295; ILP32E-WITHFP:       # %bb.0:1296; ILP32E-WITHFP-NEXT:    addi sp, sp, -241297; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 241298; ILP32E-WITHFP-NEXT:    sw ra, 20(sp) # 4-byte Folded Spill1299; ILP32E-WITHFP-NEXT:    sw s0, 16(sp) # 4-byte Folded Spill1300; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -41301; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -81302; ILP32E-WITHFP-NEXT:    addi s0, sp, 241303; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 01304; ILP32E-WITHFP-NEXT:    li a4, 81305; ILP32E-WITHFP-NEXT:    li a6, 71306; ILP32E-WITHFP-NEXT:    li a7, 61307; ILP32E-WITHFP-NEXT:    li a0, 11308; ILP32E-WITHFP-NEXT:    li a1, 21309; ILP32E-WITHFP-NEXT:    li a2, 31310; ILP32E-WITHFP-NEXT:    li a3, 41311; ILP32E-WITHFP-NEXT:    li a5, 51312; ILP32E-WITHFP-NEXT:    sw a7, 0(sp)1313; ILP32E-WITHFP-NEXT:    sw a6, 4(sp)1314; ILP32E-WITHFP-NEXT:    sw zero, 8(sp)1315; ILP32E-WITHFP-NEXT:    sw a4, 12(sp)1316; ILP32E-WITHFP-NEXT:    li a4, 01317; ILP32E-WITHFP-NEXT:    call callee_many_scalars1318; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 241319; ILP32E-WITHFP-NEXT:    lw ra, 20(sp) # 4-byte Folded Reload1320; ILP32E-WITHFP-NEXT:    lw s0, 16(sp) # 4-byte Folded Reload1321; ILP32E-WITHFP-NEXT:    .cfi_restore ra1322; ILP32E-WITHFP-NEXT:    .cfi_restore s01323; ILP32E-WITHFP-NEXT:    addi sp, sp, 241324; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 01325; ILP32E-WITHFP-NEXT:    ret1326;1327; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_many_scalars:1328; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:1329; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_01330; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 41331; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41332; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, -161333; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 201334; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a4, 81335; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a6, 71336; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a7, 61337; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 11338; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a1, 21339; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a2, 31340; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a3, 41341; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a5, 51342; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a7, 0(sp)1343; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a6, 4(sp)1344; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 8(sp)1345; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a4, 12(sp)1346; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a4, 01347; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_many_scalars1348; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, 161349; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 41350; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_01351;1352; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_many_scalars:1353; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:1354; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11355; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81356; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41357; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81358; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, -161359; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 241360; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 241361; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01362; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a4, 81363; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a6, 71364; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a7, 61365; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 11366; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a1, 21367; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a2, 31368; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a3, 41369; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a5, 51370; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a7, 0(sp)1371; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a6, 4(sp)1372; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 8(sp)1373; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a4, 12(sp)1374; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a4, 01375; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_many_scalars1376; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 241377; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, 161378; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81379; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_11380  %1 = call i32 @callee_many_scalars(i8 1, i16 2, i32 3, i64 4, i32 5, i32 6, i64 7, i32 8)1381  ret i32 %11382}1383 1384; Check that i128 and fp128 are passed indirectly1385 1386define i32 @callee_large_scalars(i128 %a, fp128 %b) {1387; ILP32E-FPELIM-LABEL: callee_large_scalars:1388; ILP32E-FPELIM:       # %bb.0:1389; ILP32E-FPELIM-NEXT:    lw a2, 0(a1)1390; ILP32E-FPELIM-NEXT:    lw a3, 4(a1)1391; ILP32E-FPELIM-NEXT:    lw a4, 8(a1)1392; ILP32E-FPELIM-NEXT:    lw a1, 12(a1)1393; ILP32E-FPELIM-NEXT:    lw a5, 12(a0)1394; ILP32E-FPELIM-NEXT:    lw a6, 4(a0)1395; ILP32E-FPELIM-NEXT:    lw a7, 8(a0)1396; ILP32E-FPELIM-NEXT:    lw a0, 0(a0)1397; ILP32E-FPELIM-NEXT:    xor a1, a5, a11398; ILP32E-FPELIM-NEXT:    xor a3, a6, a31399; ILP32E-FPELIM-NEXT:    xor a4, a7, a41400; ILP32E-FPELIM-NEXT:    xor a0, a0, a21401; ILP32E-FPELIM-NEXT:    or a1, a3, a11402; ILP32E-FPELIM-NEXT:    or a0, a0, a41403; ILP32E-FPELIM-NEXT:    or a0, a0, a11404; ILP32E-FPELIM-NEXT:    seqz a0, a01405; ILP32E-FPELIM-NEXT:    ret1406;1407; ILP32E-WITHFP-LABEL: callee_large_scalars:1408; ILP32E-WITHFP:       # %bb.0:1409; ILP32E-WITHFP-NEXT:    addi sp, sp, -81410; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 81411; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill1412; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill1413; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -41414; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -81415; ILP32E-WITHFP-NEXT:    addi s0, sp, 81416; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 01417; ILP32E-WITHFP-NEXT:    lw a2, 0(a1)1418; ILP32E-WITHFP-NEXT:    lw a3, 4(a1)1419; ILP32E-WITHFP-NEXT:    lw a4, 8(a1)1420; ILP32E-WITHFP-NEXT:    lw a1, 12(a1)1421; ILP32E-WITHFP-NEXT:    lw a5, 12(a0)1422; ILP32E-WITHFP-NEXT:    lw a6, 4(a0)1423; ILP32E-WITHFP-NEXT:    lw a7, 8(a0)1424; ILP32E-WITHFP-NEXT:    lw a0, 0(a0)1425; ILP32E-WITHFP-NEXT:    xor a1, a5, a11426; ILP32E-WITHFP-NEXT:    xor a3, a6, a31427; ILP32E-WITHFP-NEXT:    xor a4, a7, a41428; ILP32E-WITHFP-NEXT:    xor a0, a0, a21429; ILP32E-WITHFP-NEXT:    or a1, a3, a11430; ILP32E-WITHFP-NEXT:    or a0, a0, a41431; ILP32E-WITHFP-NEXT:    or a0, a0, a11432; ILP32E-WITHFP-NEXT:    seqz a0, a01433; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 81434; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload1435; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload1436; ILP32E-WITHFP-NEXT:    .cfi_restore ra1437; ILP32E-WITHFP-NEXT:    .cfi_restore s01438; ILP32E-WITHFP-NEXT:    addi sp, sp, 81439; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 01440; ILP32E-WITHFP-NEXT:    ret1441;1442; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_large_scalars:1443; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:1444; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a2, 0(a1)1445; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a3, 4(a1)1446; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a4, 8(a1)1447; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a1, 12(a1)1448; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a5, 12(a0)1449; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a6, 4(a0)1450; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a7, 8(a0)1451; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a0, 0(a0)1452; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a1, a5, a11453; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a3, a6, a31454; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a4, a7, a41455; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a0, a0, a21456; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    or a1, a3, a11457; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    or a0, a0, a41458; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    or a0, a0, a11459; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    seqz a0, a01460; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret1461;1462; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_large_scalars:1463; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:1464; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11465; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81466; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41467; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81468; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 81469; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01470; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a2, 0(a1)1471; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a3, 4(a1)1472; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a4, 8(a1)1473; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a1, 12(a1)1474; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a5, 12(a0)1475; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a6, 4(a0)1476; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a7, 8(a0)1477; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a0, 0(a0)1478; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a1, a5, a11479; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a3, a6, a31480; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a4, a7, a41481; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a0, a0, a21482; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    or a1, a3, a11483; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    or a0, a0, a41484; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    or a0, a0, a11485; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    seqz a0, a01486; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 81487; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_11488  %b_bitcast = bitcast fp128 %b to i1281489  %1 = icmp eq i128 %a, %b_bitcast1490  %2 = zext i1 %1 to i321491  ret i32 %21492}1493 1494define i32 @caller_large_scalars() {1495; ILP32E-FPELIM-LABEL: caller_large_scalars:1496; ILP32E-FPELIM:       # %bb.0:1497; ILP32E-FPELIM-NEXT:    addi sp, sp, -481498; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 481499; ILP32E-FPELIM-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1500; ILP32E-FPELIM-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill1501; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -41502; ILP32E-FPELIM-NEXT:    .cfi_offset s0, -81503; ILP32E-FPELIM-NEXT:    addi s0, sp, 481504; ILP32E-FPELIM-NEXT:    .cfi_def_cfa s0, 01505; ILP32E-FPELIM-NEXT:    andi sp, sp, -161506; ILP32E-FPELIM-NEXT:    lui a1, 5242721507; ILP32E-FPELIM-NEXT:    li a2, 11508; ILP32E-FPELIM-NEXT:    addi a0, sp, 241509; ILP32E-FPELIM-NEXT:    sw zero, 0(sp)1510; ILP32E-FPELIM-NEXT:    sw zero, 4(sp)1511; ILP32E-FPELIM-NEXT:    sw zero, 8(sp)1512; ILP32E-FPELIM-NEXT:    sw a1, 12(sp)1513; ILP32E-FPELIM-NEXT:    mv a1, sp1514; ILP32E-FPELIM-NEXT:    sw a2, 24(sp)1515; ILP32E-FPELIM-NEXT:    sw zero, 28(sp)1516; ILP32E-FPELIM-NEXT:    sw zero, 32(sp)1517; ILP32E-FPELIM-NEXT:    sw zero, 36(sp)1518; ILP32E-FPELIM-NEXT:    call callee_large_scalars1519; ILP32E-FPELIM-NEXT:    addi sp, s0, -481520; ILP32E-FPELIM-NEXT:    .cfi_def_cfa sp, 481521; ILP32E-FPELIM-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1522; ILP32E-FPELIM-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1523; ILP32E-FPELIM-NEXT:    .cfi_restore ra1524; ILP32E-FPELIM-NEXT:    .cfi_restore s01525; ILP32E-FPELIM-NEXT:    addi sp, sp, 481526; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 01527; ILP32E-FPELIM-NEXT:    ret1528;1529; ILP32E-WITHFP-LABEL: caller_large_scalars:1530; ILP32E-WITHFP:       # %bb.0:1531; ILP32E-WITHFP-NEXT:    addi sp, sp, -481532; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 481533; ILP32E-WITHFP-NEXT:    sw ra, 44(sp) # 4-byte Folded Spill1534; ILP32E-WITHFP-NEXT:    sw s0, 40(sp) # 4-byte Folded Spill1535; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -41536; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -81537; ILP32E-WITHFP-NEXT:    addi s0, sp, 481538; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 01539; ILP32E-WITHFP-NEXT:    andi sp, sp, -161540; ILP32E-WITHFP-NEXT:    lui a1, 5242721541; ILP32E-WITHFP-NEXT:    li a2, 11542; ILP32E-WITHFP-NEXT:    addi a0, sp, 241543; ILP32E-WITHFP-NEXT:    sw zero, 0(sp)1544; ILP32E-WITHFP-NEXT:    sw zero, 4(sp)1545; ILP32E-WITHFP-NEXT:    sw zero, 8(sp)1546; ILP32E-WITHFP-NEXT:    sw a1, 12(sp)1547; ILP32E-WITHFP-NEXT:    mv a1, sp1548; ILP32E-WITHFP-NEXT:    sw a2, 24(sp)1549; ILP32E-WITHFP-NEXT:    sw zero, 28(sp)1550; ILP32E-WITHFP-NEXT:    sw zero, 32(sp)1551; ILP32E-WITHFP-NEXT:    sw zero, 36(sp)1552; ILP32E-WITHFP-NEXT:    call callee_large_scalars1553; ILP32E-WITHFP-NEXT:    addi sp, s0, -481554; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 481555; ILP32E-WITHFP-NEXT:    lw ra, 44(sp) # 4-byte Folded Reload1556; ILP32E-WITHFP-NEXT:    lw s0, 40(sp) # 4-byte Folded Reload1557; ILP32E-WITHFP-NEXT:    .cfi_restore ra1558; ILP32E-WITHFP-NEXT:    .cfi_restore s01559; ILP32E-WITHFP-NEXT:    addi sp, sp, 481560; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 01561; ILP32E-WITHFP-NEXT:    ret1562;1563; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_large_scalars:1564; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:1565; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11566; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81567; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41568; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81569; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, -401570; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 481571; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi s0, sp, 481572; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01573; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    andi sp, sp, -161574; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui a1, 5242721575; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a2, 11576; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi a0, sp, 241577; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 0(sp)1578; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 4(sp)1579; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 8(sp)1580; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a1, 12(sp)1581; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv a1, sp1582; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a2, 24(sp)1583; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 28(sp)1584; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 32(sp)1585; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 36(sp)1586; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_large_scalars1587; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, s0, -481588; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 481589; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, 401590; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81591; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_11592;1593; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_large_scalars:1594; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:1595; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11596; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81597; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41598; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81599; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, -401600; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 481601; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 481602; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01603; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    andi sp, sp, -161604; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui a1, 5242721605; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a2, 11606; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi a0, sp, 241607; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 0(sp)1608; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 4(sp)1609; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 8(sp)1610; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a1, 12(sp)1611; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv a1, sp1612; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a2, 24(sp)1613; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 28(sp)1614; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 32(sp)1615; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 36(sp)1616; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_large_scalars1617; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, s0, -481618; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 481619; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, 401620; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81621; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_11622  %1 = call i32 @callee_large_scalars(i128 1, fp128 0xL00000000000000007FFF000000000000)1623  ret i32 %11624}1625 1626; Check that arguments larger than 2*xlen are handled correctly when their1627; address is passed on the stack rather than in memory1628 1629; Must keep define on a single line due to an update_llc_test_checks.py limitation1630define i32 @callee_large_scalars_exhausted_regs(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32 %g, i128 %h, i32 %i, fp128 %j) {1631; ILP32E-FPELIM-LABEL: callee_large_scalars_exhausted_regs:1632; ILP32E-FPELIM:       # %bb.0:1633; ILP32E-FPELIM-NEXT:    lw a0, 12(sp)1634; ILP32E-FPELIM-NEXT:    lw a1, 4(sp)1635; ILP32E-FPELIM-NEXT:    lw a2, 0(a0)1636; ILP32E-FPELIM-NEXT:    lw a3, 4(a0)1637; ILP32E-FPELIM-NEXT:    lw a4, 8(a0)1638; ILP32E-FPELIM-NEXT:    lw a0, 12(a0)1639; ILP32E-FPELIM-NEXT:    lw a5, 12(a1)1640; ILP32E-FPELIM-NEXT:    lw a6, 4(a1)1641; ILP32E-FPELIM-NEXT:    lw a7, 8(a1)1642; ILP32E-FPELIM-NEXT:    lw a1, 0(a1)1643; ILP32E-FPELIM-NEXT:    xor a0, a5, a01644; ILP32E-FPELIM-NEXT:    xor a3, a6, a31645; ILP32E-FPELIM-NEXT:    xor a4, a7, a41646; ILP32E-FPELIM-NEXT:    xor a1, a1, a21647; ILP32E-FPELIM-NEXT:    or a0, a3, a01648; ILP32E-FPELIM-NEXT:    or a1, a1, a41649; ILP32E-FPELIM-NEXT:    or a0, a1, a01650; ILP32E-FPELIM-NEXT:    seqz a0, a01651; ILP32E-FPELIM-NEXT:    ret1652;1653; ILP32E-WITHFP-LABEL: callee_large_scalars_exhausted_regs:1654; ILP32E-WITHFP:       # %bb.0:1655; ILP32E-WITHFP-NEXT:    addi sp, sp, -81656; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 81657; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill1658; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill1659; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -41660; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -81661; ILP32E-WITHFP-NEXT:    addi s0, sp, 81662; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 01663; ILP32E-WITHFP-NEXT:    lw a0, 12(s0)1664; ILP32E-WITHFP-NEXT:    lw a1, 4(s0)1665; ILP32E-WITHFP-NEXT:    lw a2, 0(a0)1666; ILP32E-WITHFP-NEXT:    lw a3, 4(a0)1667; ILP32E-WITHFP-NEXT:    lw a4, 8(a0)1668; ILP32E-WITHFP-NEXT:    lw a0, 12(a0)1669; ILP32E-WITHFP-NEXT:    lw a5, 12(a1)1670; ILP32E-WITHFP-NEXT:    lw a6, 4(a1)1671; ILP32E-WITHFP-NEXT:    lw a7, 8(a1)1672; ILP32E-WITHFP-NEXT:    lw a1, 0(a1)1673; ILP32E-WITHFP-NEXT:    xor a0, a5, a01674; ILP32E-WITHFP-NEXT:    xor a3, a6, a31675; ILP32E-WITHFP-NEXT:    xor a4, a7, a41676; ILP32E-WITHFP-NEXT:    xor a1, a1, a21677; ILP32E-WITHFP-NEXT:    or a0, a3, a01678; ILP32E-WITHFP-NEXT:    or a1, a1, a41679; ILP32E-WITHFP-NEXT:    or a0, a1, a01680; ILP32E-WITHFP-NEXT:    seqz a0, a01681; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 81682; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload1683; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload1684; ILP32E-WITHFP-NEXT:    .cfi_restore ra1685; ILP32E-WITHFP-NEXT:    .cfi_restore s01686; ILP32E-WITHFP-NEXT:    addi sp, sp, 81687; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 01688; ILP32E-WITHFP-NEXT:    ret1689;1690; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_large_scalars_exhausted_regs:1691; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:1692; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a0, 12(sp)1693; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a1, 4(sp)1694; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a2, 0(a0)1695; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a3, 4(a0)1696; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a4, 8(a0)1697; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a0, 12(a0)1698; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a5, 12(a1)1699; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a6, 4(a1)1700; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a7, 8(a1)1701; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a1, 0(a1)1702; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a0, a5, a01703; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a3, a6, a31704; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a4, a7, a41705; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a1, a1, a21706; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    or a0, a3, a01707; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    or a1, a1, a41708; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    or a0, a1, a01709; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    seqz a0, a01710; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret1711;1712; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_large_scalars_exhausted_regs:1713; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:1714; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11715; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81716; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41717; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81718; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 81719; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01720; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a0, 12(s0)1721; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a1, 4(s0)1722; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a2, 0(a0)1723; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a3, 4(a0)1724; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a4, 8(a0)1725; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a0, 12(a0)1726; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a5, 12(a1)1727; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a6, 4(a1)1728; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a7, 8(a1)1729; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a1, 0(a1)1730; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a0, a5, a01731; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a3, a6, a31732; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a4, a7, a41733; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a1, a1, a21734; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    or a0, a3, a01735; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    or a1, a1, a41736; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    or a0, a1, a01737; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    seqz a0, a01738; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 81739; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_11740  %j_bitcast = bitcast fp128 %j to i1281741  %1 = icmp eq i128 %h, %j_bitcast1742  %2 = zext i1 %1 to i321743  ret i32 %21744}1745 1746define i32 @caller_large_scalars_exhausted_regs() {1747; ILP32E-FPELIM-LABEL: caller_large_scalars_exhausted_regs:1748; ILP32E-FPELIM:       # %bb.0:1749; ILP32E-FPELIM-NEXT:    addi sp, sp, -641750; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 641751; ILP32E-FPELIM-NEXT:    sw ra, 60(sp) # 4-byte Folded Spill1752; ILP32E-FPELIM-NEXT:    sw s0, 56(sp) # 4-byte Folded Spill1753; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -41754; ILP32E-FPELIM-NEXT:    .cfi_offset s0, -81755; ILP32E-FPELIM-NEXT:    addi s0, sp, 641756; ILP32E-FPELIM-NEXT:    .cfi_def_cfa s0, 01757; ILP32E-FPELIM-NEXT:    andi sp, sp, -161758; ILP32E-FPELIM-NEXT:    addi a4, sp, 161759; ILP32E-FPELIM-NEXT:    li a5, 91760; ILP32E-FPELIM-NEXT:    addi a6, sp, 401761; ILP32E-FPELIM-NEXT:    li a7, 71762; ILP32E-FPELIM-NEXT:    lui t0, 5242721763; ILP32E-FPELIM-NEXT:    li t1, 81764; ILP32E-FPELIM-NEXT:    li a0, 11765; ILP32E-FPELIM-NEXT:    li a1, 21766; ILP32E-FPELIM-NEXT:    li a2, 31767; ILP32E-FPELIM-NEXT:    li a3, 41768; ILP32E-FPELIM-NEXT:    sw a7, 0(sp)1769; ILP32E-FPELIM-NEXT:    sw a6, 4(sp)1770; ILP32E-FPELIM-NEXT:    sw a5, 8(sp)1771; ILP32E-FPELIM-NEXT:    sw a4, 12(sp)1772; ILP32E-FPELIM-NEXT:    li a4, 51773; ILP32E-FPELIM-NEXT:    sw zero, 16(sp)1774; ILP32E-FPELIM-NEXT:    sw zero, 20(sp)1775; ILP32E-FPELIM-NEXT:    sw zero, 24(sp)1776; ILP32E-FPELIM-NEXT:    sw t0, 28(sp)1777; ILP32E-FPELIM-NEXT:    li a5, 61778; ILP32E-FPELIM-NEXT:    sw t1, 40(sp)1779; ILP32E-FPELIM-NEXT:    sw zero, 44(sp)1780; ILP32E-FPELIM-NEXT:    sw zero, 48(sp)1781; ILP32E-FPELIM-NEXT:    sw zero, 52(sp)1782; ILP32E-FPELIM-NEXT:    call callee_large_scalars_exhausted_regs1783; ILP32E-FPELIM-NEXT:    addi sp, s0, -641784; ILP32E-FPELIM-NEXT:    .cfi_def_cfa sp, 641785; ILP32E-FPELIM-NEXT:    lw ra, 60(sp) # 4-byte Folded Reload1786; ILP32E-FPELIM-NEXT:    lw s0, 56(sp) # 4-byte Folded Reload1787; ILP32E-FPELIM-NEXT:    .cfi_restore ra1788; ILP32E-FPELIM-NEXT:    .cfi_restore s01789; ILP32E-FPELIM-NEXT:    addi sp, sp, 641790; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 01791; ILP32E-FPELIM-NEXT:    ret1792;1793; ILP32E-WITHFP-LABEL: caller_large_scalars_exhausted_regs:1794; ILP32E-WITHFP:       # %bb.0:1795; ILP32E-WITHFP-NEXT:    addi sp, sp, -641796; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 641797; ILP32E-WITHFP-NEXT:    sw ra, 60(sp) # 4-byte Folded Spill1798; ILP32E-WITHFP-NEXT:    sw s0, 56(sp) # 4-byte Folded Spill1799; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -41800; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -81801; ILP32E-WITHFP-NEXT:    addi s0, sp, 641802; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 01803; ILP32E-WITHFP-NEXT:    andi sp, sp, -161804; ILP32E-WITHFP-NEXT:    addi a4, sp, 161805; ILP32E-WITHFP-NEXT:    li a5, 91806; ILP32E-WITHFP-NEXT:    addi a6, sp, 401807; ILP32E-WITHFP-NEXT:    li a7, 71808; ILP32E-WITHFP-NEXT:    lui t0, 5242721809; ILP32E-WITHFP-NEXT:    li t1, 81810; ILP32E-WITHFP-NEXT:    li a0, 11811; ILP32E-WITHFP-NEXT:    li a1, 21812; ILP32E-WITHFP-NEXT:    li a2, 31813; ILP32E-WITHFP-NEXT:    li a3, 41814; ILP32E-WITHFP-NEXT:    sw a7, 0(sp)1815; ILP32E-WITHFP-NEXT:    sw a6, 4(sp)1816; ILP32E-WITHFP-NEXT:    sw a5, 8(sp)1817; ILP32E-WITHFP-NEXT:    sw a4, 12(sp)1818; ILP32E-WITHFP-NEXT:    li a4, 51819; ILP32E-WITHFP-NEXT:    sw zero, 16(sp)1820; ILP32E-WITHFP-NEXT:    sw zero, 20(sp)1821; ILP32E-WITHFP-NEXT:    sw zero, 24(sp)1822; ILP32E-WITHFP-NEXT:    sw t0, 28(sp)1823; ILP32E-WITHFP-NEXT:    li a5, 61824; ILP32E-WITHFP-NEXT:    sw t1, 40(sp)1825; ILP32E-WITHFP-NEXT:    sw zero, 44(sp)1826; ILP32E-WITHFP-NEXT:    sw zero, 48(sp)1827; ILP32E-WITHFP-NEXT:    sw zero, 52(sp)1828; ILP32E-WITHFP-NEXT:    call callee_large_scalars_exhausted_regs1829; ILP32E-WITHFP-NEXT:    addi sp, s0, -641830; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 641831; ILP32E-WITHFP-NEXT:    lw ra, 60(sp) # 4-byte Folded Reload1832; ILP32E-WITHFP-NEXT:    lw s0, 56(sp) # 4-byte Folded Reload1833; ILP32E-WITHFP-NEXT:    .cfi_restore ra1834; ILP32E-WITHFP-NEXT:    .cfi_restore s01835; ILP32E-WITHFP-NEXT:    addi sp, sp, 641836; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 01837; ILP32E-WITHFP-NEXT:    ret1838;1839; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_large_scalars_exhausted_regs:1840; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:1841; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11842; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81843; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41844; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81845; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, -561846; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 641847; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi s0, sp, 641848; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01849; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    andi sp, sp, -161850; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi a4, sp, 161851; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a5, 91852; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi a6, sp, 401853; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a7, 71854; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui t0, 5242721855; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li t1, 81856; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 11857; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a1, 21858; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a2, 31859; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a3, 41860; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a7, 0(sp)1861; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a6, 4(sp)1862; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a5, 8(sp)1863; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a4, 12(sp)1864; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a4, 51865; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 16(sp)1866; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 20(sp)1867; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 24(sp)1868; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw t0, 28(sp)1869; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a5, 61870; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw t1, 40(sp)1871; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 44(sp)1872; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 48(sp)1873; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 52(sp)1874; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_large_scalars_exhausted_regs1875; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, s0, -641876; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 641877; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, 561878; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81879; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_11880;1881; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_large_scalars_exhausted_regs:1882; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:1883; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11884; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81885; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41886; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81887; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, -561888; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 641889; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 641890; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01891; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    andi sp, sp, -161892; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi a4, sp, 161893; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a5, 91894; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi a6, sp, 401895; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a7, 71896; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui t0, 5242721897; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li t1, 81898; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 11899; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a1, 21900; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a2, 31901; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a3, 41902; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a7, 0(sp)1903; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a6, 4(sp)1904; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a5, 8(sp)1905; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a4, 12(sp)1906; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a4, 51907; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 16(sp)1908; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 20(sp)1909; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 24(sp)1910; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw t0, 28(sp)1911; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a5, 61912; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw t1, 40(sp)1913; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 44(sp)1914; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 48(sp)1915; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 52(sp)1916; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_large_scalars_exhausted_regs1917; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, s0, -641918; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 641919; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, 561920; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81921; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_11922  %1 = call i32 @callee_large_scalars_exhausted_regs(1923      i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i128 8, i32 9,1924      fp128 0xL00000000000000007FFF000000000000)1925  ret i32 %11926}1927 1928; Ensure that libcalls generated in the middle-end obey the calling convention1929 1930define i32 @caller_mixed_scalar_libcalls(i64 %a) {1931; ILP32E-FPELIM-LABEL: caller_mixed_scalar_libcalls:1932; ILP32E-FPELIM:       # %bb.0:1933; ILP32E-FPELIM-NEXT:    addi sp, sp, -241934; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 241935; ILP32E-FPELIM-NEXT:    sw ra, 20(sp) # 4-byte Folded Spill1936; ILP32E-FPELIM-NEXT:    sw s0, 16(sp) # 4-byte Folded Spill1937; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -41938; ILP32E-FPELIM-NEXT:    .cfi_offset s0, -81939; ILP32E-FPELIM-NEXT:    addi s0, sp, 241940; ILP32E-FPELIM-NEXT:    .cfi_def_cfa s0, 01941; ILP32E-FPELIM-NEXT:    andi sp, sp, -81942; ILP32E-FPELIM-NEXT:    mv a2, a11943; ILP32E-FPELIM-NEXT:    mv a1, a01944; ILP32E-FPELIM-NEXT:    mv a0, sp1945; ILP32E-FPELIM-NEXT:    call __floatditf1946; ILP32E-FPELIM-NEXT:    lw a0, 0(sp)1947; ILP32E-FPELIM-NEXT:    addi sp, s0, -241948; ILP32E-FPELIM-NEXT:    .cfi_def_cfa sp, 241949; ILP32E-FPELIM-NEXT:    lw ra, 20(sp) # 4-byte Folded Reload1950; ILP32E-FPELIM-NEXT:    lw s0, 16(sp) # 4-byte Folded Reload1951; ILP32E-FPELIM-NEXT:    .cfi_restore ra1952; ILP32E-FPELIM-NEXT:    .cfi_restore s01953; ILP32E-FPELIM-NEXT:    addi sp, sp, 241954; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 01955; ILP32E-FPELIM-NEXT:    ret1956;1957; ILP32E-WITHFP-LABEL: caller_mixed_scalar_libcalls:1958; ILP32E-WITHFP:       # %bb.0:1959; ILP32E-WITHFP-NEXT:    addi sp, sp, -241960; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 241961; ILP32E-WITHFP-NEXT:    sw ra, 20(sp) # 4-byte Folded Spill1962; ILP32E-WITHFP-NEXT:    sw s0, 16(sp) # 4-byte Folded Spill1963; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -41964; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -81965; ILP32E-WITHFP-NEXT:    addi s0, sp, 241966; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 01967; ILP32E-WITHFP-NEXT:    andi sp, sp, -81968; ILP32E-WITHFP-NEXT:    mv a2, a11969; ILP32E-WITHFP-NEXT:    mv a1, a01970; ILP32E-WITHFP-NEXT:    mv a0, sp1971; ILP32E-WITHFP-NEXT:    call __floatditf1972; ILP32E-WITHFP-NEXT:    lw a0, 0(sp)1973; ILP32E-WITHFP-NEXT:    addi sp, s0, -241974; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 241975; ILP32E-WITHFP-NEXT:    lw ra, 20(sp) # 4-byte Folded Reload1976; ILP32E-WITHFP-NEXT:    lw s0, 16(sp) # 4-byte Folded Reload1977; ILP32E-WITHFP-NEXT:    .cfi_restore ra1978; ILP32E-WITHFP-NEXT:    .cfi_restore s01979; ILP32E-WITHFP-NEXT:    addi sp, sp, 241980; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 01981; ILP32E-WITHFP-NEXT:    ret1982;1983; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_mixed_scalar_libcalls:1984; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:1985; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_11986; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 81987; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -41988; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset s0, -81989; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, -161990; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 241991; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi s0, sp, 241992; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 01993; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    andi sp, sp, -81994; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv a2, a11995; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv a1, a01996; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv a0, sp1997; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call __floatditf1998; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a0, 0(sp)1999; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, s0, -242000; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 242001; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, 162002; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82003; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_12004;2005; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_mixed_scalar_libcalls:2006; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2007; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12008; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82009; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42010; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82011; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, -162012; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 242013; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 242014; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02015; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    andi sp, sp, -82016; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv a2, a12017; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv a1, a02018; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv a0, sp2019; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call __floatditf2020; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a0, 0(sp)2021; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, s0, -242022; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 242023; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, 162024; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82025; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12026  %1 = sitofp i64 %a to fp1282027  %2 = bitcast fp128 %1 to i1282028  %3 = trunc i128 %2 to i322029  ret i32 %32030}2031 2032 2033; Check passing of coerced integer arrays2034 2035%struct.small = type { i32, ptr }2036 2037define i32 @callee_small_coerced_struct([2 x i32] %a.coerce) {2038; ILP32E-FPELIM-LABEL: callee_small_coerced_struct:2039; ILP32E-FPELIM:       # %bb.0:2040; ILP32E-FPELIM-NEXT:    xor a0, a0, a12041; ILP32E-FPELIM-NEXT:    seqz a0, a02042; ILP32E-FPELIM-NEXT:    ret2043;2044; ILP32E-WITHFP-LABEL: callee_small_coerced_struct:2045; ILP32E-WITHFP:       # %bb.0:2046; ILP32E-WITHFP-NEXT:    addi sp, sp, -82047; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 82048; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill2049; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill2050; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -42051; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -82052; ILP32E-WITHFP-NEXT:    addi s0, sp, 82053; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 02054; ILP32E-WITHFP-NEXT:    xor a0, a0, a12055; ILP32E-WITHFP-NEXT:    seqz a0, a02056; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 82057; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload2058; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload2059; ILP32E-WITHFP-NEXT:    .cfi_restore ra2060; ILP32E-WITHFP-NEXT:    .cfi_restore s02061; ILP32E-WITHFP-NEXT:    addi sp, sp, 82062; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 02063; ILP32E-WITHFP-NEXT:    ret2064;2065; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_small_coerced_struct:2066; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:2067; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    xor a0, a0, a12068; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    seqz a0, a02069; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret2070;2071; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_small_coerced_struct:2072; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2073; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12074; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82075; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42076; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82077; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 82078; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02079; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    xor a0, a0, a12080; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    seqz a0, a02081; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 82082; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12083  %1 = extractvalue [2 x i32] %a.coerce, 02084  %2 = extractvalue [2 x i32] %a.coerce, 12085  %3 = icmp eq i32 %1, %22086  %4 = zext i1 %3 to i322087  ret i32 %42088}2089 2090define i32 @caller_small_coerced_struct() {2091; ILP32E-FPELIM-LABEL: caller_small_coerced_struct:2092; ILP32E-FPELIM:       # %bb.0:2093; ILP32E-FPELIM-NEXT:    addi sp, sp, -42094; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 42095; ILP32E-FPELIM-NEXT:    sw ra, 0(sp) # 4-byte Folded Spill2096; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -42097; ILP32E-FPELIM-NEXT:    li a0, 12098; ILP32E-FPELIM-NEXT:    li a1, 22099; ILP32E-FPELIM-NEXT:    call callee_small_coerced_struct2100; ILP32E-FPELIM-NEXT:    lw ra, 0(sp) # 4-byte Folded Reload2101; ILP32E-FPELIM-NEXT:    .cfi_restore ra2102; ILP32E-FPELIM-NEXT:    addi sp, sp, 42103; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 02104; ILP32E-FPELIM-NEXT:    ret2105;2106; ILP32E-WITHFP-LABEL: caller_small_coerced_struct:2107; ILP32E-WITHFP:       # %bb.0:2108; ILP32E-WITHFP-NEXT:    addi sp, sp, -82109; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 82110; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill2111; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill2112; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -42113; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -82114; ILP32E-WITHFP-NEXT:    addi s0, sp, 82115; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 02116; ILP32E-WITHFP-NEXT:    li a0, 12117; ILP32E-WITHFP-NEXT:    li a1, 22118; ILP32E-WITHFP-NEXT:    call callee_small_coerced_struct2119; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 82120; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload2121; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload2122; ILP32E-WITHFP-NEXT:    .cfi_restore ra2123; ILP32E-WITHFP-NEXT:    .cfi_restore s02124; ILP32E-WITHFP-NEXT:    addi sp, sp, 82125; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 02126; ILP32E-WITHFP-NEXT:    ret2127;2128; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_small_coerced_struct:2129; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:2130; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_02131; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 42132; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42133; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 12134; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a1, 22135; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_small_coerced_struct2136; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_02137;2138; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_small_coerced_struct:2139; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2140; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12141; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82142; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42143; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82144; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 82145; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02146; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 12147; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a1, 22148; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_small_coerced_struct2149; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 82150; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12151  %1 = call i32 @callee_small_coerced_struct([2 x i32] [i32 1, i32 2])2152  ret i32 %12153}2154 2155; Check large struct arguments, which are passed byval2156 2157%struct.large = type { i32, i32, i32, i32 }2158 2159define i32 @callee_large_struct(ptr byval(%struct.large) align 4 %a) {2160; ILP32E-FPELIM-LABEL: callee_large_struct:2161; ILP32E-FPELIM:       # %bb.0:2162; ILP32E-FPELIM-NEXT:    lw a1, 0(a0)2163; ILP32E-FPELIM-NEXT:    lw a0, 12(a0)2164; ILP32E-FPELIM-NEXT:    add a0, a1, a02165; ILP32E-FPELIM-NEXT:    ret2166;2167; ILP32E-WITHFP-LABEL: callee_large_struct:2168; ILP32E-WITHFP:       # %bb.0:2169; ILP32E-WITHFP-NEXT:    addi sp, sp, -82170; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 82171; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill2172; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill2173; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -42174; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -82175; ILP32E-WITHFP-NEXT:    addi s0, sp, 82176; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 02177; ILP32E-WITHFP-NEXT:    lw a1, 0(a0)2178; ILP32E-WITHFP-NEXT:    lw a0, 12(a0)2179; ILP32E-WITHFP-NEXT:    add a0, a1, a02180; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 82181; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload2182; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload2183; ILP32E-WITHFP-NEXT:    .cfi_restore ra2184; ILP32E-WITHFP-NEXT:    .cfi_restore s02185; ILP32E-WITHFP-NEXT:    addi sp, sp, 82186; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 02187; ILP32E-WITHFP-NEXT:    ret2188;2189; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_large_struct:2190; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:2191; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a1, 0(a0)2192; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a0, 12(a0)2193; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a1, a02194; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret2195;2196; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_large_struct:2197; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2198; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12199; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82200; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42201; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82202; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 82203; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02204; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a1, 0(a0)2205; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a0, 12(a0)2206; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a1, a02207; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 82208; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12209  %1 = getelementptr inbounds %struct.large, ptr %a, i32 0, i32 02210  %2 = getelementptr inbounds %struct.large, ptr %a, i32 0, i32 32211  %3 = load i32, ptr %12212  %4 = load i32, ptr %22213  %5 = add i32 %3, %42214  ret i32 %52215}2216 2217define i32 @caller_large_struct() {2218; ILP32E-FPELIM-LABEL: caller_large_struct:2219; ILP32E-FPELIM:       # %bb.0:2220; ILP32E-FPELIM-NEXT:    addi sp, sp, -362221; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 362222; ILP32E-FPELIM-NEXT:    sw ra, 32(sp) # 4-byte Folded Spill2223; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -42224; ILP32E-FPELIM-NEXT:    li a0, 12225; ILP32E-FPELIM-NEXT:    li a1, 22226; ILP32E-FPELIM-NEXT:    li a2, 32227; ILP32E-FPELIM-NEXT:    li a3, 42228; ILP32E-FPELIM-NEXT:    sw a0, 16(sp)2229; ILP32E-FPELIM-NEXT:    sw a1, 20(sp)2230; ILP32E-FPELIM-NEXT:    sw a2, 24(sp)2231; ILP32E-FPELIM-NEXT:    sw a3, 28(sp)2232; ILP32E-FPELIM-NEXT:    sw a0, 0(sp)2233; ILP32E-FPELIM-NEXT:    sw a1, 4(sp)2234; ILP32E-FPELIM-NEXT:    sw a2, 8(sp)2235; ILP32E-FPELIM-NEXT:    sw a3, 12(sp)2236; ILP32E-FPELIM-NEXT:    mv a0, sp2237; ILP32E-FPELIM-NEXT:    call callee_large_struct2238; ILP32E-FPELIM-NEXT:    lw ra, 32(sp) # 4-byte Folded Reload2239; ILP32E-FPELIM-NEXT:    .cfi_restore ra2240; ILP32E-FPELIM-NEXT:    addi sp, sp, 362241; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 02242; ILP32E-FPELIM-NEXT:    ret2243;2244; ILP32E-WITHFP-LABEL: caller_large_struct:2245; ILP32E-WITHFP:       # %bb.0:2246; ILP32E-WITHFP-NEXT:    addi sp, sp, -402247; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 402248; ILP32E-WITHFP-NEXT:    sw ra, 36(sp) # 4-byte Folded Spill2249; ILP32E-WITHFP-NEXT:    sw s0, 32(sp) # 4-byte Folded Spill2250; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -42251; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -82252; ILP32E-WITHFP-NEXT:    addi s0, sp, 402253; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 02254; ILP32E-WITHFP-NEXT:    li a0, 12255; ILP32E-WITHFP-NEXT:    li a1, 22256; ILP32E-WITHFP-NEXT:    li a2, 32257; ILP32E-WITHFP-NEXT:    li a3, 42258; ILP32E-WITHFP-NEXT:    sw a0, -24(s0)2259; ILP32E-WITHFP-NEXT:    sw a1, -20(s0)2260; ILP32E-WITHFP-NEXT:    sw a2, -16(s0)2261; ILP32E-WITHFP-NEXT:    sw a3, -12(s0)2262; ILP32E-WITHFP-NEXT:    sw a0, -40(s0)2263; ILP32E-WITHFP-NEXT:    sw a1, -36(s0)2264; ILP32E-WITHFP-NEXT:    sw a2, -32(s0)2265; ILP32E-WITHFP-NEXT:    sw a3, -28(s0)2266; ILP32E-WITHFP-NEXT:    addi a0, s0, -402267; ILP32E-WITHFP-NEXT:    call callee_large_struct2268; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 402269; ILP32E-WITHFP-NEXT:    lw ra, 36(sp) # 4-byte Folded Reload2270; ILP32E-WITHFP-NEXT:    lw s0, 32(sp) # 4-byte Folded Reload2271; ILP32E-WITHFP-NEXT:    .cfi_restore ra2272; ILP32E-WITHFP-NEXT:    .cfi_restore s02273; ILP32E-WITHFP-NEXT:    addi sp, sp, 402274; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 02275; ILP32E-WITHFP-NEXT:    ret2276;2277; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_large_struct:2278; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:2279; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_02280; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 42281; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42282; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, -322283; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 362284; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 12285; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a1, 22286; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a2, 32287; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a3, 42288; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a0, 16(sp)2289; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a1, 20(sp)2290; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a2, 24(sp)2291; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a3, 28(sp)2292; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a0, 0(sp)2293; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a1, 4(sp)2294; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a2, 8(sp)2295; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a3, 12(sp)2296; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv a0, sp2297; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_large_struct2298; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, 322299; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 42300; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_02301;2302; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_large_struct:2303; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2304; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12305; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82306; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42307; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82308; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, -322309; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 402310; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 402311; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02312; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 12313; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a1, 22314; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a2, 32315; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a3, 42316; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a0, -24(s0)2317; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a1, -20(s0)2318; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a2, -16(s0)2319; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a3, -12(s0)2320; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a0, -40(s0)2321; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a1, -36(s0)2322; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a2, -32(s0)2323; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a3, -28(s0)2324; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi a0, s0, -402325; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_large_struct2326; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 402327; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, 322328; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82329; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12330  %ls = alloca %struct.large, align 42331  %1 = bitcast ptr %ls to ptr2332  %a = getelementptr inbounds %struct.large, ptr %ls, i32 0, i32 02333  store i32 1, ptr %a2334  %b = getelementptr inbounds %struct.large, ptr %ls, i32 0, i32 12335  store i32 2, ptr %b2336  %c = getelementptr inbounds %struct.large, ptr %ls, i32 0, i32 22337  store i32 3, ptr %c2338  %d = getelementptr inbounds %struct.large, ptr %ls, i32 0, i32 32339  store i32 4, ptr %d2340  %2 = call i32 @callee_large_struct(ptr byval(%struct.large) align 4 %ls)2341  ret i32 %22342}2343 2344; Check return of 2x xlen structs2345 2346define %struct.small @callee_small_struct_ret() {2347; ILP32E-FPELIM-LABEL: callee_small_struct_ret:2348; ILP32E-FPELIM:       # %bb.0:2349; ILP32E-FPELIM-NEXT:    li a0, 12350; ILP32E-FPELIM-NEXT:    li a1, 02351; ILP32E-FPELIM-NEXT:    ret2352;2353; ILP32E-WITHFP-LABEL: callee_small_struct_ret:2354; ILP32E-WITHFP:       # %bb.0:2355; ILP32E-WITHFP-NEXT:    addi sp, sp, -82356; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 82357; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill2358; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill2359; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -42360; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -82361; ILP32E-WITHFP-NEXT:    addi s0, sp, 82362; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 02363; ILP32E-WITHFP-NEXT:    li a0, 12364; ILP32E-WITHFP-NEXT:    li a1, 02365; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 82366; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload2367; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload2368; ILP32E-WITHFP-NEXT:    .cfi_restore ra2369; ILP32E-WITHFP-NEXT:    .cfi_restore s02370; ILP32E-WITHFP-NEXT:    addi sp, sp, 82371; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 02372; ILP32E-WITHFP-NEXT:    ret2373;2374; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_small_struct_ret:2375; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:2376; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a0, 12377; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a1, 02378; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret2379;2380; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_small_struct_ret:2381; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2382; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12383; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82384; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42385; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82386; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 82387; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02388; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a0, 12389; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a1, 02390; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 82391; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12392  ret %struct.small { i32 1, ptr null }2393}2394 2395define i32 @caller_small_struct_ret() {2396; ILP32E-FPELIM-LABEL: caller_small_struct_ret:2397; ILP32E-FPELIM:       # %bb.0:2398; ILP32E-FPELIM-NEXT:    addi sp, sp, -42399; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 42400; ILP32E-FPELIM-NEXT:    sw ra, 0(sp) # 4-byte Folded Spill2401; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -42402; ILP32E-FPELIM-NEXT:    call callee_small_struct_ret2403; ILP32E-FPELIM-NEXT:    add a0, a0, a12404; ILP32E-FPELIM-NEXT:    lw ra, 0(sp) # 4-byte Folded Reload2405; ILP32E-FPELIM-NEXT:    .cfi_restore ra2406; ILP32E-FPELIM-NEXT:    addi sp, sp, 42407; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 02408; ILP32E-FPELIM-NEXT:    ret2409;2410; ILP32E-WITHFP-LABEL: caller_small_struct_ret:2411; ILP32E-WITHFP:       # %bb.0:2412; ILP32E-WITHFP-NEXT:    addi sp, sp, -82413; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 82414; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill2415; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill2416; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -42417; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -82418; ILP32E-WITHFP-NEXT:    addi s0, sp, 82419; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 02420; ILP32E-WITHFP-NEXT:    call callee_small_struct_ret2421; ILP32E-WITHFP-NEXT:    add a0, a0, a12422; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 82423; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload2424; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload2425; ILP32E-WITHFP-NEXT:    .cfi_restore ra2426; ILP32E-WITHFP-NEXT:    .cfi_restore s02427; ILP32E-WITHFP-NEXT:    addi sp, sp, 82428; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 02429; ILP32E-WITHFP-NEXT:    ret2430;2431; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_small_struct_ret:2432; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:2433; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_02434; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 42435; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42436; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_small_struct_ret2437; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a12438; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_02439;2440; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_small_struct_ret:2441; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2442; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12443; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82444; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42445; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82446; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 82447; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02448; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_small_struct_ret2449; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a12450; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 82451; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12452  %1 = call %struct.small @callee_small_struct_ret()2453  %2 = extractvalue %struct.small %1, 02454  %3 = extractvalue %struct.small %1, 12455  %4 = ptrtoint ptr %3 to i322456  %5 = add i32 %2, %42457  ret i32 %52458}2459 2460; Check return of >2x xlen scalars2461 2462define fp128 @callee_large_scalar_ret() {2463; ILP32E-FPELIM-LABEL: callee_large_scalar_ret:2464; ILP32E-FPELIM:       # %bb.0:2465; ILP32E-FPELIM-NEXT:    lui a1, 5242722466; ILP32E-FPELIM-NEXT:    sw zero, 0(a0)2467; ILP32E-FPELIM-NEXT:    sw zero, 4(a0)2468; ILP32E-FPELIM-NEXT:    sw zero, 8(a0)2469; ILP32E-FPELIM-NEXT:    sw a1, 12(a0)2470; ILP32E-FPELIM-NEXT:    ret2471;2472; ILP32E-WITHFP-LABEL: callee_large_scalar_ret:2473; ILP32E-WITHFP:       # %bb.0:2474; ILP32E-WITHFP-NEXT:    addi sp, sp, -82475; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 82476; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill2477; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill2478; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -42479; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -82480; ILP32E-WITHFP-NEXT:    addi s0, sp, 82481; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 02482; ILP32E-WITHFP-NEXT:    lui a1, 5242722483; ILP32E-WITHFP-NEXT:    sw zero, 0(a0)2484; ILP32E-WITHFP-NEXT:    sw zero, 4(a0)2485; ILP32E-WITHFP-NEXT:    sw zero, 8(a0)2486; ILP32E-WITHFP-NEXT:    sw a1, 12(a0)2487; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 82488; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload2489; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload2490; ILP32E-WITHFP-NEXT:    .cfi_restore ra2491; ILP32E-WITHFP-NEXT:    .cfi_restore s02492; ILP32E-WITHFP-NEXT:    addi sp, sp, 82493; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 02494; ILP32E-WITHFP-NEXT:    ret2495;2496; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_large_scalar_ret:2497; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:2498; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lui a1, 5242722499; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 0(a0)2500; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 4(a0)2501; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw zero, 8(a0)2502; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a1, 12(a0)2503; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret2504;2505; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_large_scalar_ret:2506; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2507; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12508; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82509; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42510; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82511; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 82512; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02513; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lui a1, 5242722514; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 0(a0)2515; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 4(a0)2516; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw zero, 8(a0)2517; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a1, 12(a0)2518; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 82519; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12520  ret fp128 0xL00000000000000007FFF0000000000002521}2522 2523define void @caller_large_scalar_ret() {2524; ILP32E-FPELIM-LABEL: caller_large_scalar_ret:2525; ILP32E-FPELIM:       # %bb.0:2526; ILP32E-FPELIM-NEXT:    addi sp, sp, -322527; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 322528; ILP32E-FPELIM-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill2529; ILP32E-FPELIM-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill2530; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -42531; ILP32E-FPELIM-NEXT:    .cfi_offset s0, -82532; ILP32E-FPELIM-NEXT:    addi s0, sp, 322533; ILP32E-FPELIM-NEXT:    .cfi_def_cfa s0, 02534; ILP32E-FPELIM-NEXT:    andi sp, sp, -162535; ILP32E-FPELIM-NEXT:    mv a0, sp2536; ILP32E-FPELIM-NEXT:    call callee_large_scalar_ret2537; ILP32E-FPELIM-NEXT:    addi sp, s0, -322538; ILP32E-FPELIM-NEXT:    .cfi_def_cfa sp, 322539; ILP32E-FPELIM-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload2540; ILP32E-FPELIM-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload2541; ILP32E-FPELIM-NEXT:    .cfi_restore ra2542; ILP32E-FPELIM-NEXT:    .cfi_restore s02543; ILP32E-FPELIM-NEXT:    addi sp, sp, 322544; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 02545; ILP32E-FPELIM-NEXT:    ret2546;2547; ILP32E-WITHFP-LABEL: caller_large_scalar_ret:2548; ILP32E-WITHFP:       # %bb.0:2549; ILP32E-WITHFP-NEXT:    addi sp, sp, -322550; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 322551; ILP32E-WITHFP-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill2552; ILP32E-WITHFP-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill2553; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -42554; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -82555; ILP32E-WITHFP-NEXT:    addi s0, sp, 322556; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 02557; ILP32E-WITHFP-NEXT:    andi sp, sp, -162558; ILP32E-WITHFP-NEXT:    mv a0, sp2559; ILP32E-WITHFP-NEXT:    call callee_large_scalar_ret2560; ILP32E-WITHFP-NEXT:    addi sp, s0, -322561; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 322562; ILP32E-WITHFP-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload2563; ILP32E-WITHFP-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload2564; ILP32E-WITHFP-NEXT:    .cfi_restore ra2565; ILP32E-WITHFP-NEXT:    .cfi_restore s02566; ILP32E-WITHFP-NEXT:    addi sp, sp, 322567; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 02568; ILP32E-WITHFP-NEXT:    ret2569;2570; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_large_scalar_ret:2571; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:2572; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12573; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82574; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42575; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82576; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, -242577; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 322578; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi s0, sp, 322579; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02580; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    andi sp, sp, -162581; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv a0, sp2582; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_large_scalar_ret2583; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, s0, -322584; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 322585; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, 242586; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82587; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_12588;2589; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_large_scalar_ret:2590; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2591; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12592; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82593; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42594; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82595; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, -242596; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 322597; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 322598; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02599; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    andi sp, sp, -162600; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv a0, sp2601; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_large_scalar_ret2602; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, s0, -322603; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 322604; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, 242605; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82606; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12607  %1 = call fp128 @callee_large_scalar_ret()2608  ret void2609}2610 2611; Check return of >2x xlen structs2612 2613define void @callee_large_struct_ret(ptr noalias sret(%struct.large) %agg.result) {2614; ILP32E-FPELIM-LABEL: callee_large_struct_ret:2615; ILP32E-FPELIM:       # %bb.0:2616; ILP32E-FPELIM-NEXT:    li a1, 12617; ILP32E-FPELIM-NEXT:    li a2, 22618; ILP32E-FPELIM-NEXT:    li a3, 32619; ILP32E-FPELIM-NEXT:    li a4, 42620; ILP32E-FPELIM-NEXT:    sw a1, 0(a0)2621; ILP32E-FPELIM-NEXT:    sw a2, 4(a0)2622; ILP32E-FPELIM-NEXT:    sw a3, 8(a0)2623; ILP32E-FPELIM-NEXT:    sw a4, 12(a0)2624; ILP32E-FPELIM-NEXT:    ret2625;2626; ILP32E-WITHFP-LABEL: callee_large_struct_ret:2627; ILP32E-WITHFP:       # %bb.0:2628; ILP32E-WITHFP-NEXT:    addi sp, sp, -82629; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 82630; ILP32E-WITHFP-NEXT:    sw ra, 4(sp) # 4-byte Folded Spill2631; ILP32E-WITHFP-NEXT:    sw s0, 0(sp) # 4-byte Folded Spill2632; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -42633; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -82634; ILP32E-WITHFP-NEXT:    addi s0, sp, 82635; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 02636; ILP32E-WITHFP-NEXT:    li a1, 12637; ILP32E-WITHFP-NEXT:    li a2, 22638; ILP32E-WITHFP-NEXT:    li a3, 32639; ILP32E-WITHFP-NEXT:    li a4, 42640; ILP32E-WITHFP-NEXT:    sw a1, 0(a0)2641; ILP32E-WITHFP-NEXT:    sw a2, 4(a0)2642; ILP32E-WITHFP-NEXT:    sw a3, 8(a0)2643; ILP32E-WITHFP-NEXT:    sw a4, 12(a0)2644; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 82645; ILP32E-WITHFP-NEXT:    lw ra, 4(sp) # 4-byte Folded Reload2646; ILP32E-WITHFP-NEXT:    lw s0, 0(sp) # 4-byte Folded Reload2647; ILP32E-WITHFP-NEXT:    .cfi_restore ra2648; ILP32E-WITHFP-NEXT:    .cfi_restore s02649; ILP32E-WITHFP-NEXT:    addi sp, sp, 82650; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 02651; ILP32E-WITHFP-NEXT:    ret2652;2653; ILP32E-FPELIM-SAVE-RESTORE-LABEL: callee_large_struct_ret:2654; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:2655; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a1, 12656; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a2, 22657; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a3, 32658; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    li a4, 42659; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a1, 0(a0)2660; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a2, 4(a0)2661; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a3, 8(a0)2662; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    sw a4, 12(a0)2663; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    ret2664;2665; ILP32E-WITHFP-SAVE-RESTORE-LABEL: callee_large_struct_ret:2666; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2667; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12668; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82669; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42670; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82671; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 82672; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02673; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a1, 12674; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a2, 22675; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a3, 32676; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    li a4, 42677; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a1, 0(a0)2678; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a2, 4(a0)2679; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a3, 8(a0)2680; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    sw a4, 12(a0)2681; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 82682; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12683  %a = getelementptr inbounds %struct.large, ptr %agg.result, i32 0, i32 02684  store i32 1, ptr %a, align 42685  %b = getelementptr inbounds %struct.large, ptr %agg.result, i32 0, i32 12686  store i32 2, ptr %b, align 42687  %c = getelementptr inbounds %struct.large, ptr %agg.result, i32 0, i32 22688  store i32 3, ptr %c, align 42689  %d = getelementptr inbounds %struct.large, ptr %agg.result, i32 0, i32 32690  store i32 4, ptr %d, align 42691  ret void2692}2693 2694define i32 @caller_large_struct_ret() {2695; ILP32E-FPELIM-LABEL: caller_large_struct_ret:2696; ILP32E-FPELIM:       # %bb.0:2697; ILP32E-FPELIM-NEXT:    addi sp, sp, -242698; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 242699; ILP32E-FPELIM-NEXT:    sw ra, 20(sp) # 4-byte Folded Spill2700; ILP32E-FPELIM-NEXT:    sw s0, 16(sp) # 4-byte Folded Spill2701; ILP32E-FPELIM-NEXT:    .cfi_offset ra, -42702; ILP32E-FPELIM-NEXT:    .cfi_offset s0, -82703; ILP32E-FPELIM-NEXT:    addi s0, sp, 242704; ILP32E-FPELIM-NEXT:    .cfi_def_cfa s0, 02705; ILP32E-FPELIM-NEXT:    andi sp, sp, -82706; ILP32E-FPELIM-NEXT:    mv a0, sp2707; ILP32E-FPELIM-NEXT:    call callee_large_struct_ret2708; ILP32E-FPELIM-NEXT:    lw a0, 0(sp)2709; ILP32E-FPELIM-NEXT:    lw a1, 12(sp)2710; ILP32E-FPELIM-NEXT:    add a0, a0, a12711; ILP32E-FPELIM-NEXT:    addi sp, s0, -242712; ILP32E-FPELIM-NEXT:    .cfi_def_cfa sp, 242713; ILP32E-FPELIM-NEXT:    lw ra, 20(sp) # 4-byte Folded Reload2714; ILP32E-FPELIM-NEXT:    lw s0, 16(sp) # 4-byte Folded Reload2715; ILP32E-FPELIM-NEXT:    .cfi_restore ra2716; ILP32E-FPELIM-NEXT:    .cfi_restore s02717; ILP32E-FPELIM-NEXT:    addi sp, sp, 242718; ILP32E-FPELIM-NEXT:    .cfi_def_cfa_offset 02719; ILP32E-FPELIM-NEXT:    ret2720;2721; ILP32E-WITHFP-LABEL: caller_large_struct_ret:2722; ILP32E-WITHFP:       # %bb.0:2723; ILP32E-WITHFP-NEXT:    addi sp, sp, -242724; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 242725; ILP32E-WITHFP-NEXT:    sw ra, 20(sp) # 4-byte Folded Spill2726; ILP32E-WITHFP-NEXT:    sw s0, 16(sp) # 4-byte Folded Spill2727; ILP32E-WITHFP-NEXT:    .cfi_offset ra, -42728; ILP32E-WITHFP-NEXT:    .cfi_offset s0, -82729; ILP32E-WITHFP-NEXT:    addi s0, sp, 242730; ILP32E-WITHFP-NEXT:    .cfi_def_cfa s0, 02731; ILP32E-WITHFP-NEXT:    andi sp, sp, -82732; ILP32E-WITHFP-NEXT:    mv a0, sp2733; ILP32E-WITHFP-NEXT:    call callee_large_struct_ret2734; ILP32E-WITHFP-NEXT:    lw a0, 0(sp)2735; ILP32E-WITHFP-NEXT:    lw a1, 12(sp)2736; ILP32E-WITHFP-NEXT:    add a0, a0, a12737; ILP32E-WITHFP-NEXT:    addi sp, s0, -242738; ILP32E-WITHFP-NEXT:    .cfi_def_cfa sp, 242739; ILP32E-WITHFP-NEXT:    lw ra, 20(sp) # 4-byte Folded Reload2740; ILP32E-WITHFP-NEXT:    lw s0, 16(sp) # 4-byte Folded Reload2741; ILP32E-WITHFP-NEXT:    .cfi_restore ra2742; ILP32E-WITHFP-NEXT:    .cfi_restore s02743; ILP32E-WITHFP-NEXT:    addi sp, sp, 242744; ILP32E-WITHFP-NEXT:    .cfi_def_cfa_offset 02745; ILP32E-WITHFP-NEXT:    ret2746;2747; ILP32E-FPELIM-SAVE-RESTORE-LABEL: caller_large_struct_ret:2748; ILP32E-FPELIM-SAVE-RESTORE:       # %bb.0:2749; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12750; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82751; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42752; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82753; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, -162754; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 242755; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi s0, sp, 242756; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02757; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    andi sp, sp, -82758; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    mv a0, sp2759; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    call callee_large_struct_ret2760; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a0, 0(sp)2761; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    lw a1, 12(sp)2762; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    add a0, a0, a12763; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, s0, -242764; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 242765; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    addi sp, sp, 162766; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82767; ILP32E-FPELIM-SAVE-RESTORE-NEXT:    tail __riscv_restore_12768;2769; ILP32E-WITHFP-SAVE-RESTORE-LABEL: caller_large_struct_ret:2770; ILP32E-WITHFP-SAVE-RESTORE:       # %bb.0:2771; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call t0, __riscv_save_12772; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82773; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset ra, -42774; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_offset s0, -82775; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, -162776; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 242777; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi s0, sp, 242778; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa s0, 02779; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    andi sp, sp, -82780; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    mv a0, sp2781; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    call callee_large_struct_ret2782; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a0, 0(sp)2783; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    lw a1, 12(sp)2784; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    add a0, a0, a12785; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, s0, -242786; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa sp, 242787; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    addi sp, sp, 162788; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    .cfi_def_cfa_offset 82789; ILP32E-WITHFP-SAVE-RESTORE-NEXT:    tail __riscv_restore_12790  %1 = alloca %struct.large2791  call void @callee_large_struct_ret(ptr sret(%struct.large) %1)2792  %2 = getelementptr inbounds %struct.large, ptr %1, i32 0, i32 02793  %3 = load i32, ptr %22794  %4 = getelementptr inbounds %struct.large, ptr %1, i32 0, i32 32795  %5 = load i32, ptr %42796  %6 = add i32 %3, %52797  ret i32 %62798}2799