1164 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -mattr=+experimental-xqccmp -verify-machineinstrs < %s \3; RUN: | FileCheck %s -check-prefixes=RV32IXQCCMP4; RUN: llc -mtriple=riscv32 -mattr=+experimental-xqccmp -verify-machineinstrs \5; RUN: -frame-pointer=all < %s | FileCheck %s -check-prefixes=RV32IXQCCMP-WITH-FP6; RUN: llc -mtriple=riscv64 -mattr=+experimental-xqccmp -verify-machineinstrs < %s \7; RUN: | FileCheck %s -check-prefixes=RV64IXQCCMP8; RUN: llc -mtriple=riscv64 -mattr=+experimental-xqccmp -verify-machineinstrs \9; RUN: -frame-pointer=all < %s | FileCheck %s -check-prefixes=RV64IXQCCMP-WITH-FP10 11@var = global [32 x i32] zeroinitializer12 13; This function tests that RISCVRegisterInfo::getCalleeSavedRegs returns14; something appropriate.15 16define void @callee() {17; RV32IXQCCMP-LABEL: callee:18; RV32IXQCCMP: # %bb.0:19; RV32IXQCCMP-NEXT: qc.cm.push {ra, s0-s11}, -9620; RV32IXQCCMP-NEXT: .cfi_def_cfa_offset 9621; RV32IXQCCMP-NEXT: .cfi_offset ra, -422; RV32IXQCCMP-NEXT: .cfi_offset s0, -823; RV32IXQCCMP-NEXT: .cfi_offset s1, -1224; RV32IXQCCMP-NEXT: .cfi_offset s2, -1625; RV32IXQCCMP-NEXT: .cfi_offset s3, -2026; RV32IXQCCMP-NEXT: .cfi_offset s4, -2427; RV32IXQCCMP-NEXT: .cfi_offset s5, -2828; RV32IXQCCMP-NEXT: .cfi_offset s6, -3229; RV32IXQCCMP-NEXT: .cfi_offset s7, -3630; RV32IXQCCMP-NEXT: .cfi_offset s8, -4031; RV32IXQCCMP-NEXT: .cfi_offset s9, -4432; RV32IXQCCMP-NEXT: .cfi_offset s10, -4833; RV32IXQCCMP-NEXT: .cfi_offset s11, -5234; RV32IXQCCMP-NEXT: lui a0, %hi(var)35; RV32IXQCCMP-NEXT: addi a0, a0, %lo(var)36; RV32IXQCCMP-NEXT: lw a1, 0(a0)37; RV32IXQCCMP-NEXT: sw a1, 28(sp) # 4-byte Folded Spill38; RV32IXQCCMP-NEXT: lw a1, 4(a0)39; RV32IXQCCMP-NEXT: sw a1, 24(sp) # 4-byte Folded Spill40; RV32IXQCCMP-NEXT: lw a1, 8(a0)41; RV32IXQCCMP-NEXT: sw a1, 20(sp) # 4-byte Folded Spill42; RV32IXQCCMP-NEXT: lw a1, 12(a0)43; RV32IXQCCMP-NEXT: sw a1, 16(sp) # 4-byte Folded Spill44; RV32IXQCCMP-NEXT: lw a1, 16(a0)45; RV32IXQCCMP-NEXT: sw a1, 12(sp) # 4-byte Folded Spill46; RV32IXQCCMP-NEXT: lw t3, 20(a0)47; RV32IXQCCMP-NEXT: lw t4, 24(a0)48; RV32IXQCCMP-NEXT: lw t5, 28(a0)49; RV32IXQCCMP-NEXT: lw t6, 32(a0)50; RV32IXQCCMP-NEXT: lw s2, 36(a0)51; RV32IXQCCMP-NEXT: lw s3, 40(a0)52; RV32IXQCCMP-NEXT: lw s4, 44(a0)53; RV32IXQCCMP-NEXT: lw s5, 48(a0)54; RV32IXQCCMP-NEXT: lw s6, 52(a0)55; RV32IXQCCMP-NEXT: lw s7, 56(a0)56; RV32IXQCCMP-NEXT: lw s8, 60(a0)57; RV32IXQCCMP-NEXT: lw s9, 64(a0)58; RV32IXQCCMP-NEXT: lw s10, 68(a0)59; RV32IXQCCMP-NEXT: lw s11, 72(a0)60; RV32IXQCCMP-NEXT: lw ra, 76(a0)61; RV32IXQCCMP-NEXT: lw t2, 80(a0)62; RV32IXQCCMP-NEXT: lw s0, 84(a0)63; RV32IXQCCMP-NEXT: lw s1, 88(a0)64; RV32IXQCCMP-NEXT: lw t1, 92(a0)65; RV32IXQCCMP-NEXT: lw t0, 112(a0)66; RV32IXQCCMP-NEXT: lw a5, 116(a0)67; RV32IXQCCMP-NEXT: lw a3, 120(a0)68; RV32IXQCCMP-NEXT: lw a1, 124(a0)69; RV32IXQCCMP-NEXT: lw a7, 96(a0)70; RV32IXQCCMP-NEXT: lw a6, 100(a0)71; RV32IXQCCMP-NEXT: lw a4, 104(a0)72; RV32IXQCCMP-NEXT: lw a2, 108(a0)73; RV32IXQCCMP-NEXT: sw a1, 124(a0)74; RV32IXQCCMP-NEXT: sw a3, 120(a0)75; RV32IXQCCMP-NEXT: sw a5, 116(a0)76; RV32IXQCCMP-NEXT: sw t0, 112(a0)77; RV32IXQCCMP-NEXT: sw a2, 108(a0)78; RV32IXQCCMP-NEXT: sw a4, 104(a0)79; RV32IXQCCMP-NEXT: sw a6, 100(a0)80; RV32IXQCCMP-NEXT: sw a7, 96(a0)81; RV32IXQCCMP-NEXT: sw t1, 92(a0)82; RV32IXQCCMP-NEXT: sw s1, 88(a0)83; RV32IXQCCMP-NEXT: sw s0, 84(a0)84; RV32IXQCCMP-NEXT: sw t2, 80(a0)85; RV32IXQCCMP-NEXT: sw ra, 76(a0)86; RV32IXQCCMP-NEXT: sw s11, 72(a0)87; RV32IXQCCMP-NEXT: sw s10, 68(a0)88; RV32IXQCCMP-NEXT: sw s9, 64(a0)89; RV32IXQCCMP-NEXT: sw s8, 60(a0)90; RV32IXQCCMP-NEXT: sw s7, 56(a0)91; RV32IXQCCMP-NEXT: sw s6, 52(a0)92; RV32IXQCCMP-NEXT: sw s5, 48(a0)93; RV32IXQCCMP-NEXT: sw s4, 44(a0)94; RV32IXQCCMP-NEXT: sw s3, 40(a0)95; RV32IXQCCMP-NEXT: sw s2, 36(a0)96; RV32IXQCCMP-NEXT: sw t6, 32(a0)97; RV32IXQCCMP-NEXT: sw t5, 28(a0)98; RV32IXQCCMP-NEXT: sw t4, 24(a0)99; RV32IXQCCMP-NEXT: sw t3, 20(a0)100; RV32IXQCCMP-NEXT: lw a1, 12(sp) # 4-byte Folded Reload101; RV32IXQCCMP-NEXT: sw a1, 16(a0)102; RV32IXQCCMP-NEXT: lw a1, 16(sp) # 4-byte Folded Reload103; RV32IXQCCMP-NEXT: sw a1, 12(a0)104; RV32IXQCCMP-NEXT: lw a1, 20(sp) # 4-byte Folded Reload105; RV32IXQCCMP-NEXT: sw a1, 8(a0)106; RV32IXQCCMP-NEXT: lw a1, 24(sp) # 4-byte Folded Reload107; RV32IXQCCMP-NEXT: sw a1, 4(a0)108; RV32IXQCCMP-NEXT: lw a1, 28(sp) # 4-byte Folded Reload109; RV32IXQCCMP-NEXT: sw a1, 0(a0)110; RV32IXQCCMP-NEXT: qc.cm.popret {ra, s0-s11}, 96111;112; RV32IXQCCMP-WITH-FP-LABEL: callee:113; RV32IXQCCMP-WITH-FP: # %bb.0:114; RV32IXQCCMP-WITH-FP-NEXT: qc.cm.pushfp {ra, s0-s11}, -96115; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 96116; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset ra, -4117; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s0, -8118; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s1, -12119; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s2, -16120; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s3, -20121; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s4, -24122; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s5, -28123; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s6, -32124; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s7, -36125; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s8, -40126; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s9, -44127; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s10, -48128; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s11, -52129; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 0130; RV32IXQCCMP-WITH-FP-NEXT: lui a0, %hi(var)131; RV32IXQCCMP-WITH-FP-NEXT: addi a0, a0, %lo(var)132; RV32IXQCCMP-WITH-FP-NEXT: lw a1, 0(a0)133; RV32IXQCCMP-WITH-FP-NEXT: sw a1, -68(s0) # 4-byte Folded Spill134; RV32IXQCCMP-WITH-FP-NEXT: lw a1, 4(a0)135; RV32IXQCCMP-WITH-FP-NEXT: sw a1, -72(s0) # 4-byte Folded Spill136; RV32IXQCCMP-WITH-FP-NEXT: lw a1, 8(a0)137; RV32IXQCCMP-WITH-FP-NEXT: sw a1, -76(s0) # 4-byte Folded Spill138; RV32IXQCCMP-WITH-FP-NEXT: lw a1, 12(a0)139; RV32IXQCCMP-WITH-FP-NEXT: sw a1, -80(s0) # 4-byte Folded Spill140; RV32IXQCCMP-WITH-FP-NEXT: lw a1, 16(a0)141; RV32IXQCCMP-WITH-FP-NEXT: sw a1, -84(s0) # 4-byte Folded Spill142; RV32IXQCCMP-WITH-FP-NEXT: lw a1, 20(a0)143; RV32IXQCCMP-WITH-FP-NEXT: sw a1, -88(s0) # 4-byte Folded Spill144; RV32IXQCCMP-WITH-FP-NEXT: lw t4, 24(a0)145; RV32IXQCCMP-WITH-FP-NEXT: lw t5, 28(a0)146; RV32IXQCCMP-WITH-FP-NEXT: lw t6, 32(a0)147; RV32IXQCCMP-WITH-FP-NEXT: lw s2, 36(a0)148; RV32IXQCCMP-WITH-FP-NEXT: lw s3, 40(a0)149; RV32IXQCCMP-WITH-FP-NEXT: lw s4, 44(a0)150; RV32IXQCCMP-WITH-FP-NEXT: lw s5, 48(a0)151; RV32IXQCCMP-WITH-FP-NEXT: lw s6, 52(a0)152; RV32IXQCCMP-WITH-FP-NEXT: lw s7, 56(a0)153; RV32IXQCCMP-WITH-FP-NEXT: lw s8, 60(a0)154; RV32IXQCCMP-WITH-FP-NEXT: lw s9, 64(a0)155; RV32IXQCCMP-WITH-FP-NEXT: lw s10, 68(a0)156; RV32IXQCCMP-WITH-FP-NEXT: lw s11, 72(a0)157; RV32IXQCCMP-WITH-FP-NEXT: lw ra, 76(a0)158; RV32IXQCCMP-WITH-FP-NEXT: lw s1, 80(a0)159; RV32IXQCCMP-WITH-FP-NEXT: lw t3, 84(a0)160; RV32IXQCCMP-WITH-FP-NEXT: lw t2, 88(a0)161; RV32IXQCCMP-WITH-FP-NEXT: lw t1, 92(a0)162; RV32IXQCCMP-WITH-FP-NEXT: lw t0, 112(a0)163; RV32IXQCCMP-WITH-FP-NEXT: lw a6, 116(a0)164; RV32IXQCCMP-WITH-FP-NEXT: lw a4, 120(a0)165; RV32IXQCCMP-WITH-FP-NEXT: lw a1, 124(a0)166; RV32IXQCCMP-WITH-FP-NEXT: lw a7, 96(a0)167; RV32IXQCCMP-WITH-FP-NEXT: lw a5, 100(a0)168; RV32IXQCCMP-WITH-FP-NEXT: lw a3, 104(a0)169; RV32IXQCCMP-WITH-FP-NEXT: lw a2, 108(a0)170; RV32IXQCCMP-WITH-FP-NEXT: sw a1, 124(a0)171; RV32IXQCCMP-WITH-FP-NEXT: sw a4, 120(a0)172; RV32IXQCCMP-WITH-FP-NEXT: sw a6, 116(a0)173; RV32IXQCCMP-WITH-FP-NEXT: sw t0, 112(a0)174; RV32IXQCCMP-WITH-FP-NEXT: sw a2, 108(a0)175; RV32IXQCCMP-WITH-FP-NEXT: sw a3, 104(a0)176; RV32IXQCCMP-WITH-FP-NEXT: sw a5, 100(a0)177; RV32IXQCCMP-WITH-FP-NEXT: sw a7, 96(a0)178; RV32IXQCCMP-WITH-FP-NEXT: sw t1, 92(a0)179; RV32IXQCCMP-WITH-FP-NEXT: sw t2, 88(a0)180; RV32IXQCCMP-WITH-FP-NEXT: sw t3, 84(a0)181; RV32IXQCCMP-WITH-FP-NEXT: sw s1, 80(a0)182; RV32IXQCCMP-WITH-FP-NEXT: sw ra, 76(a0)183; RV32IXQCCMP-WITH-FP-NEXT: sw s11, 72(a0)184; RV32IXQCCMP-WITH-FP-NEXT: sw s10, 68(a0)185; RV32IXQCCMP-WITH-FP-NEXT: sw s9, 64(a0)186; RV32IXQCCMP-WITH-FP-NEXT: sw s8, 60(a0)187; RV32IXQCCMP-WITH-FP-NEXT: sw s7, 56(a0)188; RV32IXQCCMP-WITH-FP-NEXT: sw s6, 52(a0)189; RV32IXQCCMP-WITH-FP-NEXT: sw s5, 48(a0)190; RV32IXQCCMP-WITH-FP-NEXT: sw s4, 44(a0)191; RV32IXQCCMP-WITH-FP-NEXT: sw s3, 40(a0)192; RV32IXQCCMP-WITH-FP-NEXT: sw s2, 36(a0)193; RV32IXQCCMP-WITH-FP-NEXT: sw t6, 32(a0)194; RV32IXQCCMP-WITH-FP-NEXT: sw t5, 28(a0)195; RV32IXQCCMP-WITH-FP-NEXT: sw t4, 24(a0)196; RV32IXQCCMP-WITH-FP-NEXT: lw a1, -88(s0) # 4-byte Folded Reload197; RV32IXQCCMP-WITH-FP-NEXT: sw a1, 20(a0)198; RV32IXQCCMP-WITH-FP-NEXT: lw a1, -84(s0) # 4-byte Folded Reload199; RV32IXQCCMP-WITH-FP-NEXT: sw a1, 16(a0)200; RV32IXQCCMP-WITH-FP-NEXT: lw a1, -80(s0) # 4-byte Folded Reload201; RV32IXQCCMP-WITH-FP-NEXT: sw a1, 12(a0)202; RV32IXQCCMP-WITH-FP-NEXT: lw a1, -76(s0) # 4-byte Folded Reload203; RV32IXQCCMP-WITH-FP-NEXT: sw a1, 8(a0)204; RV32IXQCCMP-WITH-FP-NEXT: lw a1, -72(s0) # 4-byte Folded Reload205; RV32IXQCCMP-WITH-FP-NEXT: sw a1, 4(a0)206; RV32IXQCCMP-WITH-FP-NEXT: lw a1, -68(s0) # 4-byte Folded Reload207; RV32IXQCCMP-WITH-FP-NEXT: sw a1, 0(a0)208; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa sp, 96209; RV32IXQCCMP-WITH-FP-NEXT: qc.cm.popret {ra, s0-s11}, 96210;211; RV64IXQCCMP-LABEL: callee:212; RV64IXQCCMP: # %bb.0:213; RV64IXQCCMP-NEXT: qc.cm.push {ra, s0-s11}, -160214; RV64IXQCCMP-NEXT: .cfi_def_cfa_offset 160215; RV64IXQCCMP-NEXT: .cfi_offset ra, -8216; RV64IXQCCMP-NEXT: .cfi_offset s0, -16217; RV64IXQCCMP-NEXT: .cfi_offset s1, -24218; RV64IXQCCMP-NEXT: .cfi_offset s2, -32219; RV64IXQCCMP-NEXT: .cfi_offset s3, -40220; RV64IXQCCMP-NEXT: .cfi_offset s4, -48221; RV64IXQCCMP-NEXT: .cfi_offset s5, -56222; RV64IXQCCMP-NEXT: .cfi_offset s6, -64223; RV64IXQCCMP-NEXT: .cfi_offset s7, -72224; RV64IXQCCMP-NEXT: .cfi_offset s8, -80225; RV64IXQCCMP-NEXT: .cfi_offset s9, -88226; RV64IXQCCMP-NEXT: .cfi_offset s10, -96227; RV64IXQCCMP-NEXT: .cfi_offset s11, -104228; RV64IXQCCMP-NEXT: lui a0, %hi(var)229; RV64IXQCCMP-NEXT: addi a0, a0, %lo(var)230; RV64IXQCCMP-NEXT: lw a1, 0(a0)231; RV64IXQCCMP-NEXT: sd a1, 40(sp) # 8-byte Folded Spill232; RV64IXQCCMP-NEXT: lw a1, 4(a0)233; RV64IXQCCMP-NEXT: sd a1, 32(sp) # 8-byte Folded Spill234; RV64IXQCCMP-NEXT: lw a1, 8(a0)235; RV64IXQCCMP-NEXT: sd a1, 24(sp) # 8-byte Folded Spill236; RV64IXQCCMP-NEXT: lw a1, 12(a0)237; RV64IXQCCMP-NEXT: sd a1, 16(sp) # 8-byte Folded Spill238; RV64IXQCCMP-NEXT: lw a1, 16(a0)239; RV64IXQCCMP-NEXT: sd a1, 8(sp) # 8-byte Folded Spill240; RV64IXQCCMP-NEXT: lw t3, 20(a0)241; RV64IXQCCMP-NEXT: lw t4, 24(a0)242; RV64IXQCCMP-NEXT: lw t5, 28(a0)243; RV64IXQCCMP-NEXT: lw t6, 32(a0)244; RV64IXQCCMP-NEXT: lw s2, 36(a0)245; RV64IXQCCMP-NEXT: lw s3, 40(a0)246; RV64IXQCCMP-NEXT: lw s4, 44(a0)247; RV64IXQCCMP-NEXT: lw s5, 48(a0)248; RV64IXQCCMP-NEXT: lw s6, 52(a0)249; RV64IXQCCMP-NEXT: lw s7, 56(a0)250; RV64IXQCCMP-NEXT: lw s8, 60(a0)251; RV64IXQCCMP-NEXT: lw s9, 64(a0)252; RV64IXQCCMP-NEXT: lw s10, 68(a0)253; RV64IXQCCMP-NEXT: lw s11, 72(a0)254; RV64IXQCCMP-NEXT: lw ra, 76(a0)255; RV64IXQCCMP-NEXT: lw t2, 80(a0)256; RV64IXQCCMP-NEXT: lw s0, 84(a0)257; RV64IXQCCMP-NEXT: lw s1, 88(a0)258; RV64IXQCCMP-NEXT: lw t1, 92(a0)259; RV64IXQCCMP-NEXT: lw t0, 112(a0)260; RV64IXQCCMP-NEXT: lw a5, 116(a0)261; RV64IXQCCMP-NEXT: lw a3, 120(a0)262; RV64IXQCCMP-NEXT: lw a1, 124(a0)263; RV64IXQCCMP-NEXT: lw a7, 96(a0)264; RV64IXQCCMP-NEXT: lw a6, 100(a0)265; RV64IXQCCMP-NEXT: lw a4, 104(a0)266; RV64IXQCCMP-NEXT: lw a2, 108(a0)267; RV64IXQCCMP-NEXT: sw a1, 124(a0)268; RV64IXQCCMP-NEXT: sw a3, 120(a0)269; RV64IXQCCMP-NEXT: sw a5, 116(a0)270; RV64IXQCCMP-NEXT: sw t0, 112(a0)271; RV64IXQCCMP-NEXT: sw a2, 108(a0)272; RV64IXQCCMP-NEXT: sw a4, 104(a0)273; RV64IXQCCMP-NEXT: sw a6, 100(a0)274; RV64IXQCCMP-NEXT: sw a7, 96(a0)275; RV64IXQCCMP-NEXT: sw t1, 92(a0)276; RV64IXQCCMP-NEXT: sw s1, 88(a0)277; RV64IXQCCMP-NEXT: sw s0, 84(a0)278; RV64IXQCCMP-NEXT: sw t2, 80(a0)279; RV64IXQCCMP-NEXT: sw ra, 76(a0)280; RV64IXQCCMP-NEXT: sw s11, 72(a0)281; RV64IXQCCMP-NEXT: sw s10, 68(a0)282; RV64IXQCCMP-NEXT: sw s9, 64(a0)283; RV64IXQCCMP-NEXT: sw s8, 60(a0)284; RV64IXQCCMP-NEXT: sw s7, 56(a0)285; RV64IXQCCMP-NEXT: sw s6, 52(a0)286; RV64IXQCCMP-NEXT: sw s5, 48(a0)287; RV64IXQCCMP-NEXT: sw s4, 44(a0)288; RV64IXQCCMP-NEXT: sw s3, 40(a0)289; RV64IXQCCMP-NEXT: sw s2, 36(a0)290; RV64IXQCCMP-NEXT: sw t6, 32(a0)291; RV64IXQCCMP-NEXT: sw t5, 28(a0)292; RV64IXQCCMP-NEXT: sw t4, 24(a0)293; RV64IXQCCMP-NEXT: sw t3, 20(a0)294; RV64IXQCCMP-NEXT: ld a1, 8(sp) # 8-byte Folded Reload295; RV64IXQCCMP-NEXT: sw a1, 16(a0)296; RV64IXQCCMP-NEXT: ld a1, 16(sp) # 8-byte Folded Reload297; RV64IXQCCMP-NEXT: sw a1, 12(a0)298; RV64IXQCCMP-NEXT: ld a1, 24(sp) # 8-byte Folded Reload299; RV64IXQCCMP-NEXT: sw a1, 8(a0)300; RV64IXQCCMP-NEXT: ld a1, 32(sp) # 8-byte Folded Reload301; RV64IXQCCMP-NEXT: sw a1, 4(a0)302; RV64IXQCCMP-NEXT: ld a1, 40(sp) # 8-byte Folded Reload303; RV64IXQCCMP-NEXT: sw a1, 0(a0)304; RV64IXQCCMP-NEXT: qc.cm.popret {ra, s0-s11}, 160305;306; RV64IXQCCMP-WITH-FP-LABEL: callee:307; RV64IXQCCMP-WITH-FP: # %bb.0:308; RV64IXQCCMP-WITH-FP-NEXT: qc.cm.pushfp {ra, s0-s11}, -160309; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 160310; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset ra, -8311; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s0, -16312; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s1, -24313; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s2, -32314; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s3, -40315; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s4, -48316; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s5, -56317; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s6, -64318; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s7, -72319; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s8, -80320; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s9, -88321; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s10, -96322; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s11, -104323; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 0324; RV64IXQCCMP-WITH-FP-NEXT: lui a0, %hi(var)325; RV64IXQCCMP-WITH-FP-NEXT: addi a0, a0, %lo(var)326; RV64IXQCCMP-WITH-FP-NEXT: lw a1, 0(a0)327; RV64IXQCCMP-WITH-FP-NEXT: sd a1, -120(s0) # 8-byte Folded Spill328; RV64IXQCCMP-WITH-FP-NEXT: lw a1, 4(a0)329; RV64IXQCCMP-WITH-FP-NEXT: sd a1, -128(s0) # 8-byte Folded Spill330; RV64IXQCCMP-WITH-FP-NEXT: lw a1, 8(a0)331; RV64IXQCCMP-WITH-FP-NEXT: sd a1, -136(s0) # 8-byte Folded Spill332; RV64IXQCCMP-WITH-FP-NEXT: lw a1, 12(a0)333; RV64IXQCCMP-WITH-FP-NEXT: sd a1, -144(s0) # 8-byte Folded Spill334; RV64IXQCCMP-WITH-FP-NEXT: lw a1, 16(a0)335; RV64IXQCCMP-WITH-FP-NEXT: sd a1, -152(s0) # 8-byte Folded Spill336; RV64IXQCCMP-WITH-FP-NEXT: lw a1, 20(a0)337; RV64IXQCCMP-WITH-FP-NEXT: sd a1, -160(s0) # 8-byte Folded Spill338; RV64IXQCCMP-WITH-FP-NEXT: lw t4, 24(a0)339; RV64IXQCCMP-WITH-FP-NEXT: lw t5, 28(a0)340; RV64IXQCCMP-WITH-FP-NEXT: lw t6, 32(a0)341; RV64IXQCCMP-WITH-FP-NEXT: lw s2, 36(a0)342; RV64IXQCCMP-WITH-FP-NEXT: lw s3, 40(a0)343; RV64IXQCCMP-WITH-FP-NEXT: lw s4, 44(a0)344; RV64IXQCCMP-WITH-FP-NEXT: lw s5, 48(a0)345; RV64IXQCCMP-WITH-FP-NEXT: lw s6, 52(a0)346; RV64IXQCCMP-WITH-FP-NEXT: lw s7, 56(a0)347; RV64IXQCCMP-WITH-FP-NEXT: lw s8, 60(a0)348; RV64IXQCCMP-WITH-FP-NEXT: lw s9, 64(a0)349; RV64IXQCCMP-WITH-FP-NEXT: lw s10, 68(a0)350; RV64IXQCCMP-WITH-FP-NEXT: lw s11, 72(a0)351; RV64IXQCCMP-WITH-FP-NEXT: lw ra, 76(a0)352; RV64IXQCCMP-WITH-FP-NEXT: lw s1, 80(a0)353; RV64IXQCCMP-WITH-FP-NEXT: lw t3, 84(a0)354; RV64IXQCCMP-WITH-FP-NEXT: lw t2, 88(a0)355; RV64IXQCCMP-WITH-FP-NEXT: lw t1, 92(a0)356; RV64IXQCCMP-WITH-FP-NEXT: lw t0, 112(a0)357; RV64IXQCCMP-WITH-FP-NEXT: lw a6, 116(a0)358; RV64IXQCCMP-WITH-FP-NEXT: lw a4, 120(a0)359; RV64IXQCCMP-WITH-FP-NEXT: lw a1, 124(a0)360; RV64IXQCCMP-WITH-FP-NEXT: lw a7, 96(a0)361; RV64IXQCCMP-WITH-FP-NEXT: lw a5, 100(a0)362; RV64IXQCCMP-WITH-FP-NEXT: lw a3, 104(a0)363; RV64IXQCCMP-WITH-FP-NEXT: lw a2, 108(a0)364; RV64IXQCCMP-WITH-FP-NEXT: sw a1, 124(a0)365; RV64IXQCCMP-WITH-FP-NEXT: sw a4, 120(a0)366; RV64IXQCCMP-WITH-FP-NEXT: sw a6, 116(a0)367; RV64IXQCCMP-WITH-FP-NEXT: sw t0, 112(a0)368; RV64IXQCCMP-WITH-FP-NEXT: sw a2, 108(a0)369; RV64IXQCCMP-WITH-FP-NEXT: sw a3, 104(a0)370; RV64IXQCCMP-WITH-FP-NEXT: sw a5, 100(a0)371; RV64IXQCCMP-WITH-FP-NEXT: sw a7, 96(a0)372; RV64IXQCCMP-WITH-FP-NEXT: sw t1, 92(a0)373; RV64IXQCCMP-WITH-FP-NEXT: sw t2, 88(a0)374; RV64IXQCCMP-WITH-FP-NEXT: sw t3, 84(a0)375; RV64IXQCCMP-WITH-FP-NEXT: sw s1, 80(a0)376; RV64IXQCCMP-WITH-FP-NEXT: sw ra, 76(a0)377; RV64IXQCCMP-WITH-FP-NEXT: sw s11, 72(a0)378; RV64IXQCCMP-WITH-FP-NEXT: sw s10, 68(a0)379; RV64IXQCCMP-WITH-FP-NEXT: sw s9, 64(a0)380; RV64IXQCCMP-WITH-FP-NEXT: sw s8, 60(a0)381; RV64IXQCCMP-WITH-FP-NEXT: sw s7, 56(a0)382; RV64IXQCCMP-WITH-FP-NEXT: sw s6, 52(a0)383; RV64IXQCCMP-WITH-FP-NEXT: sw s5, 48(a0)384; RV64IXQCCMP-WITH-FP-NEXT: sw s4, 44(a0)385; RV64IXQCCMP-WITH-FP-NEXT: sw s3, 40(a0)386; RV64IXQCCMP-WITH-FP-NEXT: sw s2, 36(a0)387; RV64IXQCCMP-WITH-FP-NEXT: sw t6, 32(a0)388; RV64IXQCCMP-WITH-FP-NEXT: sw t5, 28(a0)389; RV64IXQCCMP-WITH-FP-NEXT: sw t4, 24(a0)390; RV64IXQCCMP-WITH-FP-NEXT: ld a1, -160(s0) # 8-byte Folded Reload391; RV64IXQCCMP-WITH-FP-NEXT: sw a1, 20(a0)392; RV64IXQCCMP-WITH-FP-NEXT: ld a1, -152(s0) # 8-byte Folded Reload393; RV64IXQCCMP-WITH-FP-NEXT: sw a1, 16(a0)394; RV64IXQCCMP-WITH-FP-NEXT: ld a1, -144(s0) # 8-byte Folded Reload395; RV64IXQCCMP-WITH-FP-NEXT: sw a1, 12(a0)396; RV64IXQCCMP-WITH-FP-NEXT: ld a1, -136(s0) # 8-byte Folded Reload397; RV64IXQCCMP-WITH-FP-NEXT: sw a1, 8(a0)398; RV64IXQCCMP-WITH-FP-NEXT: ld a1, -128(s0) # 8-byte Folded Reload399; RV64IXQCCMP-WITH-FP-NEXT: sw a1, 4(a0)400; RV64IXQCCMP-WITH-FP-NEXT: ld a1, -120(s0) # 8-byte Folded Reload401; RV64IXQCCMP-WITH-FP-NEXT: sw a1, 0(a0)402; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa sp, 160403; RV64IXQCCMP-WITH-FP-NEXT: qc.cm.popret {ra, s0-s11}, 160404 %val = load [32 x i32], ptr @var405 store volatile [32 x i32] %val, ptr @var406 ret void407}408 409; This function tests that RISCVRegisterInfo::getCallPreservedMask returns410; something appropriate.411 412define void @caller() {413; RV32IXQCCMP-LABEL: caller:414; RV32IXQCCMP: # %bb.0:415; RV32IXQCCMP-NEXT: qc.cm.push {ra, s0-s11}, -112416; RV32IXQCCMP-NEXT: .cfi_def_cfa_offset 112417; RV32IXQCCMP-NEXT: .cfi_offset ra, -4418; RV32IXQCCMP-NEXT: .cfi_offset s0, -8419; RV32IXQCCMP-NEXT: .cfi_offset s1, -12420; RV32IXQCCMP-NEXT: .cfi_offset s2, -16421; RV32IXQCCMP-NEXT: .cfi_offset s3, -20422; RV32IXQCCMP-NEXT: .cfi_offset s4, -24423; RV32IXQCCMP-NEXT: .cfi_offset s5, -28424; RV32IXQCCMP-NEXT: .cfi_offset s6, -32425; RV32IXQCCMP-NEXT: .cfi_offset s7, -36426; RV32IXQCCMP-NEXT: .cfi_offset s8, -40427; RV32IXQCCMP-NEXT: .cfi_offset s9, -44428; RV32IXQCCMP-NEXT: .cfi_offset s10, -48429; RV32IXQCCMP-NEXT: .cfi_offset s11, -52430; RV32IXQCCMP-NEXT: addi sp, sp, -48431; RV32IXQCCMP-NEXT: .cfi_def_cfa_offset 160432; RV32IXQCCMP-NEXT: lui s0, %hi(var)433; RV32IXQCCMP-NEXT: addi s0, s0, %lo(var)434; RV32IXQCCMP-NEXT: lw a0, 0(s0)435; RV32IXQCCMP-NEXT: sw a0, 92(sp) # 4-byte Folded Spill436; RV32IXQCCMP-NEXT: lw a0, 4(s0)437; RV32IXQCCMP-NEXT: sw a0, 88(sp) # 4-byte Folded Spill438; RV32IXQCCMP-NEXT: lw a0, 8(s0)439; RV32IXQCCMP-NEXT: sw a0, 84(sp) # 4-byte Folded Spill440; RV32IXQCCMP-NEXT: lw a0, 12(s0)441; RV32IXQCCMP-NEXT: sw a0, 80(sp) # 4-byte Folded Spill442; RV32IXQCCMP-NEXT: lw a0, 16(s0)443; RV32IXQCCMP-NEXT: sw a0, 76(sp) # 4-byte Folded Spill444; RV32IXQCCMP-NEXT: lw a0, 20(s0)445; RV32IXQCCMP-NEXT: sw a0, 72(sp) # 4-byte Folded Spill446; RV32IXQCCMP-NEXT: lw a0, 24(s0)447; RV32IXQCCMP-NEXT: sw a0, 68(sp) # 4-byte Folded Spill448; RV32IXQCCMP-NEXT: lw a0, 28(s0)449; RV32IXQCCMP-NEXT: sw a0, 64(sp) # 4-byte Folded Spill450; RV32IXQCCMP-NEXT: lw a0, 32(s0)451; RV32IXQCCMP-NEXT: sw a0, 60(sp) # 4-byte Folded Spill452; RV32IXQCCMP-NEXT: lw a0, 36(s0)453; RV32IXQCCMP-NEXT: sw a0, 56(sp) # 4-byte Folded Spill454; RV32IXQCCMP-NEXT: lw a0, 40(s0)455; RV32IXQCCMP-NEXT: sw a0, 52(sp) # 4-byte Folded Spill456; RV32IXQCCMP-NEXT: lw a0, 44(s0)457; RV32IXQCCMP-NEXT: sw a0, 48(sp) # 4-byte Folded Spill458; RV32IXQCCMP-NEXT: lw a0, 48(s0)459; RV32IXQCCMP-NEXT: sw a0, 44(sp) # 4-byte Folded Spill460; RV32IXQCCMP-NEXT: lw a0, 52(s0)461; RV32IXQCCMP-NEXT: sw a0, 40(sp) # 4-byte Folded Spill462; RV32IXQCCMP-NEXT: lw a0, 56(s0)463; RV32IXQCCMP-NEXT: sw a0, 36(sp) # 4-byte Folded Spill464; RV32IXQCCMP-NEXT: lw a0, 60(s0)465; RV32IXQCCMP-NEXT: sw a0, 32(sp) # 4-byte Folded Spill466; RV32IXQCCMP-NEXT: lw a0, 64(s0)467; RV32IXQCCMP-NEXT: sw a0, 28(sp) # 4-byte Folded Spill468; RV32IXQCCMP-NEXT: lw a0, 68(s0)469; RV32IXQCCMP-NEXT: sw a0, 24(sp) # 4-byte Folded Spill470; RV32IXQCCMP-NEXT: lw a0, 72(s0)471; RV32IXQCCMP-NEXT: sw a0, 20(sp) # 4-byte Folded Spill472; RV32IXQCCMP-NEXT: lw a0, 76(s0)473; RV32IXQCCMP-NEXT: sw a0, 16(sp) # 4-byte Folded Spill474; RV32IXQCCMP-NEXT: lw a0, 80(s0)475; RV32IXQCCMP-NEXT: sw a0, 12(sp) # 4-byte Folded Spill476; RV32IXQCCMP-NEXT: lw s1, 84(s0)477; RV32IXQCCMP-NEXT: lw s2, 88(s0)478; RV32IXQCCMP-NEXT: lw s3, 92(s0)479; RV32IXQCCMP-NEXT: lw s4, 96(s0)480; RV32IXQCCMP-NEXT: lw s5, 100(s0)481; RV32IXQCCMP-NEXT: lw s6, 104(s0)482; RV32IXQCCMP-NEXT: lw s7, 108(s0)483; RV32IXQCCMP-NEXT: lw s8, 112(s0)484; RV32IXQCCMP-NEXT: lw s9, 116(s0)485; RV32IXQCCMP-NEXT: lw s10, 120(s0)486; RV32IXQCCMP-NEXT: lw s11, 124(s0)487; RV32IXQCCMP-NEXT: call callee488; RV32IXQCCMP-NEXT: sw s11, 124(s0)489; RV32IXQCCMP-NEXT: sw s10, 120(s0)490; RV32IXQCCMP-NEXT: sw s9, 116(s0)491; RV32IXQCCMP-NEXT: sw s8, 112(s0)492; RV32IXQCCMP-NEXT: sw s7, 108(s0)493; RV32IXQCCMP-NEXT: sw s6, 104(s0)494; RV32IXQCCMP-NEXT: sw s5, 100(s0)495; RV32IXQCCMP-NEXT: sw s4, 96(s0)496; RV32IXQCCMP-NEXT: sw s3, 92(s0)497; RV32IXQCCMP-NEXT: sw s2, 88(s0)498; RV32IXQCCMP-NEXT: sw s1, 84(s0)499; RV32IXQCCMP-NEXT: lw a0, 12(sp) # 4-byte Folded Reload500; RV32IXQCCMP-NEXT: sw a0, 80(s0)501; RV32IXQCCMP-NEXT: lw a0, 16(sp) # 4-byte Folded Reload502; RV32IXQCCMP-NEXT: sw a0, 76(s0)503; RV32IXQCCMP-NEXT: lw a0, 20(sp) # 4-byte Folded Reload504; RV32IXQCCMP-NEXT: sw a0, 72(s0)505; RV32IXQCCMP-NEXT: lw a0, 24(sp) # 4-byte Folded Reload506; RV32IXQCCMP-NEXT: sw a0, 68(s0)507; RV32IXQCCMP-NEXT: lw a0, 28(sp) # 4-byte Folded Reload508; RV32IXQCCMP-NEXT: sw a0, 64(s0)509; RV32IXQCCMP-NEXT: lw a0, 32(sp) # 4-byte Folded Reload510; RV32IXQCCMP-NEXT: sw a0, 60(s0)511; RV32IXQCCMP-NEXT: lw a0, 36(sp) # 4-byte Folded Reload512; RV32IXQCCMP-NEXT: sw a0, 56(s0)513; RV32IXQCCMP-NEXT: lw a0, 40(sp) # 4-byte Folded Reload514; RV32IXQCCMP-NEXT: sw a0, 52(s0)515; RV32IXQCCMP-NEXT: lw a0, 44(sp) # 4-byte Folded Reload516; RV32IXQCCMP-NEXT: sw a0, 48(s0)517; RV32IXQCCMP-NEXT: lw a0, 48(sp) # 4-byte Folded Reload518; RV32IXQCCMP-NEXT: sw a0, 44(s0)519; RV32IXQCCMP-NEXT: lw a0, 52(sp) # 4-byte Folded Reload520; RV32IXQCCMP-NEXT: sw a0, 40(s0)521; RV32IXQCCMP-NEXT: lw a0, 56(sp) # 4-byte Folded Reload522; RV32IXQCCMP-NEXT: sw a0, 36(s0)523; RV32IXQCCMP-NEXT: lw a0, 60(sp) # 4-byte Folded Reload524; RV32IXQCCMP-NEXT: sw a0, 32(s0)525; RV32IXQCCMP-NEXT: lw a0, 64(sp) # 4-byte Folded Reload526; RV32IXQCCMP-NEXT: sw a0, 28(s0)527; RV32IXQCCMP-NEXT: lw a0, 68(sp) # 4-byte Folded Reload528; RV32IXQCCMP-NEXT: sw a0, 24(s0)529; RV32IXQCCMP-NEXT: lw a0, 72(sp) # 4-byte Folded Reload530; RV32IXQCCMP-NEXT: sw a0, 20(s0)531; RV32IXQCCMP-NEXT: lw a0, 76(sp) # 4-byte Folded Reload532; RV32IXQCCMP-NEXT: sw a0, 16(s0)533; RV32IXQCCMP-NEXT: lw a0, 80(sp) # 4-byte Folded Reload534; RV32IXQCCMP-NEXT: sw a0, 12(s0)535; RV32IXQCCMP-NEXT: lw a0, 84(sp) # 4-byte Folded Reload536; RV32IXQCCMP-NEXT: sw a0, 8(s0)537; RV32IXQCCMP-NEXT: lw a0, 88(sp) # 4-byte Folded Reload538; RV32IXQCCMP-NEXT: sw a0, 4(s0)539; RV32IXQCCMP-NEXT: lw a0, 92(sp) # 4-byte Folded Reload540; RV32IXQCCMP-NEXT: sw a0, 0(s0)541; RV32IXQCCMP-NEXT: addi sp, sp, 48542; RV32IXQCCMP-NEXT: .cfi_def_cfa_offset 112543; RV32IXQCCMP-NEXT: qc.cm.popret {ra, s0-s11}, 112544;545; RV32IXQCCMP-WITH-FP-LABEL: caller:546; RV32IXQCCMP-WITH-FP: # %bb.0:547; RV32IXQCCMP-WITH-FP-NEXT: qc.cm.pushfp {ra, s0-s11}, -112548; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 112549; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset ra, -4550; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s0, -8551; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s1, -12552; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s2, -16553; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s3, -20554; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s4, -24555; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s5, -28556; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s6, -32557; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s7, -36558; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s8, -40559; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s9, -44560; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s10, -48561; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s11, -52562; RV32IXQCCMP-WITH-FP-NEXT: addi sp, sp, -48563; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 160564; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 0565; RV32IXQCCMP-WITH-FP-NEXT: lui s1, %hi(var)566; RV32IXQCCMP-WITH-FP-NEXT: addi s1, s1, %lo(var)567; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 0(s1)568; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -68(s0) # 4-byte Folded Spill569; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 4(s1)570; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -72(s0) # 4-byte Folded Spill571; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 8(s1)572; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -76(s0) # 4-byte Folded Spill573; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 12(s1)574; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -80(s0) # 4-byte Folded Spill575; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 16(s1)576; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -84(s0) # 4-byte Folded Spill577; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 20(s1)578; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -88(s0) # 4-byte Folded Spill579; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 24(s1)580; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -92(s0) # 4-byte Folded Spill581; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 28(s1)582; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -96(s0) # 4-byte Folded Spill583; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 32(s1)584; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -100(s0) # 4-byte Folded Spill585; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 36(s1)586; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -104(s0) # 4-byte Folded Spill587; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 40(s1)588; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -108(s0) # 4-byte Folded Spill589; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 44(s1)590; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -112(s0) # 4-byte Folded Spill591; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 48(s1)592; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -116(s0) # 4-byte Folded Spill593; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 52(s1)594; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -120(s0) # 4-byte Folded Spill595; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 56(s1)596; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -124(s0) # 4-byte Folded Spill597; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 60(s1)598; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -128(s0) # 4-byte Folded Spill599; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 64(s1)600; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -132(s0) # 4-byte Folded Spill601; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 68(s1)602; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -136(s0) # 4-byte Folded Spill603; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 72(s1)604; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -140(s0) # 4-byte Folded Spill605; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 76(s1)606; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -144(s0) # 4-byte Folded Spill607; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 80(s1)608; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -148(s0) # 4-byte Folded Spill609; RV32IXQCCMP-WITH-FP-NEXT: lw a0, 84(s1)610; RV32IXQCCMP-WITH-FP-NEXT: sw a0, -152(s0) # 4-byte Folded Spill611; RV32IXQCCMP-WITH-FP-NEXT: lw s4, 88(s1)612; RV32IXQCCMP-WITH-FP-NEXT: lw s5, 92(s1)613; RV32IXQCCMP-WITH-FP-NEXT: lw s6, 96(s1)614; RV32IXQCCMP-WITH-FP-NEXT: lw s7, 100(s1)615; RV32IXQCCMP-WITH-FP-NEXT: lw s8, 104(s1)616; RV32IXQCCMP-WITH-FP-NEXT: lw s9, 108(s1)617; RV32IXQCCMP-WITH-FP-NEXT: lw s10, 112(s1)618; RV32IXQCCMP-WITH-FP-NEXT: lw s11, 116(s1)619; RV32IXQCCMP-WITH-FP-NEXT: lw s2, 120(s1)620; RV32IXQCCMP-WITH-FP-NEXT: lw s3, 124(s1)621; RV32IXQCCMP-WITH-FP-NEXT: call callee622; RV32IXQCCMP-WITH-FP-NEXT: sw s3, 124(s1)623; RV32IXQCCMP-WITH-FP-NEXT: sw s2, 120(s1)624; RV32IXQCCMP-WITH-FP-NEXT: sw s11, 116(s1)625; RV32IXQCCMP-WITH-FP-NEXT: sw s10, 112(s1)626; RV32IXQCCMP-WITH-FP-NEXT: sw s9, 108(s1)627; RV32IXQCCMP-WITH-FP-NEXT: sw s8, 104(s1)628; RV32IXQCCMP-WITH-FP-NEXT: sw s7, 100(s1)629; RV32IXQCCMP-WITH-FP-NEXT: sw s6, 96(s1)630; RV32IXQCCMP-WITH-FP-NEXT: sw s5, 92(s1)631; RV32IXQCCMP-WITH-FP-NEXT: sw s4, 88(s1)632; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -152(s0) # 4-byte Folded Reload633; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 84(s1)634; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -148(s0) # 4-byte Folded Reload635; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 80(s1)636; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -144(s0) # 4-byte Folded Reload637; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 76(s1)638; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -140(s0) # 4-byte Folded Reload639; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 72(s1)640; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -136(s0) # 4-byte Folded Reload641; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 68(s1)642; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -132(s0) # 4-byte Folded Reload643; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 64(s1)644; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -128(s0) # 4-byte Folded Reload645; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 60(s1)646; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -124(s0) # 4-byte Folded Reload647; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 56(s1)648; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -120(s0) # 4-byte Folded Reload649; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 52(s1)650; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -116(s0) # 4-byte Folded Reload651; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 48(s1)652; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -112(s0) # 4-byte Folded Reload653; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 44(s1)654; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -108(s0) # 4-byte Folded Reload655; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 40(s1)656; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -104(s0) # 4-byte Folded Reload657; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 36(s1)658; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -100(s0) # 4-byte Folded Reload659; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 32(s1)660; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -96(s0) # 4-byte Folded Reload661; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 28(s1)662; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -92(s0) # 4-byte Folded Reload663; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 24(s1)664; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -88(s0) # 4-byte Folded Reload665; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 20(s1)666; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -84(s0) # 4-byte Folded Reload667; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 16(s1)668; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -80(s0) # 4-byte Folded Reload669; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 12(s1)670; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -76(s0) # 4-byte Folded Reload671; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 8(s1)672; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -72(s0) # 4-byte Folded Reload673; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 4(s1)674; RV32IXQCCMP-WITH-FP-NEXT: lw a0, -68(s0) # 4-byte Folded Reload675; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 0(s1)676; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa sp, 160677; RV32IXQCCMP-WITH-FP-NEXT: addi sp, sp, 48678; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 112679; RV32IXQCCMP-WITH-FP-NEXT: qc.cm.popret {ra, s0-s11}, 112680;681; RV64IXQCCMP-LABEL: caller:682; RV64IXQCCMP: # %bb.0:683; RV64IXQCCMP-NEXT: qc.cm.push {ra, s0-s11}, -160684; RV64IXQCCMP-NEXT: .cfi_def_cfa_offset 160685; RV64IXQCCMP-NEXT: .cfi_offset ra, -8686; RV64IXQCCMP-NEXT: .cfi_offset s0, -16687; RV64IXQCCMP-NEXT: .cfi_offset s1, -24688; RV64IXQCCMP-NEXT: .cfi_offset s2, -32689; RV64IXQCCMP-NEXT: .cfi_offset s3, -40690; RV64IXQCCMP-NEXT: .cfi_offset s4, -48691; RV64IXQCCMP-NEXT: .cfi_offset s5, -56692; RV64IXQCCMP-NEXT: .cfi_offset s6, -64693; RV64IXQCCMP-NEXT: .cfi_offset s7, -72694; RV64IXQCCMP-NEXT: .cfi_offset s8, -80695; RV64IXQCCMP-NEXT: .cfi_offset s9, -88696; RV64IXQCCMP-NEXT: .cfi_offset s10, -96697; RV64IXQCCMP-NEXT: .cfi_offset s11, -104698; RV64IXQCCMP-NEXT: addi sp, sp, -128699; RV64IXQCCMP-NEXT: .cfi_def_cfa_offset 288700; RV64IXQCCMP-NEXT: lui s0, %hi(var)701; RV64IXQCCMP-NEXT: addi s0, s0, %lo(var)702; RV64IXQCCMP-NEXT: lw a0, 0(s0)703; RV64IXQCCMP-NEXT: sd a0, 168(sp) # 8-byte Folded Spill704; RV64IXQCCMP-NEXT: lw a0, 4(s0)705; RV64IXQCCMP-NEXT: sd a0, 160(sp) # 8-byte Folded Spill706; RV64IXQCCMP-NEXT: lw a0, 8(s0)707; RV64IXQCCMP-NEXT: sd a0, 152(sp) # 8-byte Folded Spill708; RV64IXQCCMP-NEXT: lw a0, 12(s0)709; RV64IXQCCMP-NEXT: sd a0, 144(sp) # 8-byte Folded Spill710; RV64IXQCCMP-NEXT: lw a0, 16(s0)711; RV64IXQCCMP-NEXT: sd a0, 136(sp) # 8-byte Folded Spill712; RV64IXQCCMP-NEXT: lw a0, 20(s0)713; RV64IXQCCMP-NEXT: sd a0, 128(sp) # 8-byte Folded Spill714; RV64IXQCCMP-NEXT: lw a0, 24(s0)715; RV64IXQCCMP-NEXT: sd a0, 120(sp) # 8-byte Folded Spill716; RV64IXQCCMP-NEXT: lw a0, 28(s0)717; RV64IXQCCMP-NEXT: sd a0, 112(sp) # 8-byte Folded Spill718; RV64IXQCCMP-NEXT: lw a0, 32(s0)719; RV64IXQCCMP-NEXT: sd a0, 104(sp) # 8-byte Folded Spill720; RV64IXQCCMP-NEXT: lw a0, 36(s0)721; RV64IXQCCMP-NEXT: sd a0, 96(sp) # 8-byte Folded Spill722; RV64IXQCCMP-NEXT: lw a0, 40(s0)723; RV64IXQCCMP-NEXT: sd a0, 88(sp) # 8-byte Folded Spill724; RV64IXQCCMP-NEXT: lw a0, 44(s0)725; RV64IXQCCMP-NEXT: sd a0, 80(sp) # 8-byte Folded Spill726; RV64IXQCCMP-NEXT: lw a0, 48(s0)727; RV64IXQCCMP-NEXT: sd a0, 72(sp) # 8-byte Folded Spill728; RV64IXQCCMP-NEXT: lw a0, 52(s0)729; RV64IXQCCMP-NEXT: sd a0, 64(sp) # 8-byte Folded Spill730; RV64IXQCCMP-NEXT: lw a0, 56(s0)731; RV64IXQCCMP-NEXT: sd a0, 56(sp) # 8-byte Folded Spill732; RV64IXQCCMP-NEXT: lw a0, 60(s0)733; RV64IXQCCMP-NEXT: sd a0, 48(sp) # 8-byte Folded Spill734; RV64IXQCCMP-NEXT: lw a0, 64(s0)735; RV64IXQCCMP-NEXT: sd a0, 40(sp) # 8-byte Folded Spill736; RV64IXQCCMP-NEXT: lw a0, 68(s0)737; RV64IXQCCMP-NEXT: sd a0, 32(sp) # 8-byte Folded Spill738; RV64IXQCCMP-NEXT: lw a0, 72(s0)739; RV64IXQCCMP-NEXT: sd a0, 24(sp) # 8-byte Folded Spill740; RV64IXQCCMP-NEXT: lw a0, 76(s0)741; RV64IXQCCMP-NEXT: sd a0, 16(sp) # 8-byte Folded Spill742; RV64IXQCCMP-NEXT: lw a0, 80(s0)743; RV64IXQCCMP-NEXT: sd a0, 8(sp) # 8-byte Folded Spill744; RV64IXQCCMP-NEXT: lw s1, 84(s0)745; RV64IXQCCMP-NEXT: lw s2, 88(s0)746; RV64IXQCCMP-NEXT: lw s3, 92(s0)747; RV64IXQCCMP-NEXT: lw s4, 96(s0)748; RV64IXQCCMP-NEXT: lw s5, 100(s0)749; RV64IXQCCMP-NEXT: lw s6, 104(s0)750; RV64IXQCCMP-NEXT: lw s7, 108(s0)751; RV64IXQCCMP-NEXT: lw s8, 112(s0)752; RV64IXQCCMP-NEXT: lw s9, 116(s0)753; RV64IXQCCMP-NEXT: lw s10, 120(s0)754; RV64IXQCCMP-NEXT: lw s11, 124(s0)755; RV64IXQCCMP-NEXT: call callee756; RV64IXQCCMP-NEXT: sw s11, 124(s0)757; RV64IXQCCMP-NEXT: sw s10, 120(s0)758; RV64IXQCCMP-NEXT: sw s9, 116(s0)759; RV64IXQCCMP-NEXT: sw s8, 112(s0)760; RV64IXQCCMP-NEXT: sw s7, 108(s0)761; RV64IXQCCMP-NEXT: sw s6, 104(s0)762; RV64IXQCCMP-NEXT: sw s5, 100(s0)763; RV64IXQCCMP-NEXT: sw s4, 96(s0)764; RV64IXQCCMP-NEXT: sw s3, 92(s0)765; RV64IXQCCMP-NEXT: sw s2, 88(s0)766; RV64IXQCCMP-NEXT: sw s1, 84(s0)767; RV64IXQCCMP-NEXT: ld a0, 8(sp) # 8-byte Folded Reload768; RV64IXQCCMP-NEXT: sw a0, 80(s0)769; RV64IXQCCMP-NEXT: ld a0, 16(sp) # 8-byte Folded Reload770; RV64IXQCCMP-NEXT: sw a0, 76(s0)771; RV64IXQCCMP-NEXT: ld a0, 24(sp) # 8-byte Folded Reload772; RV64IXQCCMP-NEXT: sw a0, 72(s0)773; RV64IXQCCMP-NEXT: ld a0, 32(sp) # 8-byte Folded Reload774; RV64IXQCCMP-NEXT: sw a0, 68(s0)775; RV64IXQCCMP-NEXT: ld a0, 40(sp) # 8-byte Folded Reload776; RV64IXQCCMP-NEXT: sw a0, 64(s0)777; RV64IXQCCMP-NEXT: ld a0, 48(sp) # 8-byte Folded Reload778; RV64IXQCCMP-NEXT: sw a0, 60(s0)779; RV64IXQCCMP-NEXT: ld a0, 56(sp) # 8-byte Folded Reload780; RV64IXQCCMP-NEXT: sw a0, 56(s0)781; RV64IXQCCMP-NEXT: ld a0, 64(sp) # 8-byte Folded Reload782; RV64IXQCCMP-NEXT: sw a0, 52(s0)783; RV64IXQCCMP-NEXT: ld a0, 72(sp) # 8-byte Folded Reload784; RV64IXQCCMP-NEXT: sw a0, 48(s0)785; RV64IXQCCMP-NEXT: ld a0, 80(sp) # 8-byte Folded Reload786; RV64IXQCCMP-NEXT: sw a0, 44(s0)787; RV64IXQCCMP-NEXT: ld a0, 88(sp) # 8-byte Folded Reload788; RV64IXQCCMP-NEXT: sw a0, 40(s0)789; RV64IXQCCMP-NEXT: ld a0, 96(sp) # 8-byte Folded Reload790; RV64IXQCCMP-NEXT: sw a0, 36(s0)791; RV64IXQCCMP-NEXT: ld a0, 104(sp) # 8-byte Folded Reload792; RV64IXQCCMP-NEXT: sw a0, 32(s0)793; RV64IXQCCMP-NEXT: ld a0, 112(sp) # 8-byte Folded Reload794; RV64IXQCCMP-NEXT: sw a0, 28(s0)795; RV64IXQCCMP-NEXT: ld a0, 120(sp) # 8-byte Folded Reload796; RV64IXQCCMP-NEXT: sw a0, 24(s0)797; RV64IXQCCMP-NEXT: ld a0, 128(sp) # 8-byte Folded Reload798; RV64IXQCCMP-NEXT: sw a0, 20(s0)799; RV64IXQCCMP-NEXT: ld a0, 136(sp) # 8-byte Folded Reload800; RV64IXQCCMP-NEXT: sw a0, 16(s0)801; RV64IXQCCMP-NEXT: ld a0, 144(sp) # 8-byte Folded Reload802; RV64IXQCCMP-NEXT: sw a0, 12(s0)803; RV64IXQCCMP-NEXT: ld a0, 152(sp) # 8-byte Folded Reload804; RV64IXQCCMP-NEXT: sw a0, 8(s0)805; RV64IXQCCMP-NEXT: ld a0, 160(sp) # 8-byte Folded Reload806; RV64IXQCCMP-NEXT: sw a0, 4(s0)807; RV64IXQCCMP-NEXT: ld a0, 168(sp) # 8-byte Folded Reload808; RV64IXQCCMP-NEXT: sw a0, 0(s0)809; RV64IXQCCMP-NEXT: addi sp, sp, 128810; RV64IXQCCMP-NEXT: .cfi_def_cfa_offset 160811; RV64IXQCCMP-NEXT: qc.cm.popret {ra, s0-s11}, 160812;813; RV64IXQCCMP-WITH-FP-LABEL: caller:814; RV64IXQCCMP-WITH-FP: # %bb.0:815; RV64IXQCCMP-WITH-FP-NEXT: qc.cm.pushfp {ra, s0-s11}, -160816; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 160817; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset ra, -8818; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s0, -16819; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s1, -24820; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s2, -32821; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s3, -40822; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s4, -48823; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s5, -56824; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s6, -64825; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s7, -72826; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s8, -80827; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s9, -88828; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s10, -96829; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s11, -104830; RV64IXQCCMP-WITH-FP-NEXT: addi sp, sp, -128831; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 288832; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 0833; RV64IXQCCMP-WITH-FP-NEXT: lui s1, %hi(var)834; RV64IXQCCMP-WITH-FP-NEXT: addi s1, s1, %lo(var)835; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 0(s1)836; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -120(s0) # 8-byte Folded Spill837; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 4(s1)838; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -128(s0) # 8-byte Folded Spill839; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 8(s1)840; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -136(s0) # 8-byte Folded Spill841; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 12(s1)842; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -144(s0) # 8-byte Folded Spill843; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 16(s1)844; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -152(s0) # 8-byte Folded Spill845; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 20(s1)846; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -160(s0) # 8-byte Folded Spill847; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 24(s1)848; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -168(s0) # 8-byte Folded Spill849; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 28(s1)850; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -176(s0) # 8-byte Folded Spill851; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 32(s1)852; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -184(s0) # 8-byte Folded Spill853; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 36(s1)854; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -192(s0) # 8-byte Folded Spill855; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 40(s1)856; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -200(s0) # 8-byte Folded Spill857; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 44(s1)858; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -208(s0) # 8-byte Folded Spill859; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 48(s1)860; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -216(s0) # 8-byte Folded Spill861; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 52(s1)862; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -224(s0) # 8-byte Folded Spill863; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 56(s1)864; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -232(s0) # 8-byte Folded Spill865; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 60(s1)866; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -240(s0) # 8-byte Folded Spill867; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 64(s1)868; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -248(s0) # 8-byte Folded Spill869; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 68(s1)870; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -256(s0) # 8-byte Folded Spill871; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 72(s1)872; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -264(s0) # 8-byte Folded Spill873; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 76(s1)874; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -272(s0) # 8-byte Folded Spill875; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 80(s1)876; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -280(s0) # 8-byte Folded Spill877; RV64IXQCCMP-WITH-FP-NEXT: lw a0, 84(s1)878; RV64IXQCCMP-WITH-FP-NEXT: sd a0, -288(s0) # 8-byte Folded Spill879; RV64IXQCCMP-WITH-FP-NEXT: lw s4, 88(s1)880; RV64IXQCCMP-WITH-FP-NEXT: lw s5, 92(s1)881; RV64IXQCCMP-WITH-FP-NEXT: lw s6, 96(s1)882; RV64IXQCCMP-WITH-FP-NEXT: lw s7, 100(s1)883; RV64IXQCCMP-WITH-FP-NEXT: lw s8, 104(s1)884; RV64IXQCCMP-WITH-FP-NEXT: lw s9, 108(s1)885; RV64IXQCCMP-WITH-FP-NEXT: lw s10, 112(s1)886; RV64IXQCCMP-WITH-FP-NEXT: lw s11, 116(s1)887; RV64IXQCCMP-WITH-FP-NEXT: lw s2, 120(s1)888; RV64IXQCCMP-WITH-FP-NEXT: lw s3, 124(s1)889; RV64IXQCCMP-WITH-FP-NEXT: call callee890; RV64IXQCCMP-WITH-FP-NEXT: sw s3, 124(s1)891; RV64IXQCCMP-WITH-FP-NEXT: sw s2, 120(s1)892; RV64IXQCCMP-WITH-FP-NEXT: sw s11, 116(s1)893; RV64IXQCCMP-WITH-FP-NEXT: sw s10, 112(s1)894; RV64IXQCCMP-WITH-FP-NEXT: sw s9, 108(s1)895; RV64IXQCCMP-WITH-FP-NEXT: sw s8, 104(s1)896; RV64IXQCCMP-WITH-FP-NEXT: sw s7, 100(s1)897; RV64IXQCCMP-WITH-FP-NEXT: sw s6, 96(s1)898; RV64IXQCCMP-WITH-FP-NEXT: sw s5, 92(s1)899; RV64IXQCCMP-WITH-FP-NEXT: sw s4, 88(s1)900; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -288(s0) # 8-byte Folded Reload901; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 84(s1)902; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -280(s0) # 8-byte Folded Reload903; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 80(s1)904; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -272(s0) # 8-byte Folded Reload905; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 76(s1)906; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -264(s0) # 8-byte Folded Reload907; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 72(s1)908; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -256(s0) # 8-byte Folded Reload909; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 68(s1)910; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -248(s0) # 8-byte Folded Reload911; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 64(s1)912; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -240(s0) # 8-byte Folded Reload913; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 60(s1)914; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -232(s0) # 8-byte Folded Reload915; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 56(s1)916; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -224(s0) # 8-byte Folded Reload917; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 52(s1)918; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -216(s0) # 8-byte Folded Reload919; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 48(s1)920; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -208(s0) # 8-byte Folded Reload921; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 44(s1)922; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -200(s0) # 8-byte Folded Reload923; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 40(s1)924; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -192(s0) # 8-byte Folded Reload925; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 36(s1)926; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -184(s0) # 8-byte Folded Reload927; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 32(s1)928; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -176(s0) # 8-byte Folded Reload929; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 28(s1)930; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -168(s0) # 8-byte Folded Reload931; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 24(s1)932; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -160(s0) # 8-byte Folded Reload933; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 20(s1)934; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -152(s0) # 8-byte Folded Reload935; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 16(s1)936; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -144(s0) # 8-byte Folded Reload937; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 12(s1)938; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -136(s0) # 8-byte Folded Reload939; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 8(s1)940; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -128(s0) # 8-byte Folded Reload941; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 4(s1)942; RV64IXQCCMP-WITH-FP-NEXT: ld a0, -120(s0) # 8-byte Folded Reload943; RV64IXQCCMP-WITH-FP-NEXT: sw a0, 0(s1)944; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa sp, 288945; RV64IXQCCMP-WITH-FP-NEXT: addi sp, sp, 128946; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 160947; RV64IXQCCMP-WITH-FP-NEXT: qc.cm.popret {ra, s0-s11}, 160948 %val = load [32 x i32], ptr @var949 call void @callee()950 store volatile [32 x i32] %val, ptr @var951 ret void952}953 954; This function tests if the stack size is correctly calculated when955; callee-saved registers are not a sequential list from $ra956define void @foo() {957; RV32IXQCCMP-LABEL: foo:958; RV32IXQCCMP: # %bb.0: # %entry959; RV32IXQCCMP-NEXT: qc.cm.push {ra, s0-s4}, -32960; RV32IXQCCMP-NEXT: .cfi_def_cfa_offset 32961; RV32IXQCCMP-NEXT: .cfi_offset s4, -24962; RV32IXQCCMP-NEXT: #APP963; RV32IXQCCMP-NEXT: li s4, 0964; RV32IXQCCMP-NEXT: #NO_APP965; RV32IXQCCMP-NEXT: qc.cm.popret {ra, s0-s4}, 32966;967; RV32IXQCCMP-WITH-FP-LABEL: foo:968; RV32IXQCCMP-WITH-FP: # %bb.0: # %entry969; RV32IXQCCMP-WITH-FP-NEXT: qc.cm.pushfp {ra, s0-s4}, -32970; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 32971; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset ra, -4972; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s0, -8973; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s4, -24974; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 0975; RV32IXQCCMP-WITH-FP-NEXT: #APP976; RV32IXQCCMP-WITH-FP-NEXT: li s4, 0977; RV32IXQCCMP-WITH-FP-NEXT: #NO_APP978; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa sp, 32979; RV32IXQCCMP-WITH-FP-NEXT: qc.cm.popret {ra, s0-s4}, 32980;981; RV64IXQCCMP-LABEL: foo:982; RV64IXQCCMP: # %bb.0: # %entry983; RV64IXQCCMP-NEXT: qc.cm.push {ra, s0-s4}, -48984; RV64IXQCCMP-NEXT: .cfi_def_cfa_offset 48985; RV64IXQCCMP-NEXT: .cfi_offset s4, -48986; RV64IXQCCMP-NEXT: #APP987; RV64IXQCCMP-NEXT: li s4, 0988; RV64IXQCCMP-NEXT: #NO_APP989; RV64IXQCCMP-NEXT: qc.cm.popret {ra, s0-s4}, 48990;991; RV64IXQCCMP-WITH-FP-LABEL: foo:992; RV64IXQCCMP-WITH-FP: # %bb.0: # %entry993; RV64IXQCCMP-WITH-FP-NEXT: qc.cm.pushfp {ra, s0-s4}, -48994; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 48995; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset ra, -8996; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s0, -16997; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s4, -48998; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 0999; RV64IXQCCMP-WITH-FP-NEXT: #APP1000; RV64IXQCCMP-WITH-FP-NEXT: li s4, 01001; RV64IXQCCMP-WITH-FP-NEXT: #NO_APP1002; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa sp, 481003; RV64IXQCCMP-WITH-FP-NEXT: qc.cm.popret {ra, s0-s4}, 481004entry:1005 tail call void asm sideeffect "li s4, 0", "~{s4}"()1006 ret void1007}1008 1009; Check .cfi_offset of s11 is correct for Zcmp.1010define void @bar() {1011; RV32IXQCCMP-LABEL: bar:1012; RV32IXQCCMP: # %bb.0: # %entry1013; RV32IXQCCMP-NEXT: qc.cm.push {ra, s0-s11}, -641014; RV32IXQCCMP-NEXT: .cfi_def_cfa_offset 641015; RV32IXQCCMP-NEXT: .cfi_offset s11, -521016; RV32IXQCCMP-NEXT: #APP1017; RV32IXQCCMP-NEXT: li s11, 01018; RV32IXQCCMP-NEXT: #NO_APP1019; RV32IXQCCMP-NEXT: qc.cm.popret {ra, s0-s11}, 641020;1021; RV32IXQCCMP-WITH-FP-LABEL: bar:1022; RV32IXQCCMP-WITH-FP: # %bb.0: # %entry1023; RV32IXQCCMP-WITH-FP-NEXT: qc.cm.pushfp {ra, s0-s11}, -641024; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 641025; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset ra, -41026; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s0, -81027; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s11, -521028; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 01029; RV32IXQCCMP-WITH-FP-NEXT: #APP1030; RV32IXQCCMP-WITH-FP-NEXT: li s11, 01031; RV32IXQCCMP-WITH-FP-NEXT: #NO_APP1032; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa sp, 641033; RV32IXQCCMP-WITH-FP-NEXT: qc.cm.popret {ra, s0-s11}, 641034;1035; RV64IXQCCMP-LABEL: bar:1036; RV64IXQCCMP: # %bb.0: # %entry1037; RV64IXQCCMP-NEXT: qc.cm.push {ra, s0-s11}, -1121038; RV64IXQCCMP-NEXT: .cfi_def_cfa_offset 1121039; RV64IXQCCMP-NEXT: .cfi_offset s11, -1041040; RV64IXQCCMP-NEXT: #APP1041; RV64IXQCCMP-NEXT: li s11, 01042; RV64IXQCCMP-NEXT: #NO_APP1043; RV64IXQCCMP-NEXT: qc.cm.popret {ra, s0-s11}, 1121044;1045; RV64IXQCCMP-WITH-FP-LABEL: bar:1046; RV64IXQCCMP-WITH-FP: # %bb.0: # %entry1047; RV64IXQCCMP-WITH-FP-NEXT: qc.cm.pushfp {ra, s0-s11}, -1121048; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 1121049; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset ra, -81050; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s0, -161051; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s11, -1041052; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 01053; RV64IXQCCMP-WITH-FP-NEXT: #APP1054; RV64IXQCCMP-WITH-FP-NEXT: li s11, 01055; RV64IXQCCMP-WITH-FP-NEXT: #NO_APP1056; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa sp, 1121057; RV64IXQCCMP-WITH-FP-NEXT: qc.cm.popret {ra, s0-s11}, 1121058entry:1059 tail call void asm sideeffect "li s11, 0", "~{s11}"()1060 ret void1061}1062 1063define void @varargs(...) {1064; RV32IXQCCMP-LABEL: varargs:1065; RV32IXQCCMP: # %bb.0:1066; RV32IXQCCMP-NEXT: addi sp, sp, -481067; RV32IXQCCMP-NEXT: .cfi_def_cfa_offset 481068; RV32IXQCCMP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1069; RV32IXQCCMP-NEXT: .cfi_offset ra, -361070; RV32IXQCCMP-NEXT: sw a4, 32(sp)1071; RV32IXQCCMP-NEXT: sw a5, 36(sp)1072; RV32IXQCCMP-NEXT: sw a6, 40(sp)1073; RV32IXQCCMP-NEXT: sw a7, 44(sp)1074; RV32IXQCCMP-NEXT: sw a0, 16(sp)1075; RV32IXQCCMP-NEXT: sw a1, 20(sp)1076; RV32IXQCCMP-NEXT: sw a2, 24(sp)1077; RV32IXQCCMP-NEXT: sw a3, 28(sp)1078; RV32IXQCCMP-NEXT: call callee1079; RV32IXQCCMP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload1080; RV32IXQCCMP-NEXT: .cfi_restore ra1081; RV32IXQCCMP-NEXT: addi sp, sp, 481082; RV32IXQCCMP-NEXT: .cfi_def_cfa_offset 01083; RV32IXQCCMP-NEXT: ret1084;1085; RV32IXQCCMP-WITH-FP-LABEL: varargs:1086; RV32IXQCCMP-WITH-FP: # %bb.0:1087; RV32IXQCCMP-WITH-FP-NEXT: addi sp, sp, -481088; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 481089; RV32IXQCCMP-WITH-FP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill1090; RV32IXQCCMP-WITH-FP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill1091; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset ra, -361092; RV32IXQCCMP-WITH-FP-NEXT: .cfi_offset s0, -401093; RV32IXQCCMP-WITH-FP-NEXT: addi s0, sp, 161094; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 321095; RV32IXQCCMP-WITH-FP-NEXT: sw a4, 16(s0)1096; RV32IXQCCMP-WITH-FP-NEXT: sw a5, 20(s0)1097; RV32IXQCCMP-WITH-FP-NEXT: sw a6, 24(s0)1098; RV32IXQCCMP-WITH-FP-NEXT: sw a7, 28(s0)1099; RV32IXQCCMP-WITH-FP-NEXT: sw a0, 0(s0)1100; RV32IXQCCMP-WITH-FP-NEXT: sw a1, 4(s0)1101; RV32IXQCCMP-WITH-FP-NEXT: sw a2, 8(s0)1102; RV32IXQCCMP-WITH-FP-NEXT: sw a3, 12(s0)1103; RV32IXQCCMP-WITH-FP-NEXT: call callee1104; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa sp, 481105; RV32IXQCCMP-WITH-FP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload1106; RV32IXQCCMP-WITH-FP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload1107; RV32IXQCCMP-WITH-FP-NEXT: .cfi_restore ra1108; RV32IXQCCMP-WITH-FP-NEXT: .cfi_restore s01109; RV32IXQCCMP-WITH-FP-NEXT: addi sp, sp, 481110; RV32IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 01111; RV32IXQCCMP-WITH-FP-NEXT: ret1112;1113; RV64IXQCCMP-LABEL: varargs:1114; RV64IXQCCMP: # %bb.0:1115; RV64IXQCCMP-NEXT: addi sp, sp, -801116; RV64IXQCCMP-NEXT: .cfi_def_cfa_offset 801117; RV64IXQCCMP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1118; RV64IXQCCMP-NEXT: .cfi_offset ra, -721119; RV64IXQCCMP-NEXT: sd a4, 48(sp)1120; RV64IXQCCMP-NEXT: sd a5, 56(sp)1121; RV64IXQCCMP-NEXT: sd a6, 64(sp)1122; RV64IXQCCMP-NEXT: sd a7, 72(sp)1123; RV64IXQCCMP-NEXT: sd a0, 16(sp)1124; RV64IXQCCMP-NEXT: sd a1, 24(sp)1125; RV64IXQCCMP-NEXT: sd a2, 32(sp)1126; RV64IXQCCMP-NEXT: sd a3, 40(sp)1127; RV64IXQCCMP-NEXT: call callee1128; RV64IXQCCMP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload1129; RV64IXQCCMP-NEXT: .cfi_restore ra1130; RV64IXQCCMP-NEXT: addi sp, sp, 801131; RV64IXQCCMP-NEXT: .cfi_def_cfa_offset 01132; RV64IXQCCMP-NEXT: ret1133;1134; RV64IXQCCMP-WITH-FP-LABEL: varargs:1135; RV64IXQCCMP-WITH-FP: # %bb.0:1136; RV64IXQCCMP-WITH-FP-NEXT: addi sp, sp, -801137; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 801138; RV64IXQCCMP-WITH-FP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill1139; RV64IXQCCMP-WITH-FP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill1140; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset ra, -721141; RV64IXQCCMP-WITH-FP-NEXT: .cfi_offset s0, -801142; RV64IXQCCMP-WITH-FP-NEXT: addi s0, sp, 161143; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa s0, 641144; RV64IXQCCMP-WITH-FP-NEXT: sd a4, 32(s0)1145; RV64IXQCCMP-WITH-FP-NEXT: sd a5, 40(s0)1146; RV64IXQCCMP-WITH-FP-NEXT: sd a6, 48(s0)1147; RV64IXQCCMP-WITH-FP-NEXT: sd a7, 56(s0)1148; RV64IXQCCMP-WITH-FP-NEXT: sd a0, 0(s0)1149; RV64IXQCCMP-WITH-FP-NEXT: sd a1, 8(s0)1150; RV64IXQCCMP-WITH-FP-NEXT: sd a2, 16(s0)1151; RV64IXQCCMP-WITH-FP-NEXT: sd a3, 24(s0)1152; RV64IXQCCMP-WITH-FP-NEXT: call callee1153; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa sp, 801154; RV64IXQCCMP-WITH-FP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload1155; RV64IXQCCMP-WITH-FP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload1156; RV64IXQCCMP-WITH-FP-NEXT: .cfi_restore ra1157; RV64IXQCCMP-WITH-FP-NEXT: .cfi_restore s01158; RV64IXQCCMP-WITH-FP-NEXT: addi sp, sp, 801159; RV64IXQCCMP-WITH-FP-NEXT: .cfi_def_cfa_offset 01160; RV64IXQCCMP-WITH-FP-NEXT: ret1161 call void @callee()1162 ret void1163}1164