1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2; RUN: llc -mtriple=riscv32 -mattr=+zhinx -verify-machineinstrs < %s \ 3; RUN: | FileCheck -check-prefix=ZHINX32 %s 4; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs < %s \ 5; RUN: | FileCheck -check-prefix=ZHINX64 %s 6; RUN: llc -mtriple=riscv32 -mattr=+zfinx -verify-machineinstrs < %s \ 7; RUN: | FileCheck -check-prefix=ZFINX32 %s 8; RUN: llc -mtriple=riscv64 -mattr=+zfinx -verify-machineinstrs < %s \ 9; RUN: | FileCheck -check-prefix=ZFINX64 %s 10; RUN: llc -mtriple=riscv32 -mattr=+zdinx -verify-machineinstrs < %s \ 11; RUN: | FileCheck -check-prefix=ZDINX32 %s 12; RUN: llc -mtriple=riscv64 -mattr=+zdinx -verify-machineinstrs < %s \ 13; RUN: | FileCheck -check-prefix=ZDINX64 %s 14 15define half @caller_half(half %x) nounwind { 16; ZHINX32-LABEL: caller_half: 17; ZHINX32: # %bb.0: # %entry 18; ZHINX32-NEXT: tail h 19; 20; ZHINX64-LABEL: caller_half: 21; ZHINX64: # %bb.0: # %entry 22; ZHINX64-NEXT: tail h 23; 24; ZFINX32-LABEL: caller_half: 25; ZFINX32: # %bb.0: # %entry 26; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10 27; ZFINX32-NEXT: lui a1, 1048560 28; ZFINX32-NEXT: or a0, a0, a1 29; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10 30; ZFINX32-NEXT: tail h 31; 32; ZFINX64-LABEL: caller_half: 33; ZFINX64: # %bb.0: # %entry 34; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10 35; ZFINX64-NEXT: lui a1, 1048560 36; ZFINX64-NEXT: or a0, a0, a1 37; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10 38; ZFINX64-NEXT: tail h 39; 40; ZDINX32-LABEL: caller_half: 41; ZDINX32: # %bb.0: # %entry 42; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10 43; ZDINX32-NEXT: lui a1, 1048560 44; ZDINX32-NEXT: or a0, a0, a1 45; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10 46; ZDINX32-NEXT: tail h 47; 48; ZDINX64-LABEL: caller_half: 49; ZDINX64: # %bb.0: # %entry 50; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10 51; ZDINX64-NEXT: lui a1, 1048560 52; ZDINX64-NEXT: or a0, a0, a1 53; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10 54; ZDINX64-NEXT: tail h 55entry: 56 %0 = tail call fastcc half @h(half %x) 57 ret half %0 58} 59 60define internal fastcc half @h(half %x) nounwind { 61; ZHINX32-LABEL: h: 62; ZHINX32: # %bb.0: 63; ZHINX32-NEXT: ret 64; 65; ZHINX64-LABEL: h: 66; ZHINX64: # %bb.0: 67; ZHINX64-NEXT: ret 68; 69; ZFINX32-LABEL: h: 70; ZFINX32: # %bb.0: 71; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10 72; ZFINX32-NEXT: lui a1, 1048560 73; ZFINX32-NEXT: or a0, a0, a1 74; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10 75; ZFINX32-NEXT: ret 76; 77; ZFINX64-LABEL: h: 78; ZFINX64: # %bb.0: 79; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10 80; ZFINX64-NEXT: lui a1, 1048560 81; ZFINX64-NEXT: or a0, a0, a1 82; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10 83; ZFINX64-NEXT: ret 84; 85; ZDINX32-LABEL: h: 86; ZDINX32: # %bb.0: 87; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10 88; ZDINX32-NEXT: lui a1, 1048560 89; ZDINX32-NEXT: or a0, a0, a1 90; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10 91; ZDINX32-NEXT: ret 92; 93; ZDINX64-LABEL: h: 94; ZDINX64: # %bb.0: 95; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10 96; ZDINX64-NEXT: lui a1, 1048560 97; ZDINX64-NEXT: or a0, a0, a1 98; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10 99; ZDINX64-NEXT: ret 100 ret half %x 101} 102 103define float @caller_float(float %x) nounwind { 104; ZHINX32-LABEL: caller_float: 105; ZHINX32: # %bb.0: # %entry 106; ZHINX32-NEXT: tail f 107; 108; ZHINX64-LABEL: caller_float: 109; ZHINX64: # %bb.0: # %entry 110; ZHINX64-NEXT: tail f 111; 112; ZFINX32-LABEL: caller_float: 113; ZFINX32: # %bb.0: # %entry 114; ZFINX32-NEXT: tail f 115; 116; ZFINX64-LABEL: caller_float: 117; ZFINX64: # %bb.0: # %entry 118; ZFINX64-NEXT: tail f 119; 120; ZDINX32-LABEL: caller_float: 121; ZDINX32: # %bb.0: # %entry 122; ZDINX32-NEXT: tail f 123; 124; ZDINX64-LABEL: caller_float: 125; ZDINX64: # %bb.0: # %entry 126; ZDINX64-NEXT: tail f 127entry: 128 %0 = tail call fastcc float @f(float %x) 129 ret float %0 130} 131 132define internal fastcc float @f(float %x) nounwind { 133; ZHINX32-LABEL: f: 134; ZHINX32: # %bb.0: # %entry 135; ZHINX32-NEXT: ret 136; 137; ZHINX64-LABEL: f: 138; ZHINX64: # %bb.0: # %entry 139; ZHINX64-NEXT: ret 140; 141; ZFINX32-LABEL: f: 142; ZFINX32: # %bb.0: # %entry 143; ZFINX32-NEXT: ret 144; 145; ZFINX64-LABEL: f: 146; ZFINX64: # %bb.0: # %entry 147; ZFINX64-NEXT: ret 148; 149; ZDINX32-LABEL: f: 150; ZDINX32: # %bb.0: # %entry 151; ZDINX32-NEXT: ret 152; 153; ZDINX64-LABEL: f: 154; ZDINX64: # %bb.0: # %entry 155; ZDINX64-NEXT: ret 156entry: 157 ret float %x 158} 159 160define double @caller_double(double %x) nounwind { 161; ZHINX32-LABEL: caller_double: 162; ZHINX32: # %bb.0: # %entry 163; ZHINX32-NEXT: tail d 164; 165; ZHINX64-LABEL: caller_double: 166; ZHINX64: # %bb.0: # %entry 167; ZHINX64-NEXT: tail d 168; 169; ZFINX32-LABEL: caller_double: 170; ZFINX32: # %bb.0: # %entry 171; ZFINX32-NEXT: tail d 172; 173; ZFINX64-LABEL: caller_double: 174; ZFINX64: # %bb.0: # %entry 175; ZFINX64-NEXT: tail d 176; 177; ZDINX32-LABEL: caller_double: 178; ZDINX32: # %bb.0: # %entry 179; ZDINX32-NEXT: addi sp, sp, -16 180; ZDINX32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 181; ZDINX32-NEXT: sw a0, 0(sp) 182; ZDINX32-NEXT: sw a1, 4(sp) 183; ZDINX32-NEXT: call d 184; ZDINX32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 185; ZDINX32-NEXT: addi sp, sp, 16 186; ZDINX32-NEXT: ret 187; 188; ZDINX64-LABEL: caller_double: 189; ZDINX64: # %bb.0: # %entry 190; ZDINX64-NEXT: tail d 191entry: 192 %0 = tail call fastcc double @d(double %x) 193 ret double %0 194} 195 196define internal fastcc double @d(double %x) nounwind { 197; ZHINX32-LABEL: d: 198; ZHINX32: # %bb.0: # %entry 199; ZHINX32-NEXT: ret 200; 201; ZHINX64-LABEL: d: 202; ZHINX64: # %bb.0: # %entry 203; ZHINX64-NEXT: ret 204; 205; ZFINX32-LABEL: d: 206; ZFINX32: # %bb.0: # %entry 207; ZFINX32-NEXT: ret 208; 209; ZFINX64-LABEL: d: 210; ZFINX64: # %bb.0: # %entry 211; ZFINX64-NEXT: ret 212; 213; ZDINX32-LABEL: d: 214; ZDINX32: # %bb.0: # %entry 215; ZDINX32-NEXT: lw a0, 0(sp) 216; ZDINX32-NEXT: lw a1, 4(sp) 217; ZDINX32-NEXT: ret 218; 219; ZDINX64-LABEL: d: 220; ZDINX64: # %bb.0: # %entry 221; ZDINX64-NEXT: ret 222entry: 223 ret double %x 224} 225 226define fastcc half @callee_half_32(<32 x half> %A) nounwind { 227; ZHINX32-LABEL: callee_half_32: 228; ZHINX32: # %bb.0: 229; ZHINX32-NEXT: ret 230; 231; ZHINX64-LABEL: callee_half_32: 232; ZHINX64: # %bb.0: 233; ZHINX64-NEXT: ret 234; 235; ZFINX32-LABEL: callee_half_32: 236; ZFINX32: # %bb.0: 237; ZFINX32-NEXT: lui a1, 1048560 238; ZFINX32-NEXT: or a0, a0, a1 239; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10 240; ZFINX32-NEXT: ret 241; 242; ZFINX64-LABEL: callee_half_32: 243; ZFINX64: # %bb.0: 244; ZFINX64-NEXT: lui a1, 1048560 245; ZFINX64-NEXT: or a0, a0, a1 246; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10 247; ZFINX64-NEXT: ret 248; 249; ZDINX32-LABEL: callee_half_32: 250; ZDINX32: # %bb.0: 251; ZDINX32-NEXT: lui a1, 1048560 252; ZDINX32-NEXT: or a0, a0, a1 253; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10 254; ZDINX32-NEXT: ret 255; 256; ZDINX64-LABEL: callee_half_32: 257; ZDINX64: # %bb.0: 258; ZDINX64-NEXT: lui a1, 1048560 259; ZDINX64-NEXT: or a0, a0, a1 260; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10 261; ZDINX64-NEXT: ret 262 %B = extractelement <32 x half> %A, i32 0 263 ret half %B 264} 265 266define half @caller_half_32(<32 x half> %A) nounwind { 267; ZHINX32-LABEL: caller_half_32: 268; ZHINX32: # %bb.0: 269; ZHINX32-NEXT: addi sp, sp, -112 270; ZHINX32-NEXT: sw ra, 108(sp) # 4-byte Folded Spill 271; ZHINX32-NEXT: sw s0, 104(sp) # 4-byte Folded Spill 272; ZHINX32-NEXT: sw s1, 100(sp) # 4-byte Folded Spill 273; ZHINX32-NEXT: sw s2, 96(sp) # 4-byte Folded Spill 274; ZHINX32-NEXT: sw s3, 92(sp) # 4-byte Folded Spill 275; ZHINX32-NEXT: sw s4, 88(sp) # 4-byte Folded Spill 276; ZHINX32-NEXT: sw s5, 84(sp) # 4-byte Folded Spill 277; ZHINX32-NEXT: sw s6, 80(sp) # 4-byte Folded Spill 278; ZHINX32-NEXT: sw s7, 76(sp) # 4-byte Folded Spill 279; ZHINX32-NEXT: sw s8, 72(sp) # 4-byte Folded Spill 280; ZHINX32-NEXT: sw s9, 68(sp) # 4-byte Folded Spill 281; ZHINX32-NEXT: sw s10, 64(sp) # 4-byte Folded Spill 282; ZHINX32-NEXT: sw s11, 60(sp) # 4-byte Folded Spill 283; ZHINX32-NEXT: sh a7, 58(sp) # 2-byte Folded Spill 284; ZHINX32-NEXT: sh a6, 56(sp) # 2-byte Folded Spill 285; ZHINX32-NEXT: sh a5, 54(sp) # 2-byte Folded Spill 286; ZHINX32-NEXT: sh a4, 52(sp) # 2-byte Folded Spill 287; ZHINX32-NEXT: mv a7, a3 288; ZHINX32-NEXT: mv a6, a2 289; ZHINX32-NEXT: mv a5, a1 290; ZHINX32-NEXT: lh t3, 112(sp) 291; ZHINX32-NEXT: lh t4, 116(sp) 292; ZHINX32-NEXT: lh t5, 120(sp) 293; ZHINX32-NEXT: lh t6, 124(sp) 294; ZHINX32-NEXT: lh t0, 128(sp) 295; ZHINX32-NEXT: lh t1, 132(sp) 296; ZHINX32-NEXT: lh t2, 136(sp) 297; ZHINX32-NEXT: lh s0, 140(sp) 298; ZHINX32-NEXT: lh s1, 144(sp) 299; ZHINX32-NEXT: lh s2, 148(sp) 300; ZHINX32-NEXT: lh s3, 152(sp) 301; ZHINX32-NEXT: lh s4, 156(sp) 302; ZHINX32-NEXT: lh s5, 160(sp) 303; ZHINX32-NEXT: lh s6, 164(sp) 304; ZHINX32-NEXT: lh s7, 168(sp) 305; ZHINX32-NEXT: lh s8, 172(sp) 306; ZHINX32-NEXT: lh s9, 176(sp) 307; ZHINX32-NEXT: lh s10, 180(sp) 308; ZHINX32-NEXT: lh s11, 184(sp) 309; ZHINX32-NEXT: lh ra, 188(sp) 310; ZHINX32-NEXT: lh a1, 192(sp) 311; ZHINX32-NEXT: lh a2, 196(sp) 312; ZHINX32-NEXT: lh a3, 200(sp) 313; ZHINX32-NEXT: lh a4, 204(sp) 314; ZHINX32-NEXT: sh a1, 32(sp) 315; ZHINX32-NEXT: sh a2, 34(sp) 316; ZHINX32-NEXT: sh a3, 36(sp) 317; ZHINX32-NEXT: sh a4, 38(sp) 318; ZHINX32-NEXT: sh s9, 24(sp) 319; ZHINX32-NEXT: sh s10, 26(sp) 320; ZHINX32-NEXT: sh s11, 28(sp) 321; ZHINX32-NEXT: sh ra, 30(sp) 322; ZHINX32-NEXT: sh s5, 16(sp) 323; ZHINX32-NEXT: sh s6, 18(sp) 324; ZHINX32-NEXT: sh s7, 20(sp) 325; ZHINX32-NEXT: sh s8, 22(sp) 326; ZHINX32-NEXT: sh s1, 8(sp) 327; ZHINX32-NEXT: sh s2, 10(sp) 328; ZHINX32-NEXT: sh s3, 12(sp) 329; ZHINX32-NEXT: sh s4, 14(sp) 330; ZHINX32-NEXT: sh t0, 0(sp) 331; ZHINX32-NEXT: sh t1, 2(sp) 332; ZHINX32-NEXT: sh t2, 4(sp) 333; ZHINX32-NEXT: sh s0, 6(sp) 334; ZHINX32-NEXT: mv a1, a5 335; ZHINX32-NEXT: mv a2, a6 336; ZHINX32-NEXT: mv a3, a7 337; ZHINX32-NEXT: lh a4, 52(sp) # 2-byte Folded Reload 338; ZHINX32-NEXT: lh a5, 54(sp) # 2-byte Folded Reload 339; ZHINX32-NEXT: lh a6, 56(sp) # 2-byte Folded Reload 340; ZHINX32-NEXT: lh a7, 58(sp) # 2-byte Folded Reload 341; ZHINX32-NEXT: call callee_half_32 342; ZHINX32-NEXT: lw ra, 108(sp) # 4-byte Folded Reload 343; ZHINX32-NEXT: lw s0, 104(sp) # 4-byte Folded Reload 344; ZHINX32-NEXT: lw s1, 100(sp) # 4-byte Folded Reload 345; ZHINX32-NEXT: lw s2, 96(sp) # 4-byte Folded Reload 346; ZHINX32-NEXT: lw s3, 92(sp) # 4-byte Folded Reload 347; ZHINX32-NEXT: lw s4, 88(sp) # 4-byte Folded Reload 348; ZHINX32-NEXT: lw s5, 84(sp) # 4-byte Folded Reload 349; ZHINX32-NEXT: lw s6, 80(sp) # 4-byte Folded Reload 350; ZHINX32-NEXT: lw s7, 76(sp) # 4-byte Folded Reload 351; ZHINX32-NEXT: lw s8, 72(sp) # 4-byte Folded Reload 352; ZHINX32-NEXT: lw s9, 68(sp) # 4-byte Folded Reload 353; ZHINX32-NEXT: lw s10, 64(sp) # 4-byte Folded Reload 354; ZHINX32-NEXT: lw s11, 60(sp) # 4-byte Folded Reload 355; ZHINX32-NEXT: addi sp, sp, 112 356; ZHINX32-NEXT: ret 357; 358; ZHINX64-LABEL: caller_half_32: 359; ZHINX64: # %bb.0: 360; ZHINX64-NEXT: addi sp, sp, -160 361; ZHINX64-NEXT: sd ra, 152(sp) # 8-byte Folded Spill 362; ZHINX64-NEXT: sd s0, 144(sp) # 8-byte Folded Spill 363; ZHINX64-NEXT: sd s1, 136(sp) # 8-byte Folded Spill 364; ZHINX64-NEXT: sd s2, 128(sp) # 8-byte Folded Spill 365; ZHINX64-NEXT: sd s3, 120(sp) # 8-byte Folded Spill 366; ZHINX64-NEXT: sd s4, 112(sp) # 8-byte Folded Spill 367; ZHINX64-NEXT: sd s5, 104(sp) # 8-byte Folded Spill 368; ZHINX64-NEXT: sd s6, 96(sp) # 8-byte Folded Spill 369; ZHINX64-NEXT: sd s7, 88(sp) # 8-byte Folded Spill 370; ZHINX64-NEXT: sd s8, 80(sp) # 8-byte Folded Spill 371; ZHINX64-NEXT: sd s9, 72(sp) # 8-byte Folded Spill 372; ZHINX64-NEXT: sd s10, 64(sp) # 8-byte Folded Spill 373; ZHINX64-NEXT: sd s11, 56(sp) # 8-byte Folded Spill 374; ZHINX64-NEXT: sh a7, 54(sp) # 2-byte Folded Spill 375; ZHINX64-NEXT: sh a6, 52(sp) # 2-byte Folded Spill 376; ZHINX64-NEXT: sh a5, 50(sp) # 2-byte Folded Spill 377; ZHINX64-NEXT: sh a4, 48(sp) # 2-byte Folded Spill 378; ZHINX64-NEXT: mv a7, a3 379; ZHINX64-NEXT: mv a6, a2 380; ZHINX64-NEXT: mv a5, a1 381; ZHINX64-NEXT: lh t3, 160(sp) 382; ZHINX64-NEXT: lh t4, 168(sp) 383; ZHINX64-NEXT: lh t5, 176(sp) 384; ZHINX64-NEXT: lh t6, 184(sp) 385; ZHINX64-NEXT: lh t0, 192(sp) 386; ZHINX64-NEXT: lh t1, 200(sp) 387; ZHINX64-NEXT: lh t2, 208(sp) 388; ZHINX64-NEXT: lh s0, 216(sp) 389; ZHINX64-NEXT: lh s1, 224(sp) 390; ZHINX64-NEXT: lh s2, 232(sp) 391; ZHINX64-NEXT: lh s3, 240(sp) 392; ZHINX64-NEXT: lh s4, 248(sp) 393; ZHINX64-NEXT: lh s5, 256(sp) 394; ZHINX64-NEXT: lh s6, 264(sp) 395; ZHINX64-NEXT: lh s7, 272(sp) 396; ZHINX64-NEXT: lh s8, 280(sp) 397; ZHINX64-NEXT: lh s9, 288(sp) 398; ZHINX64-NEXT: lh s10, 296(sp) 399; ZHINX64-NEXT: lh s11, 304(sp) 400; ZHINX64-NEXT: lh ra, 312(sp) 401; ZHINX64-NEXT: lh a1, 320(sp) 402; ZHINX64-NEXT: lh a2, 328(sp) 403; ZHINX64-NEXT: lh a3, 336(sp) 404; ZHINX64-NEXT: lh a4, 344(sp) 405; ZHINX64-NEXT: sh a1, 32(sp) 406; ZHINX64-NEXT: sh a2, 34(sp) 407; ZHINX64-NEXT: sh a3, 36(sp) 408; ZHINX64-NEXT: sh a4, 38(sp) 409; ZHINX64-NEXT: sh s9, 24(sp) 410; ZHINX64-NEXT: sh s10, 26(sp) 411; ZHINX64-NEXT: sh s11, 28(sp) 412; ZHINX64-NEXT: sh ra, 30(sp) 413; ZHINX64-NEXT: sh s5, 16(sp) 414; ZHINX64-NEXT: sh s6, 18(sp) 415; ZHINX64-NEXT: sh s7, 20(sp) 416; ZHINX64-NEXT: sh s8, 22(sp) 417; ZHINX64-NEXT: sh s1, 8(sp) 418; ZHINX64-NEXT: sh s2, 10(sp) 419; ZHINX64-NEXT: sh s3, 12(sp) 420; ZHINX64-NEXT: sh s4, 14(sp) 421; ZHINX64-NEXT: sh t0, 0(sp) 422; ZHINX64-NEXT: sh t1, 2(sp) 423; ZHINX64-NEXT: sh t2, 4(sp) 424; ZHINX64-NEXT: sh s0, 6(sp) 425; ZHINX64-NEXT: mv a1, a5 426; ZHINX64-NEXT: mv a2, a6 427; ZHINX64-NEXT: mv a3, a7 428; ZHINX64-NEXT: lh a4, 48(sp) # 2-byte Folded Reload 429; ZHINX64-NEXT: lh a5, 50(sp) # 2-byte Folded Reload 430; ZHINX64-NEXT: lh a6, 52(sp) # 2-byte Folded Reload 431; ZHINX64-NEXT: lh a7, 54(sp) # 2-byte Folded Reload 432; ZHINX64-NEXT: call callee_half_32 433; ZHINX64-NEXT: ld ra, 152(sp) # 8-byte Folded Reload 434; ZHINX64-NEXT: ld s0, 144(sp) # 8-byte Folded Reload 435; ZHINX64-NEXT: ld s1, 136(sp) # 8-byte Folded Reload 436; ZHINX64-NEXT: ld s2, 128(sp) # 8-byte Folded Reload 437; ZHINX64-NEXT: ld s3, 120(sp) # 8-byte Folded Reload 438; ZHINX64-NEXT: ld s4, 112(sp) # 8-byte Folded Reload 439; ZHINX64-NEXT: ld s5, 104(sp) # 8-byte Folded Reload 440; ZHINX64-NEXT: ld s6, 96(sp) # 8-byte Folded Reload 441; ZHINX64-NEXT: ld s7, 88(sp) # 8-byte Folded Reload 442; ZHINX64-NEXT: ld s8, 80(sp) # 8-byte Folded Reload 443; ZHINX64-NEXT: ld s9, 72(sp) # 8-byte Folded Reload 444; ZHINX64-NEXT: ld s10, 64(sp) # 8-byte Folded Reload 445; ZHINX64-NEXT: ld s11, 56(sp) # 8-byte Folded Reload 446; ZHINX64-NEXT: addi sp, sp, 160 447; ZHINX64-NEXT: ret 448; 449; ZFINX32-LABEL: caller_half_32: 450; ZFINX32: # %bb.0: 451; ZFINX32-NEXT: addi sp, sp, -160 452; ZFINX32-NEXT: sw ra, 156(sp) # 4-byte Folded Spill 453; ZFINX32-NEXT: sw s0, 152(sp) # 4-byte Folded Spill 454; ZFINX32-NEXT: sw s1, 148(sp) # 4-byte Folded Spill 455; ZFINX32-NEXT: sw s2, 144(sp) # 4-byte Folded Spill 456; ZFINX32-NEXT: sw s3, 140(sp) # 4-byte Folded Spill 457; ZFINX32-NEXT: sw s4, 136(sp) # 4-byte Folded Spill 458; ZFINX32-NEXT: sw s5, 132(sp) # 4-byte Folded Spill 459; ZFINX32-NEXT: sw s6, 128(sp) # 4-byte Folded Spill 460; ZFINX32-NEXT: sw s7, 124(sp) # 4-byte Folded Spill 461; ZFINX32-NEXT: sw s8, 120(sp) # 4-byte Folded Spill 462; ZFINX32-NEXT: sw s9, 116(sp) # 4-byte Folded Spill 463; ZFINX32-NEXT: sw s10, 112(sp) # 4-byte Folded Spill 464; ZFINX32-NEXT: sw s11, 108(sp) # 4-byte Folded Spill 465; ZFINX32-NEXT: mv t0, a0 466; ZFINX32-NEXT: lw a0, 0(a0) 467; ZFINX32-NEXT: sw a0, 104(sp) # 4-byte Folded Spill 468; ZFINX32-NEXT: lw a0, 4(t0) 469; ZFINX32-NEXT: sw a0, 100(sp) # 4-byte Folded Spill 470; ZFINX32-NEXT: lw a0, 8(t0) 471; ZFINX32-NEXT: sw a0, 96(sp) # 4-byte Folded Spill 472; ZFINX32-NEXT: lw a0, 12(t0) 473; ZFINX32-NEXT: sw a0, 92(sp) # 4-byte Folded Spill 474; ZFINX32-NEXT: lw a4, 16(t0) 475; ZFINX32-NEXT: lw a5, 20(t0) 476; ZFINX32-NEXT: lw a6, 24(t0) 477; ZFINX32-NEXT: lw a7, 28(t0) 478; ZFINX32-NEXT: lw t3, 32(t0) 479; ZFINX32-NEXT: lw t4, 36(t0) 480; ZFINX32-NEXT: lw t5, 40(t0) 481; ZFINX32-NEXT: lw t6, 44(t0) 482; ZFINX32-NEXT: lw t1, 48(t0) 483; ZFINX32-NEXT: lw t2, 52(t0) 484; ZFINX32-NEXT: lw s0, 56(t0) 485; ZFINX32-NEXT: lw s1, 60(t0) 486; ZFINX32-NEXT: lw s2, 64(t0) 487; ZFINX32-NEXT: lw s3, 68(t0) 488; ZFINX32-NEXT: lw s4, 72(t0) 489; ZFINX32-NEXT: lw s5, 76(t0) 490; ZFINX32-NEXT: lw s6, 80(t0) 491; ZFINX32-NEXT: lw s7, 84(t0) 492; ZFINX32-NEXT: lw s8, 88(t0) 493; ZFINX32-NEXT: lw s9, 92(t0) 494; ZFINX32-NEXT: lw s10, 96(t0) 495; ZFINX32-NEXT: lw s11, 100(t0) 496; ZFINX32-NEXT: lw ra, 104(t0) 497; ZFINX32-NEXT: lw a3, 108(t0) 498; ZFINX32-NEXT: lw a0, 112(t0) 499; ZFINX32-NEXT: lw a1, 116(t0) 500; ZFINX32-NEXT: lw a2, 120(t0) 501; ZFINX32-NEXT: lw t0, 124(t0) 502; ZFINX32-NEXT: sw a0, 64(sp) 503; ZFINX32-NEXT: sw a1, 68(sp) 504; ZFINX32-NEXT: sw a2, 72(sp) 505; ZFINX32-NEXT: sw t0, 76(sp) 506; ZFINX32-NEXT: sw s10, 48(sp) 507; ZFINX32-NEXT: sw s11, 52(sp) 508; ZFINX32-NEXT: sw ra, 56(sp) 509; ZFINX32-NEXT: sw a3, 60(sp) 510; ZFINX32-NEXT: sw s6, 32(sp) 511; ZFINX32-NEXT: sw s7, 36(sp) 512; ZFINX32-NEXT: sw s8, 40(sp) 513; ZFINX32-NEXT: sw s9, 44(sp) 514; ZFINX32-NEXT: sw s2, 16(sp) 515; ZFINX32-NEXT: sw s3, 20(sp) 516; ZFINX32-NEXT: sw s4, 24(sp) 517; ZFINX32-NEXT: sw s5, 28(sp) 518; ZFINX32-NEXT: sw t1, 0(sp) 519; ZFINX32-NEXT: sw t2, 4(sp) 520; ZFINX32-NEXT: sw s0, 8(sp) 521; ZFINX32-NEXT: sw s1, 12(sp) 522; ZFINX32-NEXT: lw a0, 104(sp) # 4-byte Folded Reload 523; ZFINX32-NEXT: lw a1, 100(sp) # 4-byte Folded Reload 524; ZFINX32-NEXT: lw a2, 96(sp) # 4-byte Folded Reload 525; ZFINX32-NEXT: lw a3, 92(sp) # 4-byte Folded Reload 526; ZFINX32-NEXT: call callee_half_32 527; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10 528; ZFINX32-NEXT: lui a1, 1048560 529; ZFINX32-NEXT: or a0, a0, a1 530; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10 531; ZFINX32-NEXT: lw ra, 156(sp) # 4-byte Folded Reload 532; ZFINX32-NEXT: lw s0, 152(sp) # 4-byte Folded Reload 533; ZFINX32-NEXT: lw s1, 148(sp) # 4-byte Folded Reload 534; ZFINX32-NEXT: lw s2, 144(sp) # 4-byte Folded Reload 535; ZFINX32-NEXT: lw s3, 140(sp) # 4-byte Folded Reload 536; ZFINX32-NEXT: lw s4, 136(sp) # 4-byte Folded Reload 537; ZFINX32-NEXT: lw s5, 132(sp) # 4-byte Folded Reload 538; ZFINX32-NEXT: lw s6, 128(sp) # 4-byte Folded Reload 539; ZFINX32-NEXT: lw s7, 124(sp) # 4-byte Folded Reload 540; ZFINX32-NEXT: lw s8, 120(sp) # 4-byte Folded Reload 541; ZFINX32-NEXT: lw s9, 116(sp) # 4-byte Folded Reload 542; ZFINX32-NEXT: lw s10, 112(sp) # 4-byte Folded Reload 543; ZFINX32-NEXT: lw s11, 108(sp) # 4-byte Folded Reload 544; ZFINX32-NEXT: addi sp, sp, 160 545; ZFINX32-NEXT: ret 546; 547; ZFINX64-LABEL: caller_half_32: 548; ZFINX64: # %bb.0: 549; ZFINX64-NEXT: addi sp, sp, -304 550; ZFINX64-NEXT: sd ra, 296(sp) # 8-byte Folded Spill 551; ZFINX64-NEXT: sd s0, 288(sp) # 8-byte Folded Spill 552; ZFINX64-NEXT: sd s1, 280(sp) # 8-byte Folded Spill 553; ZFINX64-NEXT: sd s2, 272(sp) # 8-byte Folded Spill 554; ZFINX64-NEXT: sd s3, 264(sp) # 8-byte Folded Spill 555; ZFINX64-NEXT: sd s4, 256(sp) # 8-byte Folded Spill 556; ZFINX64-NEXT: sd s5, 248(sp) # 8-byte Folded Spill 557; ZFINX64-NEXT: sd s6, 240(sp) # 8-byte Folded Spill 558; ZFINX64-NEXT: sd s7, 232(sp) # 8-byte Folded Spill 559; ZFINX64-NEXT: sd s8, 224(sp) # 8-byte Folded Spill 560; ZFINX64-NEXT: sd s9, 216(sp) # 8-byte Folded Spill 561; ZFINX64-NEXT: sd s10, 208(sp) # 8-byte Folded Spill 562; ZFINX64-NEXT: sd s11, 200(sp) # 8-byte Folded Spill 563; ZFINX64-NEXT: mv t0, a0 564; ZFINX64-NEXT: ld a0, 0(a0) 565; ZFINX64-NEXT: sd a0, 192(sp) # 8-byte Folded Spill 566; ZFINX64-NEXT: ld a0, 8(t0) 567; ZFINX64-NEXT: sd a0, 184(sp) # 8-byte Folded Spill 568; ZFINX64-NEXT: ld a0, 16(t0) 569; ZFINX64-NEXT: sd a0, 176(sp) # 8-byte Folded Spill 570; ZFINX64-NEXT: ld a0, 24(t0) 571; ZFINX64-NEXT: sd a0, 168(sp) # 8-byte Folded Spill 572; ZFINX64-NEXT: ld a4, 32(t0) 573; ZFINX64-NEXT: ld a5, 40(t0) 574; ZFINX64-NEXT: ld a6, 48(t0) 575; ZFINX64-NEXT: ld a7, 56(t0) 576; ZFINX64-NEXT: ld t3, 64(t0) 577; ZFINX64-NEXT: ld t4, 72(t0) 578; ZFINX64-NEXT: ld t5, 80(t0) 579; ZFINX64-NEXT: ld t6, 88(t0) 580; ZFINX64-NEXT: ld t1, 96(t0) 581; ZFINX64-NEXT: ld t2, 104(t0) 582; ZFINX64-NEXT: ld s0, 112(t0) 583; ZFINX64-NEXT: ld s1, 120(t0) 584; ZFINX64-NEXT: ld s2, 128(t0) 585; ZFINX64-NEXT: ld s3, 136(t0) 586; ZFINX64-NEXT: ld s4, 144(t0) 587; ZFINX64-NEXT: ld s5, 152(t0) 588; ZFINX64-NEXT: ld s6, 160(t0) 589; ZFINX64-NEXT: ld s7, 168(t0) 590; ZFINX64-NEXT: ld s8, 176(t0) 591; ZFINX64-NEXT: ld s9, 184(t0) 592; ZFINX64-NEXT: ld s10, 192(t0) 593; ZFINX64-NEXT: ld s11, 200(t0) 594; ZFINX64-NEXT: ld ra, 208(t0) 595; ZFINX64-NEXT: ld a3, 216(t0) 596; ZFINX64-NEXT: ld a0, 224(t0) 597; ZFINX64-NEXT: ld a1, 232(t0) 598; ZFINX64-NEXT: ld a2, 240(t0) 599; ZFINX64-NEXT: ld t0, 248(t0) 600; ZFINX64-NEXT: sd a0, 128(sp) 601; ZFINX64-NEXT: sd a1, 136(sp) 602; ZFINX64-NEXT: sd a2, 144(sp) 603; ZFINX64-NEXT: sd t0, 152(sp) 604; ZFINX64-NEXT: sd s10, 96(sp) 605; ZFINX64-NEXT: sd s11, 104(sp) 606; ZFINX64-NEXT: sd ra, 112(sp) 607; ZFINX64-NEXT: sd a3, 120(sp) 608; ZFINX64-NEXT: sd s6, 64(sp) 609; ZFINX64-NEXT: sd s7, 72(sp) 610; ZFINX64-NEXT: sd s8, 80(sp) 611; ZFINX64-NEXT: sd s9, 88(sp) 612; ZFINX64-NEXT: sd s2, 32(sp) 613; ZFINX64-NEXT: sd s3, 40(sp) 614; ZFINX64-NEXT: sd s4, 48(sp) 615; ZFINX64-NEXT: sd s5, 56(sp) 616; ZFINX64-NEXT: sd t1, 0(sp) 617; ZFINX64-NEXT: sd t2, 8(sp) 618; ZFINX64-NEXT: sd s0, 16(sp) 619; ZFINX64-NEXT: sd s1, 24(sp) 620; ZFINX64-NEXT: ld a0, 192(sp) # 8-byte Folded Reload 621; ZFINX64-NEXT: ld a1, 184(sp) # 8-byte Folded Reload 622; ZFINX64-NEXT: ld a2, 176(sp) # 8-byte Folded Reload 623; ZFINX64-NEXT: ld a3, 168(sp) # 8-byte Folded Reload 624; ZFINX64-NEXT: call callee_half_32 625; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10 626; ZFINX64-NEXT: lui a1, 1048560 627; ZFINX64-NEXT: or a0, a0, a1 628; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10 629; ZFINX64-NEXT: ld ra, 296(sp) # 8-byte Folded Reload 630; ZFINX64-NEXT: ld s0, 288(sp) # 8-byte Folded Reload 631; ZFINX64-NEXT: ld s1, 280(sp) # 8-byte Folded Reload 632; ZFINX64-NEXT: ld s2, 272(sp) # 8-byte Folded Reload 633; ZFINX64-NEXT: ld s3, 264(sp) # 8-byte Folded Reload 634; ZFINX64-NEXT: ld s4, 256(sp) # 8-byte Folded Reload 635; ZFINX64-NEXT: ld s5, 248(sp) # 8-byte Folded Reload 636; ZFINX64-NEXT: ld s6, 240(sp) # 8-byte Folded Reload 637; ZFINX64-NEXT: ld s7, 232(sp) # 8-byte Folded Reload 638; ZFINX64-NEXT: ld s8, 224(sp) # 8-byte Folded Reload 639; ZFINX64-NEXT: ld s9, 216(sp) # 8-byte Folded Reload 640; ZFINX64-NEXT: ld s10, 208(sp) # 8-byte Folded Reload 641; ZFINX64-NEXT: ld s11, 200(sp) # 8-byte Folded Reload 642; ZFINX64-NEXT: addi sp, sp, 304 643; ZFINX64-NEXT: ret 644; 645; ZDINX32-LABEL: caller_half_32: 646; ZDINX32: # %bb.0: 647; ZDINX32-NEXT: addi sp, sp, -160 648; ZDINX32-NEXT: sw ra, 156(sp) # 4-byte Folded Spill 649; ZDINX32-NEXT: sw s0, 152(sp) # 4-byte Folded Spill 650; ZDINX32-NEXT: sw s1, 148(sp) # 4-byte Folded Spill 651; ZDINX32-NEXT: sw s2, 144(sp) # 4-byte Folded Spill 652; ZDINX32-NEXT: sw s3, 140(sp) # 4-byte Folded Spill 653; ZDINX32-NEXT: sw s4, 136(sp) # 4-byte Folded Spill 654; ZDINX32-NEXT: sw s5, 132(sp) # 4-byte Folded Spill 655; ZDINX32-NEXT: sw s6, 128(sp) # 4-byte Folded Spill 656; ZDINX32-NEXT: sw s7, 124(sp) # 4-byte Folded Spill 657; ZDINX32-NEXT: sw s8, 120(sp) # 4-byte Folded Spill 658; ZDINX32-NEXT: sw s9, 116(sp) # 4-byte Folded Spill 659; ZDINX32-NEXT: sw s10, 112(sp) # 4-byte Folded Spill 660; ZDINX32-NEXT: sw s11, 108(sp) # 4-byte Folded Spill 661; ZDINX32-NEXT: mv t0, a0 662; ZDINX32-NEXT: lw a0, 0(a0) 663; ZDINX32-NEXT: sw a0, 104(sp) # 4-byte Folded Spill 664; ZDINX32-NEXT: lw a0, 4(t0) 665; ZDINX32-NEXT: sw a0, 100(sp) # 4-byte Folded Spill 666; ZDINX32-NEXT: lw a0, 8(t0) 667; ZDINX32-NEXT: sw a0, 96(sp) # 4-byte Folded Spill 668; ZDINX32-NEXT: lw a0, 12(t0) 669; ZDINX32-NEXT: sw a0, 92(sp) # 4-byte Folded Spill 670; ZDINX32-NEXT: lw a4, 16(t0) 671; ZDINX32-NEXT: lw a5, 20(t0) 672; ZDINX32-NEXT: lw a6, 24(t0) 673; ZDINX32-NEXT: lw a7, 28(t0) 674; ZDINX32-NEXT: lw t3, 32(t0) 675; ZDINX32-NEXT: lw t4, 36(t0) 676; ZDINX32-NEXT: lw t5, 40(t0) 677; ZDINX32-NEXT: lw t6, 44(t0) 678; ZDINX32-NEXT: lw t1, 48(t0) 679; ZDINX32-NEXT: lw t2, 52(t0) 680; ZDINX32-NEXT: lw s0, 56(t0) 681; ZDINX32-NEXT: lw s1, 60(t0) 682; ZDINX32-NEXT: lw s2, 64(t0) 683; ZDINX32-NEXT: lw s3, 68(t0) 684; ZDINX32-NEXT: lw s4, 72(t0) 685; ZDINX32-NEXT: lw s5, 76(t0) 686; ZDINX32-NEXT: lw s6, 80(t0) 687; ZDINX32-NEXT: lw s7, 84(t0) 688; ZDINX32-NEXT: lw s8, 88(t0) 689; ZDINX32-NEXT: lw s9, 92(t0) 690; ZDINX32-NEXT: lw s10, 96(t0) 691; ZDINX32-NEXT: lw s11, 100(t0) 692; ZDINX32-NEXT: lw ra, 104(t0) 693; ZDINX32-NEXT: lw a3, 108(t0) 694; ZDINX32-NEXT: lw a0, 112(t0) 695; ZDINX32-NEXT: lw a1, 116(t0) 696; ZDINX32-NEXT: lw a2, 120(t0) 697; ZDINX32-NEXT: lw t0, 124(t0) 698; ZDINX32-NEXT: sw a0, 64(sp) 699; ZDINX32-NEXT: sw a1, 68(sp) 700; ZDINX32-NEXT: sw a2, 72(sp) 701; ZDINX32-NEXT: sw t0, 76(sp) 702; ZDINX32-NEXT: sw s10, 48(sp) 703; ZDINX32-NEXT: sw s11, 52(sp) 704; ZDINX32-NEXT: sw ra, 56(sp) 705; ZDINX32-NEXT: sw a3, 60(sp) 706; ZDINX32-NEXT: sw s6, 32(sp) 707; ZDINX32-NEXT: sw s7, 36(sp) 708; ZDINX32-NEXT: sw s8, 40(sp) 709; ZDINX32-NEXT: sw s9, 44(sp) 710; ZDINX32-NEXT: sw s2, 16(sp) 711; ZDINX32-NEXT: sw s3, 20(sp) 712; ZDINX32-NEXT: sw s4, 24(sp) 713; ZDINX32-NEXT: sw s5, 28(sp) 714; ZDINX32-NEXT: sw t1, 0(sp) 715; ZDINX32-NEXT: sw t2, 4(sp) 716; ZDINX32-NEXT: sw s0, 8(sp) 717; ZDINX32-NEXT: sw s1, 12(sp) 718; ZDINX32-NEXT: lw a0, 104(sp) # 4-byte Folded Reload 719; ZDINX32-NEXT: lw a1, 100(sp) # 4-byte Folded Reload 720; ZDINX32-NEXT: lw a2, 96(sp) # 4-byte Folded Reload 721; ZDINX32-NEXT: lw a3, 92(sp) # 4-byte Folded Reload 722; ZDINX32-NEXT: call callee_half_32 723; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10 724; ZDINX32-NEXT: lui a1, 1048560 725; ZDINX32-NEXT: or a0, a0, a1 726; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10 727; ZDINX32-NEXT: lw ra, 156(sp) # 4-byte Folded Reload 728; ZDINX32-NEXT: lw s0, 152(sp) # 4-byte Folded Reload 729; ZDINX32-NEXT: lw s1, 148(sp) # 4-byte Folded Reload 730; ZDINX32-NEXT: lw s2, 144(sp) # 4-byte Folded Reload 731; ZDINX32-NEXT: lw s3, 140(sp) # 4-byte Folded Reload 732; ZDINX32-NEXT: lw s4, 136(sp) # 4-byte Folded Reload 733; ZDINX32-NEXT: lw s5, 132(sp) # 4-byte Folded Reload 734; ZDINX32-NEXT: lw s6, 128(sp) # 4-byte Folded Reload 735; ZDINX32-NEXT: lw s7, 124(sp) # 4-byte Folded Reload 736; ZDINX32-NEXT: lw s8, 120(sp) # 4-byte Folded Reload 737; ZDINX32-NEXT: lw s9, 116(sp) # 4-byte Folded Reload 738; ZDINX32-NEXT: lw s10, 112(sp) # 4-byte Folded Reload 739; ZDINX32-NEXT: lw s11, 108(sp) # 4-byte Folded Reload 740; ZDINX32-NEXT: addi sp, sp, 160 741; ZDINX32-NEXT: ret 742; 743; ZDINX64-LABEL: caller_half_32: 744; ZDINX64: # %bb.0: 745; ZDINX64-NEXT: addi sp, sp, -304 746; ZDINX64-NEXT: sd ra, 296(sp) # 8-byte Folded Spill 747; ZDINX64-NEXT: sd s0, 288(sp) # 8-byte Folded Spill 748; ZDINX64-NEXT: sd s1, 280(sp) # 8-byte Folded Spill 749; ZDINX64-NEXT: sd s2, 272(sp) # 8-byte Folded Spill 750; ZDINX64-NEXT: sd s3, 264(sp) # 8-byte Folded Spill 751; ZDINX64-NEXT: sd s4, 256(sp) # 8-byte Folded Spill 752; ZDINX64-NEXT: sd s5, 248(sp) # 8-byte Folded Spill 753; ZDINX64-NEXT: sd s6, 240(sp) # 8-byte Folded Spill 754; ZDINX64-NEXT: sd s7, 232(sp) # 8-byte Folded Spill 755; ZDINX64-NEXT: sd s8, 224(sp) # 8-byte Folded Spill 756; ZDINX64-NEXT: sd s9, 216(sp) # 8-byte Folded Spill 757; ZDINX64-NEXT: sd s10, 208(sp) # 8-byte Folded Spill 758; ZDINX64-NEXT: sd s11, 200(sp) # 8-byte Folded Spill 759; ZDINX64-NEXT: mv t0, a0 760; ZDINX64-NEXT: ld a0, 0(a0) 761; ZDINX64-NEXT: sd a0, 192(sp) # 8-byte Folded Spill 762; ZDINX64-NEXT: ld a0, 8(t0) 763; ZDINX64-NEXT: sd a0, 184(sp) # 8-byte Folded Spill 764; ZDINX64-NEXT: ld a0, 16(t0) 765; ZDINX64-NEXT: sd a0, 176(sp) # 8-byte Folded Spill 766; ZDINX64-NEXT: ld a0, 24(t0) 767; ZDINX64-NEXT: sd a0, 168(sp) # 8-byte Folded Spill 768; ZDINX64-NEXT: ld a4, 32(t0) 769; ZDINX64-NEXT: ld a5, 40(t0) 770; ZDINX64-NEXT: ld a6, 48(t0) 771; ZDINX64-NEXT: ld a7, 56(t0) 772; ZDINX64-NEXT: ld t3, 64(t0) 773; ZDINX64-NEXT: ld t4, 72(t0) 774; ZDINX64-NEXT: ld t5, 80(t0) 775; ZDINX64-NEXT: ld t6, 88(t0) 776; ZDINX64-NEXT: ld t1, 96(t0) 777; ZDINX64-NEXT: ld t2, 104(t0) 778; ZDINX64-NEXT: ld s0, 112(t0) 779; ZDINX64-NEXT: ld s1, 120(t0) 780; ZDINX64-NEXT: ld s2, 128(t0) 781; ZDINX64-NEXT: ld s3, 136(t0) 782; ZDINX64-NEXT: ld s4, 144(t0) 783; ZDINX64-NEXT: ld s5, 152(t0) 784; ZDINX64-NEXT: ld s6, 160(t0) 785; ZDINX64-NEXT: ld s7, 168(t0) 786; ZDINX64-NEXT: ld s8, 176(t0) 787; ZDINX64-NEXT: ld s9, 184(t0) 788; ZDINX64-NEXT: ld s10, 192(t0) 789; ZDINX64-NEXT: ld s11, 200(t0) 790; ZDINX64-NEXT: ld ra, 208(t0) 791; ZDINX64-NEXT: ld a3, 216(t0) 792; ZDINX64-NEXT: ld a0, 224(t0) 793; ZDINX64-NEXT: ld a1, 232(t0) 794; ZDINX64-NEXT: ld a2, 240(t0) 795; ZDINX64-NEXT: ld t0, 248(t0) 796; ZDINX64-NEXT: sd a0, 128(sp) 797; ZDINX64-NEXT: sd a1, 136(sp) 798; ZDINX64-NEXT: sd a2, 144(sp) 799; ZDINX64-NEXT: sd t0, 152(sp) 800; ZDINX64-NEXT: sd s10, 96(sp) 801; ZDINX64-NEXT: sd s11, 104(sp) 802; ZDINX64-NEXT: sd ra, 112(sp) 803; ZDINX64-NEXT: sd a3, 120(sp) 804; ZDINX64-NEXT: sd s6, 64(sp) 805; ZDINX64-NEXT: sd s7, 72(sp) 806; ZDINX64-NEXT: sd s8, 80(sp) 807; ZDINX64-NEXT: sd s9, 88(sp) 808; ZDINX64-NEXT: sd s2, 32(sp) 809; ZDINX64-NEXT: sd s3, 40(sp) 810; ZDINX64-NEXT: sd s4, 48(sp) 811; ZDINX64-NEXT: sd s5, 56(sp) 812; ZDINX64-NEXT: sd t1, 0(sp) 813; ZDINX64-NEXT: sd t2, 8(sp) 814; ZDINX64-NEXT: sd s0, 16(sp) 815; ZDINX64-NEXT: sd s1, 24(sp) 816; ZDINX64-NEXT: ld a0, 192(sp) # 8-byte Folded Reload 817; ZDINX64-NEXT: ld a1, 184(sp) # 8-byte Folded Reload 818; ZDINX64-NEXT: ld a2, 176(sp) # 8-byte Folded Reload 819; ZDINX64-NEXT: ld a3, 168(sp) # 8-byte Folded Reload 820; ZDINX64-NEXT: call callee_half_32 821; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10 822; ZDINX64-NEXT: lui a1, 1048560 823; ZDINX64-NEXT: or a0, a0, a1 824; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10 825; ZDINX64-NEXT: ld ra, 296(sp) # 8-byte Folded Reload 826; ZDINX64-NEXT: ld s0, 288(sp) # 8-byte Folded Reload 827; ZDINX64-NEXT: ld s1, 280(sp) # 8-byte Folded Reload 828; ZDINX64-NEXT: ld s2, 272(sp) # 8-byte Folded Reload 829; ZDINX64-NEXT: ld s3, 264(sp) # 8-byte Folded Reload 830; ZDINX64-NEXT: ld s4, 256(sp) # 8-byte Folded Reload 831; ZDINX64-NEXT: ld s5, 248(sp) # 8-byte Folded Reload 832; ZDINX64-NEXT: ld s6, 240(sp) # 8-byte Folded Reload 833; ZDINX64-NEXT: ld s7, 232(sp) # 8-byte Folded Reload 834; ZDINX64-NEXT: ld s8, 224(sp) # 8-byte Folded Reload 835; ZDINX64-NEXT: ld s9, 216(sp) # 8-byte Folded Reload 836; ZDINX64-NEXT: ld s10, 208(sp) # 8-byte Folded Reload 837; ZDINX64-NEXT: ld s11, 200(sp) # 8-byte Folded Reload 838; ZDINX64-NEXT: addi sp, sp, 304 839; ZDINX64-NEXT: ret 840 %C = call fastcc half @callee_half_32(<32 x half> %A) 841 ret half %C 842} 843 844define fastcc float @callee_float_32(<32 x float> %A) nounwind { 845; ZHINX32-LABEL: callee_float_32: 846; ZHINX32: # %bb.0: 847; ZHINX32-NEXT: ret 848; 849; ZHINX64-LABEL: callee_float_32: 850; ZHINX64: # %bb.0: 851; ZHINX64-NEXT: ret 852; 853; ZFINX32-LABEL: callee_float_32: 854; ZFINX32: # %bb.0: 855; ZFINX32-NEXT: ret 856; 857; ZFINX64-LABEL: callee_float_32: 858; ZFINX64: # %bb.0: 859; ZFINX64-NEXT: ret 860; 861; ZDINX32-LABEL: callee_float_32: 862; ZDINX32: # %bb.0: 863; ZDINX32-NEXT: ret 864; 865; ZDINX64-LABEL: callee_float_32: 866; ZDINX64: # %bb.0: 867; ZDINX64-NEXT: ret 868 %B = extractelement <32 x float> %A, i32 0 869 ret float %B 870} 871 872define float @caller_float_32(<32 x float> %A) nounwind { 873; ZHINX32-LABEL: caller_float_32: 874; ZHINX32: # %bb.0: 875; ZHINX32-NEXT: addi sp, sp, -160 876; ZHINX32-NEXT: sw ra, 156(sp) # 4-byte Folded Spill 877; ZHINX32-NEXT: sw s0, 152(sp) # 4-byte Folded Spill 878; ZHINX32-NEXT: sw s1, 148(sp) # 4-byte Folded Spill 879; ZHINX32-NEXT: sw s2, 144(sp) # 4-byte Folded Spill 880; ZHINX32-NEXT: sw s3, 140(sp) # 4-byte Folded Spill 881; ZHINX32-NEXT: sw s4, 136(sp) # 4-byte Folded Spill 882; ZHINX32-NEXT: sw s5, 132(sp) # 4-byte Folded Spill 883; ZHINX32-NEXT: sw s6, 128(sp) # 4-byte Folded Spill 884; ZHINX32-NEXT: sw s7, 124(sp) # 4-byte Folded Spill 885; ZHINX32-NEXT: sw s8, 120(sp) # 4-byte Folded Spill 886; ZHINX32-NEXT: sw s9, 116(sp) # 4-byte Folded Spill 887; ZHINX32-NEXT: sw s10, 112(sp) # 4-byte Folded Spill 888; ZHINX32-NEXT: sw s11, 108(sp) # 4-byte Folded Spill 889; ZHINX32-NEXT: sw a7, 104(sp) # 4-byte Folded Spill 890; ZHINX32-NEXT: sw a6, 100(sp) # 4-byte Folded Spill 891; ZHINX32-NEXT: sw a5, 96(sp) # 4-byte Folded Spill 892; ZHINX32-NEXT: sw a4, 92(sp) # 4-byte Folded Spill 893; ZHINX32-NEXT: mv a7, a3 894; ZHINX32-NEXT: mv a6, a2 895; ZHINX32-NEXT: mv a5, a1 896; ZHINX32-NEXT: lw t3, 160(sp) 897; ZHINX32-NEXT: lw t4, 164(sp) 898; ZHINX32-NEXT: lw t5, 168(sp) 899; ZHINX32-NEXT: lw t6, 172(sp) 900; ZHINX32-NEXT: lw t0, 176(sp) 901; ZHINX32-NEXT: lw t1, 180(sp) 902; ZHINX32-NEXT: lw t2, 184(sp) 903; ZHINX32-NEXT: lw s0, 188(sp) 904; ZHINX32-NEXT: lw s1, 192(sp) 905; ZHINX32-NEXT: lw s2, 196(sp) 906; ZHINX32-NEXT: lw s3, 200(sp) 907; ZHINX32-NEXT: lw s4, 204(sp) 908; ZHINX32-NEXT: lw s5, 208(sp) 909; ZHINX32-NEXT: lw s6, 212(sp) 910; ZHINX32-NEXT: lw s7, 216(sp) 911; ZHINX32-NEXT: lw s8, 220(sp) 912; ZHINX32-NEXT: lw s9, 224(sp) 913; ZHINX32-NEXT: lw s10, 228(sp) 914; ZHINX32-NEXT: lw s11, 232(sp) 915; ZHINX32-NEXT: lw ra, 236(sp) 916; ZHINX32-NEXT: lw a1, 240(sp) 917; ZHINX32-NEXT: lw a2, 244(sp) 918; ZHINX32-NEXT: lw a3, 248(sp) 919; ZHINX32-NEXT: lw a4, 252(sp) 920; ZHINX32-NEXT: sw a1, 64(sp) 921; ZHINX32-NEXT: sw a2, 68(sp) 922; ZHINX32-NEXT: sw a3, 72(sp) 923; ZHINX32-NEXT: sw a4, 76(sp) 924; ZHINX32-NEXT: sw s9, 48(sp) 925; ZHINX32-NEXT: sw s10, 52(sp) 926; ZHINX32-NEXT: sw s11, 56(sp) 927; ZHINX32-NEXT: sw ra, 60(sp) 928; ZHINX32-NEXT: sw s5, 32(sp) 929; ZHINX32-NEXT: sw s6, 36(sp) 930; ZHINX32-NEXT: sw s7, 40(sp) 931; ZHINX32-NEXT: sw s8, 44(sp) 932; ZHINX32-NEXT: sw s1, 16(sp) 933; ZHINX32-NEXT: sw s2, 20(sp) 934; ZHINX32-NEXT: sw s3, 24(sp) 935; ZHINX32-NEXT: sw s4, 28(sp) 936; ZHINX32-NEXT: sw t0, 0(sp) 937; ZHINX32-NEXT: sw t1, 4(sp) 938; ZHINX32-NEXT: sw t2, 8(sp) 939; ZHINX32-NEXT: sw s0, 12(sp) 940; ZHINX32-NEXT: mv a1, a5 941; ZHINX32-NEXT: mv a2, a6 942; ZHINX32-NEXT: mv a3, a7 943; ZHINX32-NEXT: lw a4, 92(sp) # 4-byte Folded Reload 944; ZHINX32-NEXT: lw a5, 96(sp) # 4-byte Folded Reload 945; ZHINX32-NEXT: lw a6, 100(sp) # 4-byte Folded Reload 946; ZHINX32-NEXT: lw a7, 104(sp) # 4-byte Folded Reload 947; ZHINX32-NEXT: call callee_float_32 948; ZHINX32-NEXT: lw ra, 156(sp) # 4-byte Folded Reload 949; ZHINX32-NEXT: lw s0, 152(sp) # 4-byte Folded Reload 950; ZHINX32-NEXT: lw s1, 148(sp) # 4-byte Folded Reload 951; ZHINX32-NEXT: lw s2, 144(sp) # 4-byte Folded Reload 952; ZHINX32-NEXT: lw s3, 140(sp) # 4-byte Folded Reload 953; ZHINX32-NEXT: lw s4, 136(sp) # 4-byte Folded Reload 954; ZHINX32-NEXT: lw s5, 132(sp) # 4-byte Folded Reload 955; ZHINX32-NEXT: lw s6, 128(sp) # 4-byte Folded Reload 956; ZHINX32-NEXT: lw s7, 124(sp) # 4-byte Folded Reload 957; ZHINX32-NEXT: lw s8, 120(sp) # 4-byte Folded Reload 958; ZHINX32-NEXT: lw s9, 116(sp) # 4-byte Folded Reload 959; ZHINX32-NEXT: lw s10, 112(sp) # 4-byte Folded Reload 960; ZHINX32-NEXT: lw s11, 108(sp) # 4-byte Folded Reload 961; ZHINX32-NEXT: addi sp, sp, 160 962; ZHINX32-NEXT: ret 963; 964; ZHINX64-LABEL: caller_float_32: 965; ZHINX64: # %bb.0: 966; ZHINX64-NEXT: addi sp, sp, -208 967; ZHINX64-NEXT: sd ra, 200(sp) # 8-byte Folded Spill 968; ZHINX64-NEXT: sd s0, 192(sp) # 8-byte Folded Spill 969; ZHINX64-NEXT: sd s1, 184(sp) # 8-byte Folded Spill 970; ZHINX64-NEXT: sd s2, 176(sp) # 8-byte Folded Spill 971; ZHINX64-NEXT: sd s3, 168(sp) # 8-byte Folded Spill 972; ZHINX64-NEXT: sd s4, 160(sp) # 8-byte Folded Spill 973; ZHINX64-NEXT: sd s5, 152(sp) # 8-byte Folded Spill 974; ZHINX64-NEXT: sd s6, 144(sp) # 8-byte Folded Spill 975; ZHINX64-NEXT: sd s7, 136(sp) # 8-byte Folded Spill 976; ZHINX64-NEXT: sd s8, 128(sp) # 8-byte Folded Spill 977; ZHINX64-NEXT: sd s9, 120(sp) # 8-byte Folded Spill 978; ZHINX64-NEXT: sd s10, 112(sp) # 8-byte Folded Spill 979; ZHINX64-NEXT: sd s11, 104(sp) # 8-byte Folded Spill 980; ZHINX64-NEXT: sw a7, 100(sp) # 4-byte Folded Spill 981; ZHINX64-NEXT: sw a6, 96(sp) # 4-byte Folded Spill 982; ZHINX64-NEXT: sw a5, 92(sp) # 4-byte Folded Spill 983; ZHINX64-NEXT: sw a4, 88(sp) # 4-byte Folded Spill 984; ZHINX64-NEXT: mv a7, a3 985; ZHINX64-NEXT: mv a6, a2 986; ZHINX64-NEXT: mv a5, a1 987; ZHINX64-NEXT: lw t3, 208(sp) 988; ZHINX64-NEXT: lw t4, 216(sp) 989; ZHINX64-NEXT: lw t5, 224(sp) 990; ZHINX64-NEXT: lw t6, 232(sp) 991; ZHINX64-NEXT: lw t0, 240(sp) 992; ZHINX64-NEXT: lw t1, 248(sp) 993; ZHINX64-NEXT: lw t2, 256(sp) 994; ZHINX64-NEXT: lw s0, 264(sp) 995; ZHINX64-NEXT: lw s1, 272(sp) 996; ZHINX64-NEXT: lw s2, 280(sp) 997; ZHINX64-NEXT: lw s3, 288(sp) 998; ZHINX64-NEXT: lw s4, 296(sp) 999; ZHINX64-NEXT: lw s5, 304(sp) 1000; ZHINX64-NEXT: lw s6, 312(sp) 1001; ZHINX64-NEXT: lw s7, 320(sp) 1002; ZHINX64-NEXT: lw s8, 328(sp) 1003; ZHINX64-NEXT: lw s9, 336(sp) 1004; ZHINX64-NEXT: lw s10, 344(sp) 1005; ZHINX64-NEXT: lw s11, 352(sp) 1006; ZHINX64-NEXT: lw ra, 360(sp) 1007; ZHINX64-NEXT: lw a1, 368(sp) 1008; ZHINX64-NEXT: lw a2, 376(sp) 1009; ZHINX64-NEXT: lw a3, 384(sp) 1010; ZHINX64-NEXT: lw a4, 392(sp) 1011; ZHINX64-NEXT: sw a1, 64(sp) 1012; ZHINX64-NEXT: sw a2, 68(sp) 1013; ZHINX64-NEXT: sw a3, 72(sp) 1014; ZHINX64-NEXT: sw a4, 76(sp) 1015; ZHINX64-NEXT: sw s9, 48(sp) 1016; ZHINX64-NEXT: sw s10, 52(sp) 1017; ZHINX64-NEXT: sw s11, 56(sp) 1018; ZHINX64-NEXT: sw ra, 60(sp) 1019; ZHINX64-NEXT: sw s5, 32(sp) 1020; ZHINX64-NEXT: sw s6, 36(sp) 1021; ZHINX64-NEXT: sw s7, 40(sp) 1022; ZHINX64-NEXT: sw s8, 44(sp) 1023; ZHINX64-NEXT: sw s1, 16(sp) 1024; ZHINX64-NEXT: sw s2, 20(sp) 1025; ZHINX64-NEXT: sw s3, 24(sp) 1026; ZHINX64-NEXT: sw s4, 28(sp) 1027; ZHINX64-NEXT: sw t0, 0(sp) 1028; ZHINX64-NEXT: sw t1, 4(sp) 1029; ZHINX64-NEXT: sw t2, 8(sp) 1030; ZHINX64-NEXT: sw s0, 12(sp) 1031; ZHINX64-NEXT: mv a1, a5 1032; ZHINX64-NEXT: mv a2, a6 1033; ZHINX64-NEXT: mv a3, a7 1034; ZHINX64-NEXT: lw a4, 88(sp) # 4-byte Folded Reload 1035; ZHINX64-NEXT: lw a5, 92(sp) # 4-byte Folded Reload 1036; ZHINX64-NEXT: lw a6, 96(sp) # 4-byte Folded Reload 1037; ZHINX64-NEXT: lw a7, 100(sp) # 4-byte Folded Reload 1038; ZHINX64-NEXT: call callee_float_32 1039; ZHINX64-NEXT: ld ra, 200(sp) # 8-byte Folded Reload 1040; ZHINX64-NEXT: ld s0, 192(sp) # 8-byte Folded Reload 1041; ZHINX64-NEXT: ld s1, 184(sp) # 8-byte Folded Reload 1042; ZHINX64-NEXT: ld s2, 176(sp) # 8-byte Folded Reload 1043; ZHINX64-NEXT: ld s3, 168(sp) # 8-byte Folded Reload 1044; ZHINX64-NEXT: ld s4, 160(sp) # 8-byte Folded Reload 1045; ZHINX64-NEXT: ld s5, 152(sp) # 8-byte Folded Reload 1046; ZHINX64-NEXT: ld s6, 144(sp) # 8-byte Folded Reload 1047; ZHINX64-NEXT: ld s7, 136(sp) # 8-byte Folded Reload 1048; ZHINX64-NEXT: ld s8, 128(sp) # 8-byte Folded Reload 1049; ZHINX64-NEXT: ld s9, 120(sp) # 8-byte Folded Reload 1050; ZHINX64-NEXT: ld s10, 112(sp) # 8-byte Folded Reload 1051; ZHINX64-NEXT: ld s11, 104(sp) # 8-byte Folded Reload 1052; ZHINX64-NEXT: addi sp, sp, 208 1053; ZHINX64-NEXT: ret 1054; 1055; ZFINX32-LABEL: caller_float_32: 1056; ZFINX32: # %bb.0: 1057; ZFINX32-NEXT: addi sp, sp, -160 1058; ZFINX32-NEXT: sw ra, 156(sp) # 4-byte Folded Spill 1059; ZFINX32-NEXT: sw s0, 152(sp) # 4-byte Folded Spill 1060; ZFINX32-NEXT: sw s1, 148(sp) # 4-byte Folded Spill 1061; ZFINX32-NEXT: sw s2, 144(sp) # 4-byte Folded Spill 1062; ZFINX32-NEXT: sw s3, 140(sp) # 4-byte Folded Spill 1063; ZFINX32-NEXT: sw s4, 136(sp) # 4-byte Folded Spill 1064; ZFINX32-NEXT: sw s5, 132(sp) # 4-byte Folded Spill 1065; ZFINX32-NEXT: sw s6, 128(sp) # 4-byte Folded Spill 1066; ZFINX32-NEXT: sw s7, 124(sp) # 4-byte Folded Spill 1067; ZFINX32-NEXT: sw s8, 120(sp) # 4-byte Folded Spill 1068; ZFINX32-NEXT: sw s9, 116(sp) # 4-byte Folded Spill 1069; ZFINX32-NEXT: sw s10, 112(sp) # 4-byte Folded Spill 1070; ZFINX32-NEXT: sw s11, 108(sp) # 4-byte Folded Spill 1071; ZFINX32-NEXT: sw a7, 104(sp) # 4-byte Folded Spill 1072; ZFINX32-NEXT: sw a6, 100(sp) # 4-byte Folded Spill 1073; ZFINX32-NEXT: sw a5, 96(sp) # 4-byte Folded Spill 1074; ZFINX32-NEXT: sw a4, 92(sp) # 4-byte Folded Spill 1075; ZFINX32-NEXT: mv a7, a3 1076; ZFINX32-NEXT: mv a6, a2 1077; ZFINX32-NEXT: mv a5, a1 1078; ZFINX32-NEXT: lw t3, 160(sp) 1079; ZFINX32-NEXT: lw t4, 164(sp) 1080; ZFINX32-NEXT: lw t5, 168(sp) 1081; ZFINX32-NEXT: lw t6, 172(sp) 1082; ZFINX32-NEXT: lw t0, 176(sp) 1083; ZFINX32-NEXT: lw t1, 180(sp) 1084; ZFINX32-NEXT: lw t2, 184(sp) 1085; ZFINX32-NEXT: lw s0, 188(sp) 1086; ZFINX32-NEXT: lw s1, 192(sp) 1087; ZFINX32-NEXT: lw s2, 196(sp) 1088; ZFINX32-NEXT: lw s3, 200(sp) 1089; ZFINX32-NEXT: lw s4, 204(sp) 1090; ZFINX32-NEXT: lw s5, 208(sp) 1091; ZFINX32-NEXT: lw s6, 212(sp) 1092; ZFINX32-NEXT: lw s7, 216(sp) 1093; ZFINX32-NEXT: lw s8, 220(sp) 1094; ZFINX32-NEXT: lw s9, 224(sp) 1095; ZFINX32-NEXT: lw s10, 228(sp) 1096; ZFINX32-NEXT: lw s11, 232(sp) 1097; ZFINX32-NEXT: lw ra, 236(sp) 1098; ZFINX32-NEXT: lw a1, 240(sp) 1099; ZFINX32-NEXT: lw a2, 244(sp) 1100; ZFINX32-NEXT: lw a3, 248(sp) 1101; ZFINX32-NEXT: lw a4, 252(sp) 1102; ZFINX32-NEXT: sw a1, 64(sp) 1103; ZFINX32-NEXT: sw a2, 68(sp) 1104; ZFINX32-NEXT: sw a3, 72(sp) 1105; ZFINX32-NEXT: sw a4, 76(sp) 1106; ZFINX32-NEXT: sw s9, 48(sp) 1107; ZFINX32-NEXT: sw s10, 52(sp) 1108; ZFINX32-NEXT: sw s11, 56(sp) 1109; ZFINX32-NEXT: sw ra, 60(sp) 1110; ZFINX32-NEXT: sw s5, 32(sp) 1111; ZFINX32-NEXT: sw s6, 36(sp) 1112; ZFINX32-NEXT: sw s7, 40(sp) 1113; ZFINX32-NEXT: sw s8, 44(sp) 1114; ZFINX32-NEXT: sw s1, 16(sp) 1115; ZFINX32-NEXT: sw s2, 20(sp) 1116; ZFINX32-NEXT: sw s3, 24(sp) 1117; ZFINX32-NEXT: sw s4, 28(sp) 1118; ZFINX32-NEXT: sw t0, 0(sp) 1119; ZFINX32-NEXT: sw t1, 4(sp) 1120; ZFINX32-NEXT: sw t2, 8(sp) 1121; ZFINX32-NEXT: sw s0, 12(sp) 1122; ZFINX32-NEXT: mv a1, a5 1123; ZFINX32-NEXT: mv a2, a6 1124; ZFINX32-NEXT: mv a3, a7 1125; ZFINX32-NEXT: lw a4, 92(sp) # 4-byte Folded Reload 1126; ZFINX32-NEXT: lw a5, 96(sp) # 4-byte Folded Reload 1127; ZFINX32-NEXT: lw a6, 100(sp) # 4-byte Folded Reload 1128; ZFINX32-NEXT: lw a7, 104(sp) # 4-byte Folded Reload 1129; ZFINX32-NEXT: call callee_float_32 1130; ZFINX32-NEXT: lw ra, 156(sp) # 4-byte Folded Reload 1131; ZFINX32-NEXT: lw s0, 152(sp) # 4-byte Folded Reload 1132; ZFINX32-NEXT: lw s1, 148(sp) # 4-byte Folded Reload 1133; ZFINX32-NEXT: lw s2, 144(sp) # 4-byte Folded Reload 1134; ZFINX32-NEXT: lw s3, 140(sp) # 4-byte Folded Reload 1135; ZFINX32-NEXT: lw s4, 136(sp) # 4-byte Folded Reload 1136; ZFINX32-NEXT: lw s5, 132(sp) # 4-byte Folded Reload 1137; ZFINX32-NEXT: lw s6, 128(sp) # 4-byte Folded Reload 1138; ZFINX32-NEXT: lw s7, 124(sp) # 4-byte Folded Reload 1139; ZFINX32-NEXT: lw s8, 120(sp) # 4-byte Folded Reload 1140; ZFINX32-NEXT: lw s9, 116(sp) # 4-byte Folded Reload 1141; ZFINX32-NEXT: lw s10, 112(sp) # 4-byte Folded Reload 1142; ZFINX32-NEXT: lw s11, 108(sp) # 4-byte Folded Reload 1143; ZFINX32-NEXT: addi sp, sp, 160 1144; ZFINX32-NEXT: ret 1145; 1146; ZFINX64-LABEL: caller_float_32: 1147; ZFINX64: # %bb.0: 1148; ZFINX64-NEXT: addi sp, sp, -208 1149; ZFINX64-NEXT: sd ra, 200(sp) # 8-byte Folded Spill 1150; ZFINX64-NEXT: sd s0, 192(sp) # 8-byte Folded Spill 1151; ZFINX64-NEXT: sd s1, 184(sp) # 8-byte Folded Spill 1152; ZFINX64-NEXT: sd s2, 176(sp) # 8-byte Folded Spill 1153; ZFINX64-NEXT: sd s3, 168(sp) # 8-byte Folded Spill 1154; ZFINX64-NEXT: sd s4, 160(sp) # 8-byte Folded Spill 1155; ZFINX64-NEXT: sd s5, 152(sp) # 8-byte Folded Spill 1156; ZFINX64-NEXT: sd s6, 144(sp) # 8-byte Folded Spill 1157; ZFINX64-NEXT: sd s7, 136(sp) # 8-byte Folded Spill 1158; ZFINX64-NEXT: sd s8, 128(sp) # 8-byte Folded Spill 1159; ZFINX64-NEXT: sd s9, 120(sp) # 8-byte Folded Spill 1160; ZFINX64-NEXT: sd s10, 112(sp) # 8-byte Folded Spill 1161; ZFINX64-NEXT: sd s11, 104(sp) # 8-byte Folded Spill 1162; ZFINX64-NEXT: sw a7, 100(sp) # 4-byte Folded Spill 1163; ZFINX64-NEXT: sw a6, 96(sp) # 4-byte Folded Spill 1164; ZFINX64-NEXT: sw a5, 92(sp) # 4-byte Folded Spill 1165; ZFINX64-NEXT: sw a4, 88(sp) # 4-byte Folded Spill 1166; ZFINX64-NEXT: mv a7, a3 1167; ZFINX64-NEXT: mv a6, a2 1168; ZFINX64-NEXT: mv a5, a1 1169; ZFINX64-NEXT: lw t3, 208(sp) 1170; ZFINX64-NEXT: lw t4, 216(sp) 1171; ZFINX64-NEXT: lw t5, 224(sp) 1172; ZFINX64-NEXT: lw t6, 232(sp) 1173; ZFINX64-NEXT: lw t0, 240(sp) 1174; ZFINX64-NEXT: lw t1, 248(sp) 1175; ZFINX64-NEXT: lw t2, 256(sp) 1176; ZFINX64-NEXT: lw s0, 264(sp) 1177; ZFINX64-NEXT: lw s1, 272(sp) 1178; ZFINX64-NEXT: lw s2, 280(sp) 1179; ZFINX64-NEXT: lw s3, 288(sp) 1180; ZFINX64-NEXT: lw s4, 296(sp) 1181; ZFINX64-NEXT: lw s5, 304(sp) 1182; ZFINX64-NEXT: lw s6, 312(sp) 1183; ZFINX64-NEXT: lw s7, 320(sp) 1184; ZFINX64-NEXT: lw s8, 328(sp) 1185; ZFINX64-NEXT: lw s9, 336(sp) 1186; ZFINX64-NEXT: lw s10, 344(sp) 1187; ZFINX64-NEXT: lw s11, 352(sp) 1188; ZFINX64-NEXT: lw ra, 360(sp) 1189; ZFINX64-NEXT: lw a1, 368(sp) 1190; ZFINX64-NEXT: lw a2, 376(sp) 1191; ZFINX64-NEXT: lw a3, 384(sp) 1192; ZFINX64-NEXT: lw a4, 392(sp) 1193; ZFINX64-NEXT: sw a1, 64(sp) 1194; ZFINX64-NEXT: sw a2, 68(sp) 1195; ZFINX64-NEXT: sw a3, 72(sp) 1196; ZFINX64-NEXT: sw a4, 76(sp) 1197; ZFINX64-NEXT: sw s9, 48(sp) 1198; ZFINX64-NEXT: sw s10, 52(sp) 1199; ZFINX64-NEXT: sw s11, 56(sp) 1200; ZFINX64-NEXT: sw ra, 60(sp) 1201; ZFINX64-NEXT: sw s5, 32(sp) 1202; ZFINX64-NEXT: sw s6, 36(sp) 1203; ZFINX64-NEXT: sw s7, 40(sp) 1204; ZFINX64-NEXT: sw s8, 44(sp) 1205; ZFINX64-NEXT: sw s1, 16(sp) 1206; ZFINX64-NEXT: sw s2, 20(sp) 1207; ZFINX64-NEXT: sw s3, 24(sp) 1208; ZFINX64-NEXT: sw s4, 28(sp) 1209; ZFINX64-NEXT: sw t0, 0(sp) 1210; ZFINX64-NEXT: sw t1, 4(sp) 1211; ZFINX64-NEXT: sw t2, 8(sp) 1212; ZFINX64-NEXT: sw s0, 12(sp) 1213; ZFINX64-NEXT: mv a1, a5 1214; ZFINX64-NEXT: mv a2, a6 1215; ZFINX64-NEXT: mv a3, a7 1216; ZFINX64-NEXT: lw a4, 88(sp) # 4-byte Folded Reload 1217; ZFINX64-NEXT: lw a5, 92(sp) # 4-byte Folded Reload 1218; ZFINX64-NEXT: lw a6, 96(sp) # 4-byte Folded Reload 1219; ZFINX64-NEXT: lw a7, 100(sp) # 4-byte Folded Reload 1220; ZFINX64-NEXT: call callee_float_32 1221; ZFINX64-NEXT: ld ra, 200(sp) # 8-byte Folded Reload 1222; ZFINX64-NEXT: ld s0, 192(sp) # 8-byte Folded Reload 1223; ZFINX64-NEXT: ld s1, 184(sp) # 8-byte Folded Reload 1224; ZFINX64-NEXT: ld s2, 176(sp) # 8-byte Folded Reload 1225; ZFINX64-NEXT: ld s3, 168(sp) # 8-byte Folded Reload 1226; ZFINX64-NEXT: ld s4, 160(sp) # 8-byte Folded Reload 1227; ZFINX64-NEXT: ld s5, 152(sp) # 8-byte Folded Reload 1228; ZFINX64-NEXT: ld s6, 144(sp) # 8-byte Folded Reload 1229; ZFINX64-NEXT: ld s7, 136(sp) # 8-byte Folded Reload 1230; ZFINX64-NEXT: ld s8, 128(sp) # 8-byte Folded Reload 1231; ZFINX64-NEXT: ld s9, 120(sp) # 8-byte Folded Reload 1232; ZFINX64-NEXT: ld s10, 112(sp) # 8-byte Folded Reload 1233; ZFINX64-NEXT: ld s11, 104(sp) # 8-byte Folded Reload 1234; ZFINX64-NEXT: addi sp, sp, 208 1235; ZFINX64-NEXT: ret 1236; 1237; ZDINX32-LABEL: caller_float_32: 1238; ZDINX32: # %bb.0: 1239; ZDINX32-NEXT: addi sp, sp, -160 1240; ZDINX32-NEXT: sw ra, 156(sp) # 4-byte Folded Spill 1241; ZDINX32-NEXT: sw s0, 152(sp) # 4-byte Folded Spill 1242; ZDINX32-NEXT: sw s1, 148(sp) # 4-byte Folded Spill 1243; ZDINX32-NEXT: sw s2, 144(sp) # 4-byte Folded Spill 1244; ZDINX32-NEXT: sw s3, 140(sp) # 4-byte Folded Spill 1245; ZDINX32-NEXT: sw s4, 136(sp) # 4-byte Folded Spill 1246; ZDINX32-NEXT: sw s5, 132(sp) # 4-byte Folded Spill 1247; ZDINX32-NEXT: sw s6, 128(sp) # 4-byte Folded Spill 1248; ZDINX32-NEXT: sw s7, 124(sp) # 4-byte Folded Spill 1249; ZDINX32-NEXT: sw s8, 120(sp) # 4-byte Folded Spill 1250; ZDINX32-NEXT: sw s9, 116(sp) # 4-byte Folded Spill 1251; ZDINX32-NEXT: sw s10, 112(sp) # 4-byte Folded Spill 1252; ZDINX32-NEXT: sw s11, 108(sp) # 4-byte Folded Spill 1253; ZDINX32-NEXT: sw a7, 104(sp) # 4-byte Folded Spill 1254; ZDINX32-NEXT: sw a6, 100(sp) # 4-byte Folded Spill 1255; ZDINX32-NEXT: sw a5, 96(sp) # 4-byte Folded Spill 1256; ZDINX32-NEXT: sw a4, 92(sp) # 4-byte Folded Spill 1257; ZDINX32-NEXT: mv a7, a3 1258; ZDINX32-NEXT: mv a6, a2 1259; ZDINX32-NEXT: mv a5, a1 1260; ZDINX32-NEXT: lw t3, 160(sp) 1261; ZDINX32-NEXT: lw t4, 164(sp) 1262; ZDINX32-NEXT: lw t5, 168(sp) 1263; ZDINX32-NEXT: lw t6, 172(sp) 1264; ZDINX32-NEXT: lw t0, 176(sp) 1265; ZDINX32-NEXT: lw t1, 180(sp) 1266; ZDINX32-NEXT: lw t2, 184(sp) 1267; ZDINX32-NEXT: lw s0, 188(sp) 1268; ZDINX32-NEXT: lw s1, 192(sp) 1269; ZDINX32-NEXT: lw s2, 196(sp) 1270; ZDINX32-NEXT: lw s3, 200(sp) 1271; ZDINX32-NEXT: lw s4, 204(sp) 1272; ZDINX32-NEXT: lw s5, 208(sp) 1273; ZDINX32-NEXT: lw s6, 212(sp) 1274; ZDINX32-NEXT: lw s7, 216(sp) 1275; ZDINX32-NEXT: lw s8, 220(sp) 1276; ZDINX32-NEXT: lw s9, 224(sp) 1277; ZDINX32-NEXT: lw s10, 228(sp) 1278; ZDINX32-NEXT: lw s11, 232(sp) 1279; ZDINX32-NEXT: lw ra, 236(sp) 1280; ZDINX32-NEXT: lw a1, 240(sp) 1281; ZDINX32-NEXT: lw a2, 244(sp) 1282; ZDINX32-NEXT: lw a3, 248(sp) 1283; ZDINX32-NEXT: lw a4, 252(sp) 1284; ZDINX32-NEXT: sw a1, 64(sp) 1285; ZDINX32-NEXT: sw a2, 68(sp) 1286; ZDINX32-NEXT: sw a3, 72(sp) 1287; ZDINX32-NEXT: sw a4, 76(sp) 1288; ZDINX32-NEXT: sw s9, 48(sp) 1289; ZDINX32-NEXT: sw s10, 52(sp) 1290; ZDINX32-NEXT: sw s11, 56(sp) 1291; ZDINX32-NEXT: sw ra, 60(sp) 1292; ZDINX32-NEXT: sw s5, 32(sp) 1293; ZDINX32-NEXT: sw s6, 36(sp) 1294; ZDINX32-NEXT: sw s7, 40(sp) 1295; ZDINX32-NEXT: sw s8, 44(sp) 1296; ZDINX32-NEXT: sw s1, 16(sp) 1297; ZDINX32-NEXT: sw s2, 20(sp) 1298; ZDINX32-NEXT: sw s3, 24(sp) 1299; ZDINX32-NEXT: sw s4, 28(sp) 1300; ZDINX32-NEXT: sw t0, 0(sp) 1301; ZDINX32-NEXT: sw t1, 4(sp) 1302; ZDINX32-NEXT: sw t2, 8(sp) 1303; ZDINX32-NEXT: sw s0, 12(sp) 1304; ZDINX32-NEXT: mv a1, a5 1305; ZDINX32-NEXT: mv a2, a6 1306; ZDINX32-NEXT: mv a3, a7 1307; ZDINX32-NEXT: lw a4, 92(sp) # 4-byte Folded Reload 1308; ZDINX32-NEXT: lw a5, 96(sp) # 4-byte Folded Reload 1309; ZDINX32-NEXT: lw a6, 100(sp) # 4-byte Folded Reload 1310; ZDINX32-NEXT: lw a7, 104(sp) # 4-byte Folded Reload 1311; ZDINX32-NEXT: call callee_float_32 1312; ZDINX32-NEXT: lw ra, 156(sp) # 4-byte Folded Reload 1313; ZDINX32-NEXT: lw s0, 152(sp) # 4-byte Folded Reload 1314; ZDINX32-NEXT: lw s1, 148(sp) # 4-byte Folded Reload 1315; ZDINX32-NEXT: lw s2, 144(sp) # 4-byte Folded Reload 1316; ZDINX32-NEXT: lw s3, 140(sp) # 4-byte Folded Reload 1317; ZDINX32-NEXT: lw s4, 136(sp) # 4-byte Folded Reload 1318; ZDINX32-NEXT: lw s5, 132(sp) # 4-byte Folded Reload 1319; ZDINX32-NEXT: lw s6, 128(sp) # 4-byte Folded Reload 1320; ZDINX32-NEXT: lw s7, 124(sp) # 4-byte Folded Reload 1321; ZDINX32-NEXT: lw s8, 120(sp) # 4-byte Folded Reload 1322; ZDINX32-NEXT: lw s9, 116(sp) # 4-byte Folded Reload 1323; ZDINX32-NEXT: lw s10, 112(sp) # 4-byte Folded Reload 1324; ZDINX32-NEXT: lw s11, 108(sp) # 4-byte Folded Reload 1325; ZDINX32-NEXT: addi sp, sp, 160 1326; ZDINX32-NEXT: ret 1327; 1328; ZDINX64-LABEL: caller_float_32: 1329; ZDINX64: # %bb.0: 1330; ZDINX64-NEXT: addi sp, sp, -208 1331; ZDINX64-NEXT: sd ra, 200(sp) # 8-byte Folded Spill 1332; ZDINX64-NEXT: sd s0, 192(sp) # 8-byte Folded Spill 1333; ZDINX64-NEXT: sd s1, 184(sp) # 8-byte Folded Spill 1334; ZDINX64-NEXT: sd s2, 176(sp) # 8-byte Folded Spill 1335; ZDINX64-NEXT: sd s3, 168(sp) # 8-byte Folded Spill 1336; ZDINX64-NEXT: sd s4, 160(sp) # 8-byte Folded Spill 1337; ZDINX64-NEXT: sd s5, 152(sp) # 8-byte Folded Spill 1338; ZDINX64-NEXT: sd s6, 144(sp) # 8-byte Folded Spill 1339; ZDINX64-NEXT: sd s7, 136(sp) # 8-byte Folded Spill 1340; ZDINX64-NEXT: sd s8, 128(sp) # 8-byte Folded Spill 1341; ZDINX64-NEXT: sd s9, 120(sp) # 8-byte Folded Spill 1342; ZDINX64-NEXT: sd s10, 112(sp) # 8-byte Folded Spill 1343; ZDINX64-NEXT: sd s11, 104(sp) # 8-byte Folded Spill 1344; ZDINX64-NEXT: sw a7, 100(sp) # 4-byte Folded Spill 1345; ZDINX64-NEXT: sw a6, 96(sp) # 4-byte Folded Spill 1346; ZDINX64-NEXT: sw a5, 92(sp) # 4-byte Folded Spill 1347; ZDINX64-NEXT: sw a4, 88(sp) # 4-byte Folded Spill 1348; ZDINX64-NEXT: mv a7, a3 1349; ZDINX64-NEXT: mv a6, a2 1350; ZDINX64-NEXT: mv a5, a1 1351; ZDINX64-NEXT: lw t3, 208(sp) 1352; ZDINX64-NEXT: lw t4, 216(sp) 1353; ZDINX64-NEXT: lw t5, 224(sp) 1354; ZDINX64-NEXT: lw t6, 232(sp) 1355; ZDINX64-NEXT: lw t0, 240(sp) 1356; ZDINX64-NEXT: lw t1, 248(sp) 1357; ZDINX64-NEXT: lw t2, 256(sp) 1358; ZDINX64-NEXT: lw s0, 264(sp) 1359; ZDINX64-NEXT: lw s1, 272(sp) 1360; ZDINX64-NEXT: lw s2, 280(sp) 1361; ZDINX64-NEXT: lw s3, 288(sp) 1362; ZDINX64-NEXT: lw s4, 296(sp) 1363; ZDINX64-NEXT: lw s5, 304(sp) 1364; ZDINX64-NEXT: lw s6, 312(sp) 1365; ZDINX64-NEXT: lw s7, 320(sp) 1366; ZDINX64-NEXT: lw s8, 328(sp) 1367; ZDINX64-NEXT: lw s9, 336(sp) 1368; ZDINX64-NEXT: lw s10, 344(sp) 1369; ZDINX64-NEXT: lw s11, 352(sp) 1370; ZDINX64-NEXT: lw ra, 360(sp) 1371; ZDINX64-NEXT: lw a1, 368(sp) 1372; ZDINX64-NEXT: lw a2, 376(sp) 1373; ZDINX64-NEXT: lw a3, 384(sp) 1374; ZDINX64-NEXT: lw a4, 392(sp) 1375; ZDINX64-NEXT: sw a1, 64(sp) 1376; ZDINX64-NEXT: sw a2, 68(sp) 1377; ZDINX64-NEXT: sw a3, 72(sp) 1378; ZDINX64-NEXT: sw a4, 76(sp) 1379; ZDINX64-NEXT: sw s9, 48(sp) 1380; ZDINX64-NEXT: sw s10, 52(sp) 1381; ZDINX64-NEXT: sw s11, 56(sp) 1382; ZDINX64-NEXT: sw ra, 60(sp) 1383; ZDINX64-NEXT: sw s5, 32(sp) 1384; ZDINX64-NEXT: sw s6, 36(sp) 1385; ZDINX64-NEXT: sw s7, 40(sp) 1386; ZDINX64-NEXT: sw s8, 44(sp) 1387; ZDINX64-NEXT: sw s1, 16(sp) 1388; ZDINX64-NEXT: sw s2, 20(sp) 1389; ZDINX64-NEXT: sw s3, 24(sp) 1390; ZDINX64-NEXT: sw s4, 28(sp) 1391; ZDINX64-NEXT: sw t0, 0(sp) 1392; ZDINX64-NEXT: sw t1, 4(sp) 1393; ZDINX64-NEXT: sw t2, 8(sp) 1394; ZDINX64-NEXT: sw s0, 12(sp) 1395; ZDINX64-NEXT: mv a1, a5 1396; ZDINX64-NEXT: mv a2, a6 1397; ZDINX64-NEXT: mv a3, a7 1398; ZDINX64-NEXT: lw a4, 88(sp) # 4-byte Folded Reload 1399; ZDINX64-NEXT: lw a5, 92(sp) # 4-byte Folded Reload 1400; ZDINX64-NEXT: lw a6, 96(sp) # 4-byte Folded Reload 1401; ZDINX64-NEXT: lw a7, 100(sp) # 4-byte Folded Reload 1402; ZDINX64-NEXT: call callee_float_32 1403; ZDINX64-NEXT: ld ra, 200(sp) # 8-byte Folded Reload 1404; ZDINX64-NEXT: ld s0, 192(sp) # 8-byte Folded Reload 1405; ZDINX64-NEXT: ld s1, 184(sp) # 8-byte Folded Reload 1406; ZDINX64-NEXT: ld s2, 176(sp) # 8-byte Folded Reload 1407; ZDINX64-NEXT: ld s3, 168(sp) # 8-byte Folded Reload 1408; ZDINX64-NEXT: ld s4, 160(sp) # 8-byte Folded Reload 1409; ZDINX64-NEXT: ld s5, 152(sp) # 8-byte Folded Reload 1410; ZDINX64-NEXT: ld s6, 144(sp) # 8-byte Folded Reload 1411; ZDINX64-NEXT: ld s7, 136(sp) # 8-byte Folded Reload 1412; ZDINX64-NEXT: ld s8, 128(sp) # 8-byte Folded Reload 1413; ZDINX64-NEXT: ld s9, 120(sp) # 8-byte Folded Reload 1414; ZDINX64-NEXT: ld s10, 112(sp) # 8-byte Folded Reload 1415; ZDINX64-NEXT: ld s11, 104(sp) # 8-byte Folded Reload 1416; ZDINX64-NEXT: addi sp, sp, 208 1417; ZDINX64-NEXT: ret 1418 %C = call fastcc float @callee_float_32(<32 x float> %A) 1419 ret float %C 1420} 1421 1422define fastcc double @callee_double_32(<32 x double> %A) nounwind { 1423; ZHINX32-LABEL: callee_double_32: 1424; ZHINX32: # %bb.0: 1425; ZHINX32-NEXT: ret 1426; 1427; ZHINX64-LABEL: callee_double_32: 1428; ZHINX64: # %bb.0: 1429; ZHINX64-NEXT: ret 1430; 1431; ZFINX32-LABEL: callee_double_32: 1432; ZFINX32: # %bb.0: 1433; ZFINX32-NEXT: ret 1434; 1435; ZFINX64-LABEL: callee_double_32: 1436; ZFINX64: # %bb.0: 1437; ZFINX64-NEXT: ret 1438; 1439; ZDINX32-LABEL: callee_double_32: 1440; ZDINX32: # %bb.0: 1441; ZDINX32-NEXT: lw a0, 0(sp) 1442; ZDINX32-NEXT: lw a1, 4(sp) 1443; ZDINX32-NEXT: ret 1444; 1445; ZDINX64-LABEL: callee_double_32: 1446; ZDINX64: # %bb.0: 1447; ZDINX64-NEXT: ret 1448 %B = extractelement <32 x double> %A, i32 0 1449 ret double %B 1450} 1451