1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: sed 's/iXLen/i32/g' %s | llc -mcpu=pwr7 -ppc-asm-full-reg-names \ 3; RUN: -ppc-vsr-nums-as-vr -mtriple=powerpc64-unknown-unknown \ 4; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=BE 5; RUN: sed 's/iXLen/i32/g' %s | llc -mcpu=pwr8 -ppc-asm-full-reg-names \ 6; RUN: -ppc-vsr-nums-as-vr -mtriple=powerpc64le-unknown-unknown \ 7; RUN: -verify-machineinstrs | FileCheck %s 8; RUN: sed 's/iXLen/i32/g' %s | llc -mcpu=pwr8 -ppc-asm-full-reg-names \ 9; RUN: -ppc-vsr-nums-as-vr -mtriple=powerpc64le-unknown-unknown \ 10; RUN: -verify-machineinstrs --enable-unsafe-fp-math | \ 11; RUN: FileCheck %s --check-prefixes=FAST 12; RUN: sed 's/iXLen/i64/g' %s | llc -mcpu=pwr7 -ppc-asm-full-reg-names \ 13; RUN: -ppc-vsr-nums-as-vr -mtriple=powerpc64-unknown-unknown \ 14; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=BE 15; RUN: sed 's/iXLen/i64/g' %s | llc -mcpu=pwr8 -ppc-asm-full-reg-names \ 16; RUN: -ppc-vsr-nums-as-vr -mtriple=powerpc64le-unknown-unknown \ 17; RUN: -verify-machineinstrs | FileCheck %s --check-prefixes=CHECK 18; RUN: sed 's/iXLen/i64/g' %s | llc -mcpu=pwr8 -ppc-asm-full-reg-names \ 19; RUN: -ppc-vsr-nums-as-vr -mtriple=powerpc64le-unknown-unknown \ 20; RUN: -verify-machineinstrs --enable-unsafe-fp-math | \ 21; RUN: FileCheck %s --check-prefixes=FAST 22 23define <1 x i64> @lrint_v1f16(<1 x half> %x) { 24; BE-LABEL: lrint_v1f16: 25; BE: # %bb.0: 26; BE-NEXT: mflr r0 27; BE-NEXT: stdu r1, -112(r1) 28; BE-NEXT: std r0, 128(r1) 29; BE-NEXT: .cfi_def_cfa_offset 112 30; BE-NEXT: .cfi_offset lr, 16 31; BE-NEXT: bl __gnu_f2h_ieee 32; BE-NEXT: nop 33; BE-NEXT: clrldi r3, r3, 48 34; BE-NEXT: bl __gnu_h2f_ieee 35; BE-NEXT: nop 36; BE-NEXT: bl lrintf 37; BE-NEXT: nop 38; BE-NEXT: addi r1, r1, 112 39; BE-NEXT: ld r0, 16(r1) 40; BE-NEXT: mtlr r0 41; BE-NEXT: blr 42; 43; CHECK-LABEL: lrint_v1f16: 44; CHECK: # %bb.0: 45; CHECK-NEXT: mflr r0 46; CHECK-NEXT: stdu r1, -32(r1) 47; CHECK-NEXT: std r0, 48(r1) 48; CHECK-NEXT: .cfi_def_cfa_offset 32 49; CHECK-NEXT: .cfi_offset lr, 16 50; CHECK-NEXT: bl __gnu_f2h_ieee 51; CHECK-NEXT: nop 52; CHECK-NEXT: clrldi r3, r3, 48 53; CHECK-NEXT: bl __gnu_h2f_ieee 54; CHECK-NEXT: nop 55; CHECK-NEXT: bl lrintf 56; CHECK-NEXT: nop 57; CHECK-NEXT: addi r1, r1, 32 58; CHECK-NEXT: ld r0, 16(r1) 59; CHECK-NEXT: mtlr r0 60; CHECK-NEXT: blr 61; 62; FAST-LABEL: lrint_v1f16: 63; FAST: # %bb.0: 64; FAST-NEXT: mflr r0 65; FAST-NEXT: stdu r1, -32(r1) 66; FAST-NEXT: std r0, 48(r1) 67; FAST-NEXT: .cfi_def_cfa_offset 32 68; FAST-NEXT: .cfi_offset lr, 16 69; FAST-NEXT: bl __gnu_f2h_ieee 70; FAST-NEXT: nop 71; FAST-NEXT: clrldi r3, r3, 48 72; FAST-NEXT: bl __gnu_h2f_ieee 73; FAST-NEXT: nop 74; FAST-NEXT: fctid f0, f1 75; FAST-NEXT: mffprd r3, f0 76; FAST-NEXT: addi r1, r1, 32 77; FAST-NEXT: ld r0, 16(r1) 78; FAST-NEXT: mtlr r0 79; FAST-NEXT: blr 80 %a = call <1 x i64> @llvm.lrint.v1i64.v1f16(<1 x half> %x) 81 ret <1 x i64> %a 82} 83declare <1 x i64> @llvm.lrint.v1i64.v1f16(<1 x half>) 84 85define <2 x i64> @lrint_v2f16(<2 x half> %x) { 86; BE-LABEL: lrint_v2f16: 87; BE: # %bb.0: 88; BE-NEXT: mflr r0 89; BE-NEXT: stdu r1, -160(r1) 90; BE-NEXT: std r0, 176(r1) 91; BE-NEXT: .cfi_def_cfa_offset 160 92; BE-NEXT: .cfi_offset lr, 16 93; BE-NEXT: .cfi_offset r30, -24 94; BE-NEXT: .cfi_offset f31, -8 95; BE-NEXT: stfd f31, 152(r1) # 8-byte Folded Spill 96; BE-NEXT: fmr f31, f1 97; BE-NEXT: fmr f1, f2 98; BE-NEXT: std r30, 136(r1) # 8-byte Folded Spill 99; BE-NEXT: bl __gnu_f2h_ieee 100; BE-NEXT: nop 101; BE-NEXT: fmr f1, f31 102; BE-NEXT: mr r30, r3 103; BE-NEXT: bl __gnu_f2h_ieee 104; BE-NEXT: nop 105; BE-NEXT: clrldi r3, r3, 48 106; BE-NEXT: bl __gnu_h2f_ieee 107; BE-NEXT: nop 108; BE-NEXT: clrldi r3, r30, 48 109; BE-NEXT: fmr f31, f1 110; BE-NEXT: bl __gnu_h2f_ieee 111; BE-NEXT: nop 112; BE-NEXT: bl lrintf 113; BE-NEXT: nop 114; BE-NEXT: fmr f1, f31 115; BE-NEXT: std r3, 120(r1) 116; BE-NEXT: bl lrintf 117; BE-NEXT: nop 118; BE-NEXT: std r3, 112(r1) 119; BE-NEXT: addi r3, r1, 112 120; BE-NEXT: ld r30, 136(r1) # 8-byte Folded Reload 121; BE-NEXT: lfd f31, 152(r1) # 8-byte Folded Reload 122; BE-NEXT: lxvd2x v2, 0, r3 123; BE-NEXT: addi r1, r1, 160 124; BE-NEXT: ld r0, 16(r1) 125; BE-NEXT: mtlr r0 126; BE-NEXT: blr 127; 128; CHECK-LABEL: lrint_v2f16: 129; CHECK: # %bb.0: 130; CHECK-NEXT: mflr r0 131; CHECK-NEXT: stdu r1, -96(r1) 132; CHECK-NEXT: std r0, 112(r1) 133; CHECK-NEXT: .cfi_def_cfa_offset 96 134; CHECK-NEXT: .cfi_offset lr, 16 135; CHECK-NEXT: .cfi_offset r30, -24 136; CHECK-NEXT: .cfi_offset f31, -8 137; CHECK-NEXT: .cfi_offset v31, -48 138; CHECK-NEXT: li r3, 48 139; CHECK-NEXT: std r30, 72(r1) # 8-byte Folded Spill 140; CHECK-NEXT: stfd f31, 88(r1) # 8-byte Folded Spill 141; CHECK-NEXT: fmr f31, f2 142; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 143; CHECK-NEXT: bl __gnu_f2h_ieee 144; CHECK-NEXT: nop 145; CHECK-NEXT: fmr f1, f31 146; CHECK-NEXT: mr r30, r3 147; CHECK-NEXT: bl __gnu_f2h_ieee 148; CHECK-NEXT: nop 149; CHECK-NEXT: clrldi r3, r3, 48 150; CHECK-NEXT: bl __gnu_h2f_ieee 151; CHECK-NEXT: nop 152; CHECK-NEXT: clrldi r3, r30, 48 153; CHECK-NEXT: fmr f31, f1 154; CHECK-NEXT: bl __gnu_h2f_ieee 155; CHECK-NEXT: nop 156; CHECK-NEXT: bl lrintf 157; CHECK-NEXT: nop 158; CHECK-NEXT: fmr f1, f31 159; CHECK-NEXT: mtvsrd v31, r3 160; CHECK-NEXT: bl lrintf 161; CHECK-NEXT: nop 162; CHECK-NEXT: mtfprd f0, r3 163; CHECK-NEXT: li r3, 48 164; CHECK-NEXT: lfd f31, 88(r1) # 8-byte Folded Reload 165; CHECK-NEXT: ld r30, 72(r1) # 8-byte Folded Reload 166; CHECK-NEXT: xxmrghd v2, vs0, v31 167; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 168; CHECK-NEXT: addi r1, r1, 96 169; CHECK-NEXT: ld r0, 16(r1) 170; CHECK-NEXT: mtlr r0 171; CHECK-NEXT: blr 172; 173; FAST-LABEL: lrint_v2f16: 174; FAST: # %bb.0: 175; FAST-NEXT: mflr r0 176; FAST-NEXT: .cfi_def_cfa_offset 48 177; FAST-NEXT: .cfi_offset lr, 16 178; FAST-NEXT: .cfi_offset f30, -16 179; FAST-NEXT: .cfi_offset f31, -8 180; FAST-NEXT: stfd f30, -16(r1) # 8-byte Folded Spill 181; FAST-NEXT: stfd f31, -8(r1) # 8-byte Folded Spill 182; FAST-NEXT: stdu r1, -48(r1) 183; FAST-NEXT: fmr f31, f1 184; FAST-NEXT: fmr f1, f2 185; FAST-NEXT: std r0, 64(r1) 186; FAST-NEXT: bl __gnu_f2h_ieee 187; FAST-NEXT: nop 188; FAST-NEXT: clrldi r3, r3, 48 189; FAST-NEXT: bl __gnu_h2f_ieee 190; FAST-NEXT: nop 191; FAST-NEXT: fmr f30, f1 192; FAST-NEXT: fmr f1, f31 193; FAST-NEXT: bl __gnu_f2h_ieee 194; FAST-NEXT: nop 195; FAST-NEXT: clrldi r3, r3, 48 196; FAST-NEXT: bl __gnu_h2f_ieee 197; FAST-NEXT: nop 198; FAST-NEXT: fctid f0, f1 199; FAST-NEXT: fctid f1, f30 200; FAST-NEXT: mffprd r3, f0 201; FAST-NEXT: mtfprd f0, r3 202; FAST-NEXT: mffprd r3, f1 203; FAST-NEXT: mtfprd f1, r3 204; FAST-NEXT: xxmrghd v2, vs1, vs0 205; FAST-NEXT: addi r1, r1, 48 206; FAST-NEXT: ld r0, 16(r1) 207; FAST-NEXT: lfd f31, -8(r1) # 8-byte Folded Reload 208; FAST-NEXT: lfd f30, -16(r1) # 8-byte Folded Reload 209; FAST-NEXT: mtlr r0 210; FAST-NEXT: blr 211 %a = call <2 x i64> @llvm.lrint.v2i64.v2f16(<2 x half> %x) 212 ret <2 x i64> %a 213} 214declare <2 x i64> @llvm.lrint.v2i64.v2f16(<2 x half>) 215 216define <4 x i64> @lrint_v4f16(<4 x half> %x) { 217; BE-LABEL: lrint_v4f16: 218; BE: # %bb.0: 219; BE-NEXT: mflr r0 220; BE-NEXT: stdu r1, -208(r1) 221; BE-NEXT: std r0, 224(r1) 222; BE-NEXT: .cfi_def_cfa_offset 208 223; BE-NEXT: .cfi_offset lr, 16 224; BE-NEXT: .cfi_offset r28, -56 225; BE-NEXT: .cfi_offset r29, -48 226; BE-NEXT: .cfi_offset r30, -40 227; BE-NEXT: .cfi_offset f29, -24 228; BE-NEXT: .cfi_offset f30, -16 229; BE-NEXT: .cfi_offset f31, -8 230; BE-NEXT: stfd f29, 184(r1) # 8-byte Folded Spill 231; BE-NEXT: fmr f29, f1 232; BE-NEXT: fmr f1, f2 233; BE-NEXT: std r28, 152(r1) # 8-byte Folded Spill 234; BE-NEXT: std r29, 160(r1) # 8-byte Folded Spill 235; BE-NEXT: std r30, 168(r1) # 8-byte Folded Spill 236; BE-NEXT: stfd f30, 192(r1) # 8-byte Folded Spill 237; BE-NEXT: stfd f31, 200(r1) # 8-byte Folded Spill 238; BE-NEXT: fmr f31, f4 239; BE-NEXT: fmr f30, f3 240; BE-NEXT: bl __gnu_f2h_ieee 241; BE-NEXT: nop 242; BE-NEXT: fmr f1, f29 243; BE-NEXT: mr r30, r3 244; BE-NEXT: bl __gnu_f2h_ieee 245; BE-NEXT: nop 246; BE-NEXT: fmr f1, f31 247; BE-NEXT: mr r29, r3 248; BE-NEXT: bl __gnu_f2h_ieee 249; BE-NEXT: nop 250; BE-NEXT: fmr f1, f30 251; BE-NEXT: mr r28, r3 252; BE-NEXT: bl __gnu_f2h_ieee 253; BE-NEXT: nop 254; BE-NEXT: clrldi r3, r3, 48 255; BE-NEXT: bl __gnu_h2f_ieee 256; BE-NEXT: nop 257; BE-NEXT: clrldi r3, r28, 48 258; BE-NEXT: fmr f31, f1 259; BE-NEXT: bl __gnu_h2f_ieee 260; BE-NEXT: nop 261; BE-NEXT: clrldi r3, r29, 48 262; BE-NEXT: fmr f30, f1 263; BE-NEXT: bl __gnu_h2f_ieee 264; BE-NEXT: nop 265; BE-NEXT: clrldi r3, r30, 48 266; BE-NEXT: fmr f29, f1 267; BE-NEXT: bl __gnu_h2f_ieee 268; BE-NEXT: nop 269; BE-NEXT: bl lrintf 270; BE-NEXT: nop 271; BE-NEXT: fmr f1, f29 272; BE-NEXT: std r3, 120(r1) 273; BE-NEXT: bl lrintf 274; BE-NEXT: nop 275; BE-NEXT: fmr f1, f30 276; BE-NEXT: std r3, 112(r1) 277; BE-NEXT: bl lrintf 278; BE-NEXT: nop 279; BE-NEXT: fmr f1, f31 280; BE-NEXT: std r3, 136(r1) 281; BE-NEXT: bl lrintf 282; BE-NEXT: nop 283; BE-NEXT: std r3, 128(r1) 284; BE-NEXT: addi r3, r1, 112 285; BE-NEXT: ld r30, 168(r1) # 8-byte Folded Reload 286; BE-NEXT: lfd f31, 200(r1) # 8-byte Folded Reload 287; BE-NEXT: lfd f30, 192(r1) # 8-byte Folded Reload 288; BE-NEXT: lfd f29, 184(r1) # 8-byte Folded Reload 289; BE-NEXT: lxvd2x v2, 0, r3 290; BE-NEXT: addi r3, r1, 128 291; BE-NEXT: ld r29, 160(r1) # 8-byte Folded Reload 292; BE-NEXT: ld r28, 152(r1) # 8-byte Folded Reload 293; BE-NEXT: lxvd2x v3, 0, r3 294; BE-NEXT: addi r1, r1, 208 295; BE-NEXT: ld r0, 16(r1) 296; BE-NEXT: mtlr r0 297; BE-NEXT: blr 298; 299; CHECK-LABEL: lrint_v4f16: 300; CHECK: # %bb.0: 301; CHECK-NEXT: mflr r0 302; CHECK-NEXT: stdu r1, -144(r1) 303; CHECK-NEXT: std r0, 160(r1) 304; CHECK-NEXT: .cfi_def_cfa_offset 144 305; CHECK-NEXT: .cfi_offset lr, 16 306; CHECK-NEXT: .cfi_offset r28, -56 307; CHECK-NEXT: .cfi_offset r29, -48 308; CHECK-NEXT: .cfi_offset r30, -40 309; CHECK-NEXT: .cfi_offset f29, -24 310; CHECK-NEXT: .cfi_offset f30, -16 311; CHECK-NEXT: .cfi_offset f31, -8 312; CHECK-NEXT: .cfi_offset v30, -96 313; CHECK-NEXT: .cfi_offset v31, -80 314; CHECK-NEXT: li r3, 48 315; CHECK-NEXT: std r28, 88(r1) # 8-byte Folded Spill 316; CHECK-NEXT: std r29, 96(r1) # 8-byte Folded Spill 317; CHECK-NEXT: std r30, 104(r1) # 8-byte Folded Spill 318; CHECK-NEXT: stfd f29, 120(r1) # 8-byte Folded Spill 319; CHECK-NEXT: fmr f29, f2 320; CHECK-NEXT: stfd f30, 128(r1) # 8-byte Folded Spill 321; CHECK-NEXT: fmr f30, f3 322; CHECK-NEXT: stvx v30, r1, r3 # 16-byte Folded Spill 323; CHECK-NEXT: li r3, 64 324; CHECK-NEXT: stfd f31, 136(r1) # 8-byte Folded Spill 325; CHECK-NEXT: fmr f31, f4 326; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 327; CHECK-NEXT: bl __gnu_f2h_ieee 328; CHECK-NEXT: nop 329; CHECK-NEXT: fmr f1, f29 330; CHECK-NEXT: mr r30, r3 331; CHECK-NEXT: bl __gnu_f2h_ieee 332; CHECK-NEXT: nop 333; CHECK-NEXT: fmr f1, f30 334; CHECK-NEXT: mr r29, r3 335; CHECK-NEXT: bl __gnu_f2h_ieee 336; CHECK-NEXT: nop 337; CHECK-NEXT: fmr f1, f31 338; CHECK-NEXT: mr r28, r3 339; CHECK-NEXT: bl __gnu_f2h_ieee 340; CHECK-NEXT: nop 341; CHECK-NEXT: clrldi r3, r3, 48 342; CHECK-NEXT: bl __gnu_h2f_ieee 343; CHECK-NEXT: nop 344; CHECK-NEXT: clrldi r3, r28, 48 345; CHECK-NEXT: fmr f31, f1 346; CHECK-NEXT: bl __gnu_h2f_ieee 347; CHECK-NEXT: nop 348; CHECK-NEXT: clrldi r3, r29, 48 349; CHECK-NEXT: fmr f30, f1 350; CHECK-NEXT: bl __gnu_h2f_ieee 351; CHECK-NEXT: nop 352; CHECK-NEXT: clrldi r3, r30, 48 353; CHECK-NEXT: fmr f29, f1 354; CHECK-NEXT: bl __gnu_h2f_ieee 355; CHECK-NEXT: nop 356; CHECK-NEXT: bl lrintf 357; CHECK-NEXT: nop 358; CHECK-NEXT: fmr f1, f29 359; CHECK-NEXT: mtvsrd v31, r3 360; CHECK-NEXT: bl lrintf 361; CHECK-NEXT: nop 362; CHECK-NEXT: fmr f1, f30 363; CHECK-NEXT: mtfprd f0, r3 364; CHECK-NEXT: xxmrghd v31, vs0, v31 365; CHECK-NEXT: bl lrintf 366; CHECK-NEXT: nop 367; CHECK-NEXT: fmr f1, f31 368; CHECK-NEXT: mtvsrd v30, r3 369; CHECK-NEXT: bl lrintf 370; CHECK-NEXT: nop 371; CHECK-NEXT: mtfprd f0, r3 372; CHECK-NEXT: li r3, 64 373; CHECK-NEXT: vmr v2, v31 374; CHECK-NEXT: lfd f31, 136(r1) # 8-byte Folded Reload 375; CHECK-NEXT: lfd f30, 128(r1) # 8-byte Folded Reload 376; CHECK-NEXT: lfd f29, 120(r1) # 8-byte Folded Reload 377; CHECK-NEXT: ld r30, 104(r1) # 8-byte Folded Reload 378; CHECK-NEXT: ld r29, 96(r1) # 8-byte Folded Reload 379; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 380; CHECK-NEXT: li r3, 48 381; CHECK-NEXT: ld r28, 88(r1) # 8-byte Folded Reload 382; CHECK-NEXT: xxmrghd v3, vs0, v30 383; CHECK-NEXT: lvx v30, r1, r3 # 16-byte Folded Reload 384; CHECK-NEXT: addi r1, r1, 144 385; CHECK-NEXT: ld r0, 16(r1) 386; CHECK-NEXT: mtlr r0 387; CHECK-NEXT: blr 388; 389; FAST-LABEL: lrint_v4f16: 390; FAST: # %bb.0: 391; FAST-NEXT: mflr r0 392; FAST-NEXT: .cfi_def_cfa_offset 64 393; FAST-NEXT: .cfi_offset lr, 16 394; FAST-NEXT: .cfi_offset f28, -32 395; FAST-NEXT: .cfi_offset f29, -24 396; FAST-NEXT: .cfi_offset f30, -16 397; FAST-NEXT: .cfi_offset f31, -8 398; FAST-NEXT: stfd f28, -32(r1) # 8-byte Folded Spill 399; FAST-NEXT: stfd f29, -24(r1) # 8-byte Folded Spill 400; FAST-NEXT: stfd f30, -16(r1) # 8-byte Folded Spill 401; FAST-NEXT: stfd f31, -8(r1) # 8-byte Folded Spill 402; FAST-NEXT: stdu r1, -64(r1) 403; FAST-NEXT: fmr f29, f1 404; FAST-NEXT: fmr f1, f4 405; FAST-NEXT: std r0, 80(r1) 406; FAST-NEXT: fmr f31, f3 407; FAST-NEXT: fmr f30, f2 408; FAST-NEXT: bl __gnu_f2h_ieee 409; FAST-NEXT: nop 410; FAST-NEXT: clrldi r3, r3, 48 411; FAST-NEXT: bl __gnu_h2f_ieee 412; FAST-NEXT: nop 413; FAST-NEXT: fmr f28, f1 414; FAST-NEXT: fmr f1, f31 415; FAST-NEXT: bl __gnu_f2h_ieee 416; FAST-NEXT: nop 417; FAST-NEXT: clrldi r3, r3, 48 418; FAST-NEXT: bl __gnu_h2f_ieee 419; FAST-NEXT: nop 420; FAST-NEXT: fmr f31, f1 421; FAST-NEXT: fmr f1, f30 422; FAST-NEXT: bl __gnu_f2h_ieee 423; FAST-NEXT: nop 424; FAST-NEXT: clrldi r3, r3, 48 425; FAST-NEXT: bl __gnu_h2f_ieee 426; FAST-NEXT: nop 427; FAST-NEXT: fmr f30, f1 428; FAST-NEXT: fmr f1, f29 429; FAST-NEXT: bl __gnu_f2h_ieee 430; FAST-NEXT: nop 431; FAST-NEXT: clrldi r3, r3, 48 432; FAST-NEXT: bl __gnu_h2f_ieee 433; FAST-NEXT: nop 434; FAST-NEXT: fctid f0, f30 435; FAST-NEXT: fctid f2, f31 436; FAST-NEXT: mffprd r3, f0 437; FAST-NEXT: fctid f1, f1 438; FAST-NEXT: mtfprd f0, r3 439; FAST-NEXT: mffprd r3, f2 440; FAST-NEXT: mtfprd f2, r3 441; FAST-NEXT: mffprd r3, f1 442; FAST-NEXT: mtfprd f1, r3 443; FAST-NEXT: xxmrghd v2, vs0, vs1 444; FAST-NEXT: fctid f0, f28 445; FAST-NEXT: mffprd r3, f0 446; FAST-NEXT: mtfprd f0, r3 447; FAST-NEXT: xxmrghd v3, vs0, vs2 448; FAST-NEXT: addi r1, r1, 64 449; FAST-NEXT: ld r0, 16(r1) 450; FAST-NEXT: lfd f31, -8(r1) # 8-byte Folded Reload 451; FAST-NEXT: lfd f30, -16(r1) # 8-byte Folded Reload 452; FAST-NEXT: mtlr r0 453; FAST-NEXT: lfd f29, -24(r1) # 8-byte Folded Reload 454; FAST-NEXT: lfd f28, -32(r1) # 8-byte Folded Reload 455; FAST-NEXT: blr 456 %a = call <4 x i64> @llvm.lrint.v4i64.v4f16(<4 x half> %x) 457 ret <4 x i64> %a 458} 459declare <4 x i64> @llvm.lrint.v4i64.v4f16(<4 x half>) 460 461define <8 x i64> @lrint_v8f16(<8 x half> %x) { 462; BE-LABEL: lrint_v8f16: 463; BE: # %bb.0: 464; BE-NEXT: mflr r0 465; BE-NEXT: stdu r1, -304(r1) 466; BE-NEXT: std r0, 320(r1) 467; BE-NEXT: .cfi_def_cfa_offset 304 468; BE-NEXT: .cfi_offset lr, 16 469; BE-NEXT: .cfi_offset r24, -120 470; BE-NEXT: .cfi_offset r25, -112 471; BE-NEXT: .cfi_offset r26, -104 472; BE-NEXT: .cfi_offset r27, -96 473; BE-NEXT: .cfi_offset r28, -88 474; BE-NEXT: .cfi_offset r29, -80 475; BE-NEXT: .cfi_offset r30, -72 476; BE-NEXT: .cfi_offset f25, -56 477; BE-NEXT: .cfi_offset f26, -48 478; BE-NEXT: .cfi_offset f27, -40 479; BE-NEXT: .cfi_offset f28, -32 480; BE-NEXT: .cfi_offset f29, -24 481; BE-NEXT: .cfi_offset f30, -16 482; BE-NEXT: .cfi_offset f31, -8 483; BE-NEXT: stfd f25, 248(r1) # 8-byte Folded Spill 484; BE-NEXT: fmr f25, f1 485; BE-NEXT: fmr f1, f2 486; BE-NEXT: std r24, 184(r1) # 8-byte Folded Spill 487; BE-NEXT: std r25, 192(r1) # 8-byte Folded Spill 488; BE-NEXT: std r26, 200(r1) # 8-byte Folded Spill 489; BE-NEXT: std r27, 208(r1) # 8-byte Folded Spill 490; BE-NEXT: std r28, 216(r1) # 8-byte Folded Spill 491; BE-NEXT: std r29, 224(r1) # 8-byte Folded Spill 492; BE-NEXT: std r30, 232(r1) # 8-byte Folded Spill 493; BE-NEXT: stfd f26, 256(r1) # 8-byte Folded Spill 494; BE-NEXT: stfd f27, 264(r1) # 8-byte Folded Spill 495; BE-NEXT: stfd f28, 272(r1) # 8-byte Folded Spill 496; BE-NEXT: stfd f29, 280(r1) # 8-byte Folded Spill 497; BE-NEXT: stfd f30, 288(r1) # 8-byte Folded Spill 498; BE-NEXT: stfd f31, 296(r1) # 8-byte Folded Spill 499; BE-NEXT: fmr f31, f8 500; BE-NEXT: fmr f30, f7 501; BE-NEXT: fmr f29, f6 502; BE-NEXT: fmr f28, f5 503; BE-NEXT: fmr f27, f4 504; BE-NEXT: fmr f26, f3 505; BE-NEXT: bl __gnu_f2h_ieee 506; BE-NEXT: nop 507; BE-NEXT: fmr f1, f25 508; BE-NEXT: mr r30, r3 509; BE-NEXT: bl __gnu_f2h_ieee 510; BE-NEXT: nop 511; BE-NEXT: fmr f1, f27 512; BE-NEXT: mr r29, r3 513; BE-NEXT: bl __gnu_f2h_ieee 514; BE-NEXT: nop 515; BE-NEXT: fmr f1, f26 516; BE-NEXT: mr r28, r3 517; BE-NEXT: bl __gnu_f2h_ieee 518; BE-NEXT: nop 519; BE-NEXT: fmr f1, f29 520; BE-NEXT: mr r27, r3 521; BE-NEXT: bl __gnu_f2h_ieee 522; BE-NEXT: nop 523; BE-NEXT: fmr f1, f28 524; BE-NEXT: mr r26, r3 525; BE-NEXT: bl __gnu_f2h_ieee 526; BE-NEXT: nop 527; BE-NEXT: fmr f1, f31 528; BE-NEXT: mr r25, r3 529; BE-NEXT: bl __gnu_f2h_ieee 530; BE-NEXT: nop 531; BE-NEXT: fmr f1, f30 532; BE-NEXT: mr r24, r3 533; BE-NEXT: bl __gnu_f2h_ieee 534; BE-NEXT: nop 535; BE-NEXT: clrldi r3, r3, 48 536; BE-NEXT: bl __gnu_h2f_ieee 537; BE-NEXT: nop 538; BE-NEXT: clrldi r3, r24, 48 539; BE-NEXT: fmr f31, f1 540; BE-NEXT: bl __gnu_h2f_ieee 541; BE-NEXT: nop 542; BE-NEXT: clrldi r3, r25, 48 543; BE-NEXT: fmr f30, f1 544; BE-NEXT: bl __gnu_h2f_ieee 545; BE-NEXT: nop 546; BE-NEXT: clrldi r3, r26, 48 547; BE-NEXT: fmr f29, f1 548; BE-NEXT: bl __gnu_h2f_ieee 549; BE-NEXT: nop 550; BE-NEXT: clrldi r3, r27, 48 551; BE-NEXT: fmr f28, f1 552; BE-NEXT: bl __gnu_h2f_ieee 553; BE-NEXT: nop 554; BE-NEXT: clrldi r3, r28, 48 555; BE-NEXT: fmr f27, f1 556; BE-NEXT: bl __gnu_h2f_ieee 557; BE-NEXT: nop 558; BE-NEXT: clrldi r3, r29, 48 559; BE-NEXT: fmr f26, f1 560; BE-NEXT: bl __gnu_h2f_ieee 561; BE-NEXT: nop 562; BE-NEXT: clrldi r3, r30, 48 563; BE-NEXT: fmr f25, f1 564; BE-NEXT: bl __gnu_h2f_ieee 565; BE-NEXT: nop 566; BE-NEXT: bl lrintf 567; BE-NEXT: nop 568; BE-NEXT: fmr f1, f25 569; BE-NEXT: std r3, 120(r1) 570; BE-NEXT: bl lrintf 571; BE-NEXT: nop 572; BE-NEXT: fmr f1, f26 573; BE-NEXT: std r3, 112(r1) 574; BE-NEXT: bl lrintf 575; BE-NEXT: nop 576; BE-NEXT: fmr f1, f27 577; BE-NEXT: std r3, 136(r1) 578; BE-NEXT: bl lrintf 579; BE-NEXT: nop 580; BE-NEXT: fmr f1, f28 581; BE-NEXT: std r3, 128(r1) 582; BE-NEXT: bl lrintf 583; BE-NEXT: nop 584; BE-NEXT: fmr f1, f29 585; BE-NEXT: std r3, 152(r1) 586; BE-NEXT: bl lrintf 587; BE-NEXT: nop 588; BE-NEXT: fmr f1, f30 589; BE-NEXT: std r3, 144(r1) 590; BE-NEXT: bl lrintf 591; BE-NEXT: nop 592; BE-NEXT: fmr f1, f31 593; BE-NEXT: std r3, 168(r1) 594; BE-NEXT: bl lrintf 595; BE-NEXT: nop 596; BE-NEXT: std r3, 160(r1) 597; BE-NEXT: addi r3, r1, 112 598; BE-NEXT: ld r30, 232(r1) # 8-byte Folded Reload 599; BE-NEXT: lfd f31, 296(r1) # 8-byte Folded Reload 600; BE-NEXT: lfd f30, 288(r1) # 8-byte Folded Reload 601; BE-NEXT: lfd f29, 280(r1) # 8-byte Folded Reload 602; BE-NEXT: lxvd2x v2, 0, r3 603; BE-NEXT: addi r3, r1, 128 604; BE-NEXT: lfd f28, 272(r1) # 8-byte Folded Reload 605; BE-NEXT: lfd f27, 264(r1) # 8-byte Folded Reload 606; BE-NEXT: lfd f26, 256(r1) # 8-byte Folded Reload 607; BE-NEXT: ld r29, 224(r1) # 8-byte Folded Reload 608; BE-NEXT: ld r28, 216(r1) # 8-byte Folded Reload 609; BE-NEXT: lxvd2x v3, 0, r3 610; BE-NEXT: addi r3, r1, 144 611; BE-NEXT: lfd f25, 248(r1) # 8-byte Folded Reload 612; BE-NEXT: ld r27, 208(r1) # 8-byte Folded Reload 613; BE-NEXT: ld r26, 200(r1) # 8-byte Folded Reload 614; BE-NEXT: ld r25, 192(r1) # 8-byte Folded Reload 615; BE-NEXT: ld r24, 184(r1) # 8-byte Folded Reload 616; BE-NEXT: lxvd2x v4, 0, r3 617; BE-NEXT: addi r3, r1, 160 618; BE-NEXT: lxvd2x v5, 0, r3 619; BE-NEXT: addi r1, r1, 304 620; BE-NEXT: ld r0, 16(r1) 621; BE-NEXT: mtlr r0 622; BE-NEXT: blr 623; 624; CHECK-LABEL: lrint_v8f16: 625; CHECK: # %bb.0: 626; CHECK-NEXT: mflr r0 627; CHECK-NEXT: stdu r1, -240(r1) 628; CHECK-NEXT: std r0, 256(r1) 629; CHECK-NEXT: .cfi_def_cfa_offset 240 630; CHECK-NEXT: .cfi_offset lr, 16 631; CHECK-NEXT: .cfi_offset r24, -120 632; CHECK-NEXT: .cfi_offset r25, -112 633; CHECK-NEXT: .cfi_offset r26, -104 634; CHECK-NEXT: .cfi_offset r27, -96 635; CHECK-NEXT: .cfi_offset r28, -88 636; CHECK-NEXT: .cfi_offset r29, -80 637; CHECK-NEXT: .cfi_offset r30, -72 638; CHECK-NEXT: .cfi_offset f25, -56 639; CHECK-NEXT: .cfi_offset f26, -48 640; CHECK-NEXT: .cfi_offset f27, -40 641; CHECK-NEXT: .cfi_offset f28, -32 642; CHECK-NEXT: .cfi_offset f29, -24 643; CHECK-NEXT: .cfi_offset f30, -16 644; CHECK-NEXT: .cfi_offset f31, -8 645; CHECK-NEXT: .cfi_offset v28, -192 646; CHECK-NEXT: .cfi_offset v29, -176 647; CHECK-NEXT: .cfi_offset v30, -160 648; CHECK-NEXT: .cfi_offset v31, -144 649; CHECK-NEXT: li r3, 48 650; CHECK-NEXT: std r24, 120(r1) # 8-byte Folded Spill 651; CHECK-NEXT: std r25, 128(r1) # 8-byte Folded Spill 652; CHECK-NEXT: std r26, 136(r1) # 8-byte Folded Spill 653; CHECK-NEXT: std r27, 144(r1) # 8-byte Folded Spill 654; CHECK-NEXT: std r28, 152(r1) # 8-byte Folded Spill 655; CHECK-NEXT: std r29, 160(r1) # 8-byte Folded Spill 656; CHECK-NEXT: std r30, 168(r1) # 8-byte Folded Spill 657; CHECK-NEXT: stvx v28, r1, r3 # 16-byte Folded Spill 658; CHECK-NEXT: li r3, 64 659; CHECK-NEXT: stfd f25, 184(r1) # 8-byte Folded Spill 660; CHECK-NEXT: fmr f25, f2 661; CHECK-NEXT: stfd f26, 192(r1) # 8-byte Folded Spill 662; CHECK-NEXT: fmr f26, f3 663; CHECK-NEXT: stfd f27, 200(r1) # 8-byte Folded Spill 664; CHECK-NEXT: fmr f27, f4 665; CHECK-NEXT: stvx v29, r1, r3 # 16-byte Folded Spill 666; CHECK-NEXT: li r3, 80 667; CHECK-NEXT: stfd f28, 208(r1) # 8-byte Folded Spill 668; CHECK-NEXT: fmr f28, f5 669; CHECK-NEXT: stfd f29, 216(r1) # 8-byte Folded Spill 670; CHECK-NEXT: fmr f29, f6 671; CHECK-NEXT: stfd f30, 224(r1) # 8-byte Folded Spill 672; CHECK-NEXT: fmr f30, f7 673; CHECK-NEXT: stvx v30, r1, r3 # 16-byte Folded Spill 674; CHECK-NEXT: li r3, 96 675; CHECK-NEXT: stfd f31, 232(r1) # 8-byte Folded Spill 676; CHECK-NEXT: fmr f31, f8 677; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 678; CHECK-NEXT: bl __gnu_f2h_ieee 679; CHECK-NEXT: nop 680; CHECK-NEXT: fmr f1, f25 681; CHECK-NEXT: mr r30, r3 682; CHECK-NEXT: bl __gnu_f2h_ieee 683; CHECK-NEXT: nop 684; CHECK-NEXT: fmr f1, f26 685; CHECK-NEXT: mr r29, r3 686; CHECK-NEXT: bl __gnu_f2h_ieee 687; CHECK-NEXT: nop 688; CHECK-NEXT: fmr f1, f27 689; CHECK-NEXT: mr r28, r3 690; CHECK-NEXT: bl __gnu_f2h_ieee 691; CHECK-NEXT: nop 692; CHECK-NEXT: fmr f1, f28 693; CHECK-NEXT: mr r27, r3 694; CHECK-NEXT: bl __gnu_f2h_ieee 695; CHECK-NEXT: nop 696; CHECK-NEXT: fmr f1, f29 697; CHECK-NEXT: mr r26, r3 698; CHECK-NEXT: bl __gnu_f2h_ieee 699; CHECK-NEXT: nop 700; CHECK-NEXT: fmr f1, f30 701; CHECK-NEXT: mr r25, r3 702; CHECK-NEXT: bl __gnu_f2h_ieee 703; CHECK-NEXT: nop 704; CHECK-NEXT: fmr f1, f31 705; CHECK-NEXT: mr r24, r3 706; CHECK-NEXT: bl __gnu_f2h_ieee 707; CHECK-NEXT: nop 708; CHECK-NEXT: clrldi r3, r3, 48 709; CHECK-NEXT: bl __gnu_h2f_ieee 710; CHECK-NEXT: nop 711; CHECK-NEXT: clrldi r3, r24, 48 712; CHECK-NEXT: fmr f31, f1 713; CHECK-NEXT: bl __gnu_h2f_ieee 714; CHECK-NEXT: nop 715; CHECK-NEXT: clrldi r3, r25, 48 716; CHECK-NEXT: fmr f30, f1 717; CHECK-NEXT: bl __gnu_h2f_ieee 718; CHECK-NEXT: nop 719; CHECK-NEXT: clrldi r3, r26, 48 720; CHECK-NEXT: fmr f29, f1 721; CHECK-NEXT: bl __gnu_h2f_ieee 722; CHECK-NEXT: nop 723; CHECK-NEXT: clrldi r3, r27, 48 724; CHECK-NEXT: fmr f28, f1 725; CHECK-NEXT: bl __gnu_h2f_ieee 726; CHECK-NEXT: nop 727; CHECK-NEXT: clrldi r3, r28, 48 728; CHECK-NEXT: fmr f27, f1 729; CHECK-NEXT: bl __gnu_h2f_ieee 730; CHECK-NEXT: nop 731; CHECK-NEXT: clrldi r3, r29, 48 732; CHECK-NEXT: fmr f26, f1 733; CHECK-NEXT: bl __gnu_h2f_ieee 734; CHECK-NEXT: nop 735; CHECK-NEXT: clrldi r3, r30, 48 736; CHECK-NEXT: fmr f25, f1 737; CHECK-NEXT: bl __gnu_h2f_ieee 738; CHECK-NEXT: nop 739; CHECK-NEXT: bl lrintf 740; CHECK-NEXT: nop 741; CHECK-NEXT: fmr f1, f25 742; CHECK-NEXT: mtvsrd v31, r3 743; CHECK-NEXT: bl lrintf 744; CHECK-NEXT: nop 745; CHECK-NEXT: fmr f1, f26 746; CHECK-NEXT: mtfprd f0, r3 747; CHECK-NEXT: xxmrghd v31, vs0, v31 748; CHECK-NEXT: bl lrintf 749; CHECK-NEXT: nop 750; CHECK-NEXT: fmr f1, f27 751; CHECK-NEXT: mtvsrd v30, r3 752; CHECK-NEXT: bl lrintf 753; CHECK-NEXT: nop 754; CHECK-NEXT: fmr f1, f28 755; CHECK-NEXT: mtfprd f0, r3 756; CHECK-NEXT: xxmrghd v30, vs0, v30 757; CHECK-NEXT: bl lrintf 758; CHECK-NEXT: nop 759; CHECK-NEXT: fmr f1, f29 760; CHECK-NEXT: mtvsrd v29, r3 761; CHECK-NEXT: bl lrintf 762; CHECK-NEXT: nop 763; CHECK-NEXT: fmr f1, f30 764; CHECK-NEXT: mtfprd f0, r3 765; CHECK-NEXT: xxmrghd v29, vs0, v29 766; CHECK-NEXT: bl lrintf 767; CHECK-NEXT: nop 768; CHECK-NEXT: fmr f1, f31 769; CHECK-NEXT: mtvsrd v28, r3 770; CHECK-NEXT: bl lrintf 771; CHECK-NEXT: nop 772; CHECK-NEXT: mtfprd f0, r3 773; CHECK-NEXT: li r3, 96 774; CHECK-NEXT: vmr v2, v31 775; CHECK-NEXT: lfd f31, 232(r1) # 8-byte Folded Reload 776; CHECK-NEXT: vmr v3, v30 777; CHECK-NEXT: vmr v4, v29 778; CHECK-NEXT: lfd f30, 224(r1) # 8-byte Folded Reload 779; CHECK-NEXT: lfd f29, 216(r1) # 8-byte Folded Reload 780; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 781; CHECK-NEXT: li r3, 80 782; CHECK-NEXT: lfd f28, 208(r1) # 8-byte Folded Reload 783; CHECK-NEXT: lfd f27, 200(r1) # 8-byte Folded Reload 784; CHECK-NEXT: lfd f26, 192(r1) # 8-byte Folded Reload 785; CHECK-NEXT: lfd f25, 184(r1) # 8-byte Folded Reload 786; CHECK-NEXT: ld r30, 168(r1) # 8-byte Folded Reload 787; CHECK-NEXT: ld r29, 160(r1) # 8-byte Folded Reload 788; CHECK-NEXT: lvx v30, r1, r3 # 16-byte Folded Reload 789; CHECK-NEXT: li r3, 64 790; CHECK-NEXT: ld r28, 152(r1) # 8-byte Folded Reload 791; CHECK-NEXT: ld r27, 144(r1) # 8-byte Folded Reload 792; CHECK-NEXT: xxmrghd v5, vs0, v28 793; CHECK-NEXT: ld r26, 136(r1) # 8-byte Folded Reload 794; CHECK-NEXT: ld r25, 128(r1) # 8-byte Folded Reload 795; CHECK-NEXT: ld r24, 120(r1) # 8-byte Folded Reload 796; CHECK-NEXT: lvx v29, r1, r3 # 16-byte Folded Reload 797; CHECK-NEXT: li r3, 48 798; CHECK-NEXT: lvx v28, r1, r3 # 16-byte Folded Reload 799; CHECK-NEXT: addi r1, r1, 240 800; CHECK-NEXT: ld r0, 16(r1) 801; CHECK-NEXT: mtlr r0 802; CHECK-NEXT: blr 803; 804; FAST-LABEL: lrint_v8f16: 805; FAST: # %bb.0: 806; FAST-NEXT: mflr r0 807; FAST-NEXT: .cfi_def_cfa_offset 96 808; FAST-NEXT: .cfi_offset lr, 16 809; FAST-NEXT: .cfi_offset f24, -64 810; FAST-NEXT: .cfi_offset f25, -56 811; FAST-NEXT: .cfi_offset f26, -48 812; FAST-NEXT: .cfi_offset f27, -40 813; FAST-NEXT: .cfi_offset f28, -32 814; FAST-NEXT: .cfi_offset f29, -24 815; FAST-NEXT: .cfi_offset f30, -16 816; FAST-NEXT: .cfi_offset f31, -8 817; FAST-NEXT: stfd f24, -64(r1) # 8-byte Folded Spill 818; FAST-NEXT: stfd f25, -56(r1) # 8-byte Folded Spill 819; FAST-NEXT: stfd f26, -48(r1) # 8-byte Folded Spill 820; FAST-NEXT: stfd f27, -40(r1) # 8-byte Folded Spill 821; FAST-NEXT: stfd f28, -32(r1) # 8-byte Folded Spill 822; FAST-NEXT: stfd f29, -24(r1) # 8-byte Folded Spill 823; FAST-NEXT: stfd f30, -16(r1) # 8-byte Folded Spill 824; FAST-NEXT: stfd f31, -8(r1) # 8-byte Folded Spill 825; FAST-NEXT: stdu r1, -96(r1) 826; FAST-NEXT: fmr f24, f1 827; FAST-NEXT: fmr f1, f8 828; FAST-NEXT: std r0, 112(r1) 829; FAST-NEXT: fmr f30, f7 830; FAST-NEXT: fmr f29, f6 831; FAST-NEXT: fmr f28, f5 832; FAST-NEXT: fmr f27, f4 833; FAST-NEXT: fmr f26, f3 834; FAST-NEXT: fmr f25, f2 835; FAST-NEXT: bl __gnu_f2h_ieee 836; FAST-NEXT: nop 837; FAST-NEXT: clrldi r3, r3, 48 838; FAST-NEXT: bl __gnu_h2f_ieee 839; FAST-NEXT: nop 840; FAST-NEXT: fmr f31, f1 841; FAST-NEXT: fmr f1, f30 842; FAST-NEXT: bl __gnu_f2h_ieee 843; FAST-NEXT: nop 844; FAST-NEXT: clrldi r3, r3, 48 845; FAST-NEXT: bl __gnu_h2f_ieee 846; FAST-NEXT: nop 847; FAST-NEXT: fmr f30, f1 848; FAST-NEXT: fmr f1, f29 849; FAST-NEXT: bl __gnu_f2h_ieee 850; FAST-NEXT: nop 851; FAST-NEXT: clrldi r3, r3, 48 852; FAST-NEXT: bl __gnu_h2f_ieee 853; FAST-NEXT: nop 854; FAST-NEXT: fmr f29, f1 855; FAST-NEXT: fmr f1, f28 856; FAST-NEXT: bl __gnu_f2h_ieee 857; FAST-NEXT: nop 858; FAST-NEXT: clrldi r3, r3, 48 859; FAST-NEXT: bl __gnu_h2f_ieee 860; FAST-NEXT: nop 861; FAST-NEXT: fmr f28, f1 862; FAST-NEXT: fmr f1, f27 863; FAST-NEXT: bl __gnu_f2h_ieee 864; FAST-NEXT: nop 865; FAST-NEXT: clrldi r3, r3, 48 866; FAST-NEXT: bl __gnu_h2f_ieee 867; FAST-NEXT: nop 868; FAST-NEXT: fmr f27, f1 869; FAST-NEXT: fmr f1, f26 870; FAST-NEXT: bl __gnu_f2h_ieee 871; FAST-NEXT: nop 872; FAST-NEXT: clrldi r3, r3, 48 873; FAST-NEXT: bl __gnu_h2f_ieee 874; FAST-NEXT: nop 875; FAST-NEXT: fmr f26, f1 876; FAST-NEXT: fmr f1, f25 877; FAST-NEXT: bl __gnu_f2h_ieee 878; FAST-NEXT: nop 879; FAST-NEXT: clrldi r3, r3, 48 880; FAST-NEXT: bl __gnu_h2f_ieee 881; FAST-NEXT: nop 882; FAST-NEXT: fmr f25, f1 883; FAST-NEXT: fmr f1, f24 884; FAST-NEXT: bl __gnu_f2h_ieee 885; FAST-NEXT: nop 886; FAST-NEXT: clrldi r3, r3, 48 887; FAST-NEXT: bl __gnu_h2f_ieee 888; FAST-NEXT: nop 889; FAST-NEXT: fctid f0, f25 890; FAST-NEXT: fctid f2, f26 891; FAST-NEXT: mffprd r3, f0 892; FAST-NEXT: fctid f3, f27 893; FAST-NEXT: fctid f4, f28 894; FAST-NEXT: fctid f5, f29 895; FAST-NEXT: fctid f6, f30 896; FAST-NEXT: fctid f1, f1 897; FAST-NEXT: mtfprd f0, r3 898; FAST-NEXT: mffprd r3, f2 899; FAST-NEXT: mtfprd f2, r3 900; FAST-NEXT: mffprd r3, f3 901; FAST-NEXT: mtfprd f3, r3 902; FAST-NEXT: mffprd r3, f4 903; FAST-NEXT: mtfprd f4, r3 904; FAST-NEXT: mffprd r3, f5 905; FAST-NEXT: mtfprd f5, r3 906; FAST-NEXT: mffprd r3, f6 907; FAST-NEXT: mtfprd f6, r3 908; FAST-NEXT: mffprd r3, f1 909; FAST-NEXT: mtfprd f1, r3 910; FAST-NEXT: xxmrghd v3, vs3, vs2 911; FAST-NEXT: xxmrghd v4, vs5, vs4 912; FAST-NEXT: xxmrghd v2, vs0, vs1 913; FAST-NEXT: fctid f0, f31 914; FAST-NEXT: mffprd r3, f0 915; FAST-NEXT: mtfprd f0, r3 916; FAST-NEXT: xxmrghd v5, vs0, vs6 917; FAST-NEXT: addi r1, r1, 96 918; FAST-NEXT: ld r0, 16(r1) 919; FAST-NEXT: lfd f31, -8(r1) # 8-byte Folded Reload 920; FAST-NEXT: lfd f30, -16(r1) # 8-byte Folded Reload 921; FAST-NEXT: mtlr r0 922; FAST-NEXT: lfd f29, -24(r1) # 8-byte Folded Reload 923; FAST-NEXT: lfd f28, -32(r1) # 8-byte Folded Reload 924; FAST-NEXT: lfd f27, -40(r1) # 8-byte Folded Reload 925; FAST-NEXT: lfd f26, -48(r1) # 8-byte Folded Reload 926; FAST-NEXT: lfd f25, -56(r1) # 8-byte Folded Reload 927; FAST-NEXT: lfd f24, -64(r1) # 8-byte Folded Reload 928; FAST-NEXT: blr 929 %a = call <8 x i64> @llvm.lrint.v8i64.v8f16(<8 x half> %x) 930 ret <8 x i64> %a 931} 932declare <8 x i64> @llvm.lrint.v8i64.v8f16(<8 x half>) 933 934define <16 x i64> @lrint_v16i64_v16f16(<16 x half> %x) { 935; BE-LABEL: lrint_v16i64_v16f16: 936; BE: # %bb.0: 937; BE-NEXT: mflr r0 938; BE-NEXT: stdu r1, -496(r1) 939; BE-NEXT: std r0, 512(r1) 940; BE-NEXT: .cfi_def_cfa_offset 496 941; BE-NEXT: .cfi_offset lr, 16 942; BE-NEXT: .cfi_offset r16, -248 943; BE-NEXT: .cfi_offset r17, -240 944; BE-NEXT: .cfi_offset r18, -232 945; BE-NEXT: .cfi_offset r19, -224 946; BE-NEXT: .cfi_offset r20, -216 947; BE-NEXT: .cfi_offset r21, -208 948; BE-NEXT: .cfi_offset r22, -200 949; BE-NEXT: .cfi_offset r23, -192 950; BE-NEXT: .cfi_offset r24, -184 951; BE-NEXT: .cfi_offset r25, -176 952; BE-NEXT: .cfi_offset r26, -168 953; BE-NEXT: .cfi_offset r27, -160 954; BE-NEXT: .cfi_offset r28, -152 955; BE-NEXT: .cfi_offset r29, -144 956; BE-NEXT: .cfi_offset r30, -136 957; BE-NEXT: .cfi_offset f17, -120 958; BE-NEXT: .cfi_offset f18, -112 959; BE-NEXT: .cfi_offset f19, -104 960; BE-NEXT: .cfi_offset f20, -96 961; BE-NEXT: .cfi_offset f21, -88 962; BE-NEXT: .cfi_offset f22, -80 963; BE-NEXT: .cfi_offset f23, -72 964; BE-NEXT: .cfi_offset f24, -64 965; BE-NEXT: .cfi_offset f25, -56 966; BE-NEXT: .cfi_offset f26, -48 967; BE-NEXT: .cfi_offset f27, -40 968; BE-NEXT: .cfi_offset f28, -32 969; BE-NEXT: .cfi_offset f29, -24 970; BE-NEXT: .cfi_offset f30, -16 971; BE-NEXT: .cfi_offset f31, -8 972; BE-NEXT: stfd f20, 400(r1) # 8-byte Folded Spill 973; BE-NEXT: fmr f20, f1 974; BE-NEXT: fmr f1, f2 975; BE-NEXT: std r16, 248(r1) # 8-byte Folded Spill 976; BE-NEXT: std r17, 256(r1) # 8-byte Folded Spill 977; BE-NEXT: std r18, 264(r1) # 8-byte Folded Spill 978; BE-NEXT: std r19, 272(r1) # 8-byte Folded Spill 979; BE-NEXT: std r20, 280(r1) # 8-byte Folded Spill 980; BE-NEXT: std r21, 288(r1) # 8-byte Folded Spill 981; BE-NEXT: std r22, 296(r1) # 8-byte Folded Spill 982; BE-NEXT: std r23, 304(r1) # 8-byte Folded Spill 983; BE-NEXT: std r24, 312(r1) # 8-byte Folded Spill 984; BE-NEXT: std r25, 320(r1) # 8-byte Folded Spill 985; BE-NEXT: std r26, 328(r1) # 8-byte Folded Spill 986; BE-NEXT: std r27, 336(r1) # 8-byte Folded Spill 987; BE-NEXT: std r28, 344(r1) # 8-byte Folded Spill 988; BE-NEXT: std r29, 352(r1) # 8-byte Folded Spill 989; BE-NEXT: std r30, 360(r1) # 8-byte Folded Spill 990; BE-NEXT: stfd f17, 376(r1) # 8-byte Folded Spill 991; BE-NEXT: stfd f18, 384(r1) # 8-byte Folded Spill 992; BE-NEXT: stfd f19, 392(r1) # 8-byte Folded Spill 993; BE-NEXT: stfd f21, 408(r1) # 8-byte Folded Spill 994; BE-NEXT: stfd f22, 416(r1) # 8-byte Folded Spill 995; BE-NEXT: stfd f23, 424(r1) # 8-byte Folded Spill 996; BE-NEXT: stfd f24, 432(r1) # 8-byte Folded Spill 997; BE-NEXT: stfd f25, 440(r1) # 8-byte Folded Spill 998; BE-NEXT: stfd f26, 448(r1) # 8-byte Folded Spill 999; BE-NEXT: stfd f27, 456(r1) # 8-byte Folded Spill 1000; BE-NEXT: stfd f28, 464(r1) # 8-byte Folded Spill 1001; BE-NEXT: stfd f29, 472(r1) # 8-byte Folded Spill 1002; BE-NEXT: stfd f30, 480(r1) # 8-byte Folded Spill 1003; BE-NEXT: stfd f31, 488(r1) # 8-byte Folded Spill 1004; BE-NEXT: fmr f31, f13 1005; BE-NEXT: fmr f29, f12 1006; BE-NEXT: fmr f30, f11 1007; BE-NEXT: fmr f28, f10 1008; BE-NEXT: fmr f27, f9 1009; BE-NEXT: fmr f26, f8 1010; BE-NEXT: fmr f25, f7 1011; BE-NEXT: fmr f24, f6 1012; BE-NEXT: fmr f23, f5 1013; BE-NEXT: fmr f22, f4 1014; BE-NEXT: fmr f21, f3 1015; BE-NEXT: bl __gnu_f2h_ieee 1016; BE-NEXT: nop 1017; BE-NEXT: fmr f1, f20 1018; BE-NEXT: mr r30, r3 1019; BE-NEXT: bl __gnu_f2h_ieee 1020; BE-NEXT: nop 1021; BE-NEXT: fmr f1, f22 1022; BE-NEXT: mr r29, r3 1023; BE-NEXT: bl __gnu_f2h_ieee 1024; BE-NEXT: nop 1025; BE-NEXT: fmr f1, f21 1026; BE-NEXT: mr r28, r3 1027; BE-NEXT: bl __gnu_f2h_ieee 1028; BE-NEXT: nop 1029; BE-NEXT: fmr f1, f24 1030; BE-NEXT: mr r27, r3 1031; BE-NEXT: bl __gnu_f2h_ieee 1032; BE-NEXT: nop 1033; BE-NEXT: fmr f1, f23 1034; BE-NEXT: mr r26, r3 1035; BE-NEXT: bl __gnu_f2h_ieee 1036; BE-NEXT: nop 1037; BE-NEXT: fmr f1, f26 1038; BE-NEXT: mr r25, r3 1039; BE-NEXT: bl __gnu_f2h_ieee 1040; BE-NEXT: nop 1041; BE-NEXT: fmr f1, f25 1042; BE-NEXT: mr r24, r3 1043; BE-NEXT: bl __gnu_f2h_ieee 1044; BE-NEXT: nop 1045; BE-NEXT: fmr f1, f28 1046; BE-NEXT: mr r23, r3 1047; BE-NEXT: bl __gnu_f2h_ieee 1048; BE-NEXT: nop 1049; BE-NEXT: fmr f1, f27 1050; BE-NEXT: mr r22, r3 1051; BE-NEXT: bl __gnu_f2h_ieee 1052; BE-NEXT: nop 1053; BE-NEXT: fmr f1, f29 1054; BE-NEXT: mr r21, r3 1055; BE-NEXT: bl __gnu_f2h_ieee 1056; BE-NEXT: nop 1057; BE-NEXT: fmr f1, f30 1058; BE-NEXT: mr r20, r3 1059; BE-NEXT: bl __gnu_f2h_ieee 1060; BE-NEXT: nop 1061; BE-NEXT: lfs f1, 652(r1) 1062; BE-NEXT: mr r19, r3 1063; BE-NEXT: bl __gnu_f2h_ieee 1064; BE-NEXT: nop 1065; BE-NEXT: fmr f1, f31 1066; BE-NEXT: mr r18, r3 1067; BE-NEXT: bl __gnu_f2h_ieee 1068; BE-NEXT: nop 1069; BE-NEXT: lfs f1, 668(r1) 1070; BE-NEXT: mr r17, r3 1071; BE-NEXT: bl __gnu_f2h_ieee 1072; BE-NEXT: nop 1073; BE-NEXT: lfs f1, 660(r1) 1074; BE-NEXT: mr r16, r3 1075; BE-NEXT: bl __gnu_f2h_ieee 1076; BE-NEXT: nop 1077; BE-NEXT: clrldi r3, r3, 48 1078; BE-NEXT: bl __gnu_h2f_ieee 1079; BE-NEXT: nop 1080; BE-NEXT: clrldi r3, r16, 48 1081; BE-NEXT: fmr f31, f1 1082; BE-NEXT: bl __gnu_h2f_ieee 1083; BE-NEXT: nop 1084; BE-NEXT: clrldi r3, r17, 48 1085; BE-NEXT: fmr f30, f1 1086; BE-NEXT: bl __gnu_h2f_ieee 1087; BE-NEXT: nop 1088; BE-NEXT: clrldi r3, r18, 48 1089; BE-NEXT: fmr f29, f1 1090; BE-NEXT: bl __gnu_h2f_ieee 1091; BE-NEXT: nop 1092; BE-NEXT: clrldi r3, r19, 48 1093; BE-NEXT: fmr f28, f1 1094; BE-NEXT: bl __gnu_h2f_ieee 1095; BE-NEXT: nop 1096; BE-NEXT: clrldi r3, r20, 48 1097; BE-NEXT: fmr f27, f1 1098; BE-NEXT: bl __gnu_h2f_ieee 1099; BE-NEXT: nop 1100; BE-NEXT: clrldi r3, r21, 48 1101; BE-NEXT: fmr f26, f1 1102; BE-NEXT: bl __gnu_h2f_ieee 1103; BE-NEXT: nop 1104; BE-NEXT: clrldi r3, r22, 48 1105; BE-NEXT: fmr f25, f1 1106; BE-NEXT: bl __gnu_h2f_ieee 1107; BE-NEXT: nop 1108; BE-NEXT: clrldi r3, r23, 48 1109; BE-NEXT: fmr f24, f1 1110; BE-NEXT: bl __gnu_h2f_ieee 1111; BE-NEXT: nop 1112; BE-NEXT: clrldi r3, r24, 48 1113; BE-NEXT: fmr f23, f1 1114; BE-NEXT: bl __gnu_h2f_ieee 1115; BE-NEXT: nop 1116; BE-NEXT: clrldi r3, r25, 48 1117; BE-NEXT: fmr f22, f1 1118; BE-NEXT: bl __gnu_h2f_ieee 1119; BE-NEXT: nop 1120; BE-NEXT: clrldi r3, r26, 48 1121; BE-NEXT: fmr f21, f1 1122; BE-NEXT: bl __gnu_h2f_ieee 1123; BE-NEXT: nop 1124; BE-NEXT: clrldi r3, r27, 48 1125; BE-NEXT: fmr f20, f1 1126; BE-NEXT: bl __gnu_h2f_ieee 1127; BE-NEXT: nop 1128; BE-NEXT: clrldi r3, r28, 48 1129; BE-NEXT: fmr f19, f1 1130; BE-NEXT: bl __gnu_h2f_ieee 1131; BE-NEXT: nop 1132; BE-NEXT: clrldi r3, r29, 48 1133; BE-NEXT: fmr f18, f1 1134; BE-NEXT: bl __gnu_h2f_ieee 1135; BE-NEXT: nop 1136; BE-NEXT: clrldi r3, r30, 48 1137; BE-NEXT: fmr f17, f1 1138; BE-NEXT: bl __gnu_h2f_ieee 1139; BE-NEXT: nop 1140; BE-NEXT: bl lrintf 1141; BE-NEXT: nop 1142; BE-NEXT: fmr f1, f17 1143; BE-NEXT: std r3, 120(r1) 1144; BE-NEXT: bl lrintf 1145; BE-NEXT: nop 1146; BE-NEXT: fmr f1, f18 1147; BE-NEXT: std r3, 112(r1) 1148; BE-NEXT: bl lrintf 1149; BE-NEXT: nop 1150; BE-NEXT: fmr f1, f19 1151; BE-NEXT: std r3, 136(r1) 1152; BE-NEXT: bl lrintf 1153; BE-NEXT: nop 1154; BE-NEXT: fmr f1, f20 1155; BE-NEXT: std r3, 128(r1) 1156; BE-NEXT: bl lrintf 1157; BE-NEXT: nop 1158; BE-NEXT: fmr f1, f21 1159; BE-NEXT: std r3, 152(r1) 1160; BE-NEXT: bl lrintf 1161; BE-NEXT: nop 1162; BE-NEXT: fmr f1, f22 1163; BE-NEXT: std r3, 144(r1) 1164; BE-NEXT: bl lrintf 1165; BE-NEXT: nop 1166; BE-NEXT: fmr f1, f23 1167; BE-NEXT: std r3, 168(r1) 1168; BE-NEXT: bl lrintf 1169; BE-NEXT: nop 1170; BE-NEXT: fmr f1, f24 1171; BE-NEXT: std r3, 160(r1) 1172; BE-NEXT: bl lrintf 1173; BE-NEXT: nop 1174; BE-NEXT: fmr f1, f25 1175; BE-NEXT: std r3, 184(r1) 1176; BE-NEXT: bl lrintf 1177; BE-NEXT: nop 1178; BE-NEXT: fmr f1, f26 1179; BE-NEXT: std r3, 176(r1) 1180; BE-NEXT: bl lrintf 1181; BE-NEXT: nop 1182; BE-NEXT: fmr f1, f27 1183; BE-NEXT: std r3, 200(r1) 1184; BE-NEXT: bl lrintf 1185; BE-NEXT: nop 1186; BE-NEXT: fmr f1, f28 1187; BE-NEXT: std r3, 192(r1) 1188; BE-NEXT: bl lrintf 1189; BE-NEXT: nop 1190; BE-NEXT: fmr f1, f29 1191; BE-NEXT: std r3, 216(r1) 1192; BE-NEXT: bl lrintf 1193; BE-NEXT: nop 1194; BE-NEXT: fmr f1, f30 1195; BE-NEXT: std r3, 208(r1) 1196; BE-NEXT: bl lrintf 1197; BE-NEXT: nop 1198; BE-NEXT: fmr f1, f31 1199; BE-NEXT: std r3, 232(r1) 1200; BE-NEXT: bl lrintf 1201; BE-NEXT: nop 1202; BE-NEXT: std r3, 224(r1) 1203; BE-NEXT: addi r3, r1, 112 1204; BE-NEXT: ld r30, 360(r1) # 8-byte Folded Reload 1205; BE-NEXT: lfd f31, 488(r1) # 8-byte Folded Reload 1206; BE-NEXT: lfd f30, 480(r1) # 8-byte Folded Reload 1207; BE-NEXT: lfd f29, 472(r1) # 8-byte Folded Reload 1208; BE-NEXT: lxvd2x v2, 0, r3 1209; BE-NEXT: addi r3, r1, 128 1210; BE-NEXT: lfd f28, 464(r1) # 8-byte Folded Reload 1211; BE-NEXT: lfd f27, 456(r1) # 8-byte Folded Reload 1212; BE-NEXT: lfd f26, 448(r1) # 8-byte Folded Reload 1213; BE-NEXT: ld r29, 352(r1) # 8-byte Folded Reload 1214; BE-NEXT: ld r28, 344(r1) # 8-byte Folded Reload 1215; BE-NEXT: lxvd2x v3, 0, r3 1216; BE-NEXT: addi r3, r1, 144 1217; BE-NEXT: lfd f25, 440(r1) # 8-byte Folded Reload 1218; BE-NEXT: lfd f24, 432(r1) # 8-byte Folded Reload 1219; BE-NEXT: lfd f23, 424(r1) # 8-byte Folded Reload 1220; BE-NEXT: ld r27, 336(r1) # 8-byte Folded Reload 1221; BE-NEXT: ld r26, 328(r1) # 8-byte Folded Reload 1222; BE-NEXT: lxvd2x v4, 0, r3 1223; BE-NEXT: addi r3, r1, 160 1224; BE-NEXT: lfd f22, 416(r1) # 8-byte Folded Reload 1225; BE-NEXT: lfd f21, 408(r1) # 8-byte Folded Reload 1226; BE-NEXT: lfd f20, 400(r1) # 8-byte Folded Reload 1227; BE-NEXT: ld r25, 320(r1) # 8-byte Folded Reload 1228; BE-NEXT: ld r24, 312(r1) # 8-byte Folded Reload 1229; BE-NEXT: lxvd2x v5, 0, r3 1230; BE-NEXT: addi r3, r1, 176 1231; BE-NEXT: lfd f19, 392(r1) # 8-byte Folded Reload 1232; BE-NEXT: lfd f18, 384(r1) # 8-byte Folded Reload 1233; BE-NEXT: lfd f17, 376(r1) # 8-byte Folded Reload 1234; BE-NEXT: ld r23, 304(r1) # 8-byte Folded Reload 1235; BE-NEXT: ld r22, 296(r1) # 8-byte Folded Reload 1236; BE-NEXT: lxvd2x v6, 0, r3 1237; BE-NEXT: addi r3, r1, 192 1238; BE-NEXT: ld r21, 288(r1) # 8-byte Folded Reload 1239; BE-NEXT: ld r20, 280(r1) # 8-byte Folded Reload 1240; BE-NEXT: ld r19, 272(r1) # 8-byte Folded Reload 1241; BE-NEXT: ld r18, 264(r1) # 8-byte Folded Reload 1242; BE-NEXT: ld r17, 256(r1) # 8-byte Folded Reload 1243; BE-NEXT: ld r16, 248(r1) # 8-byte Folded Reload 1244; BE-NEXT: lxvd2x v7, 0, r3 1245; BE-NEXT: addi r3, r1, 208 1246; BE-NEXT: lxvd2x v8, 0, r3 1247; BE-NEXT: addi r3, r1, 224 1248; BE-NEXT: lxvd2x v9, 0, r3 1249; BE-NEXT: addi r1, r1, 496 1250; BE-NEXT: ld r0, 16(r1) 1251; BE-NEXT: mtlr r0 1252; BE-NEXT: blr 1253; 1254; CHECK-LABEL: lrint_v16i64_v16f16: 1255; CHECK: # %bb.0: 1256; CHECK-NEXT: mflr r0 1257; CHECK-NEXT: stdu r1, -432(r1) 1258; CHECK-NEXT: std r0, 448(r1) 1259; CHECK-NEXT: .cfi_def_cfa_offset 432 1260; CHECK-NEXT: .cfi_offset lr, 16 1261; CHECK-NEXT: .cfi_offset r16, -248 1262; CHECK-NEXT: .cfi_offset r17, -240 1263; CHECK-NEXT: .cfi_offset r18, -232 1264; CHECK-NEXT: .cfi_offset r19, -224 1265; CHECK-NEXT: .cfi_offset r20, -216 1266; CHECK-NEXT: .cfi_offset r21, -208 1267; CHECK-NEXT: .cfi_offset r22, -200 1268; CHECK-NEXT: .cfi_offset r23, -192 1269; CHECK-NEXT: .cfi_offset r24, -184 1270; CHECK-NEXT: .cfi_offset r25, -176 1271; CHECK-NEXT: .cfi_offset r26, -168 1272; CHECK-NEXT: .cfi_offset r27, -160 1273; CHECK-NEXT: .cfi_offset r28, -152 1274; CHECK-NEXT: .cfi_offset r29, -144 1275; CHECK-NEXT: .cfi_offset r30, -136 1276; CHECK-NEXT: .cfi_offset f17, -120 1277; CHECK-NEXT: .cfi_offset f18, -112 1278; CHECK-NEXT: .cfi_offset f19, -104 1279; CHECK-NEXT: .cfi_offset f20, -96 1280; CHECK-NEXT: .cfi_offset f21, -88 1281; CHECK-NEXT: .cfi_offset f22, -80 1282; CHECK-NEXT: .cfi_offset f23, -72 1283; CHECK-NEXT: .cfi_offset f24, -64 1284; CHECK-NEXT: .cfi_offset f25, -56 1285; CHECK-NEXT: .cfi_offset f26, -48 1286; CHECK-NEXT: .cfi_offset f27, -40 1287; CHECK-NEXT: .cfi_offset f28, -32 1288; CHECK-NEXT: .cfi_offset f29, -24 1289; CHECK-NEXT: .cfi_offset f30, -16 1290; CHECK-NEXT: .cfi_offset f31, -8 1291; CHECK-NEXT: .cfi_offset v24, -384 1292; CHECK-NEXT: .cfi_offset v25, -368 1293; CHECK-NEXT: .cfi_offset v26, -352 1294; CHECK-NEXT: .cfi_offset v27, -336 1295; CHECK-NEXT: .cfi_offset v28, -320 1296; CHECK-NEXT: .cfi_offset v29, -304 1297; CHECK-NEXT: .cfi_offset v30, -288 1298; CHECK-NEXT: .cfi_offset v31, -272 1299; CHECK-NEXT: li r3, 48 1300; CHECK-NEXT: std r16, 184(r1) # 8-byte Folded Spill 1301; CHECK-NEXT: std r17, 192(r1) # 8-byte Folded Spill 1302; CHECK-NEXT: std r18, 200(r1) # 8-byte Folded Spill 1303; CHECK-NEXT: std r19, 208(r1) # 8-byte Folded Spill 1304; CHECK-NEXT: std r20, 216(r1) # 8-byte Folded Spill 1305; CHECK-NEXT: std r21, 224(r1) # 8-byte Folded Spill 1306; CHECK-NEXT: std r22, 232(r1) # 8-byte Folded Spill 1307; CHECK-NEXT: stvx v24, r1, r3 # 16-byte Folded Spill 1308; CHECK-NEXT: li r3, 64 1309; CHECK-NEXT: std r23, 240(r1) # 8-byte Folded Spill 1310; CHECK-NEXT: std r24, 248(r1) # 8-byte Folded Spill 1311; CHECK-NEXT: std r25, 256(r1) # 8-byte Folded Spill 1312; CHECK-NEXT: std r26, 264(r1) # 8-byte Folded Spill 1313; CHECK-NEXT: std r27, 272(r1) # 8-byte Folded Spill 1314; CHECK-NEXT: std r28, 280(r1) # 8-byte Folded Spill 1315; CHECK-NEXT: stvx v25, r1, r3 # 16-byte Folded Spill 1316; CHECK-NEXT: li r3, 80 1317; CHECK-NEXT: std r29, 288(r1) # 8-byte Folded Spill 1318; CHECK-NEXT: std r30, 296(r1) # 8-byte Folded Spill 1319; CHECK-NEXT: stfd f17, 312(r1) # 8-byte Folded Spill 1320; CHECK-NEXT: stfd f18, 320(r1) # 8-byte Folded Spill 1321; CHECK-NEXT: stfd f19, 328(r1) # 8-byte Folded Spill 1322; CHECK-NEXT: stfd f20, 336(r1) # 8-byte Folded Spill 1323; CHECK-NEXT: fmr f20, f2 1324; CHECK-NEXT: stvx v26, r1, r3 # 16-byte Folded Spill 1325; CHECK-NEXT: li r3, 96 1326; CHECK-NEXT: stfd f21, 344(r1) # 8-byte Folded Spill 1327; CHECK-NEXT: fmr f21, f3 1328; CHECK-NEXT: stfd f22, 352(r1) # 8-byte Folded Spill 1329; CHECK-NEXT: fmr f22, f4 1330; CHECK-NEXT: stfd f23, 360(r1) # 8-byte Folded Spill 1331; CHECK-NEXT: fmr f23, f5 1332; CHECK-NEXT: stvx v27, r1, r3 # 16-byte Folded Spill 1333; CHECK-NEXT: li r3, 112 1334; CHECK-NEXT: stfd f24, 368(r1) # 8-byte Folded Spill 1335; CHECK-NEXT: fmr f24, f6 1336; CHECK-NEXT: stfd f25, 376(r1) # 8-byte Folded Spill 1337; CHECK-NEXT: fmr f25, f7 1338; CHECK-NEXT: stfd f26, 384(r1) # 8-byte Folded Spill 1339; CHECK-NEXT: fmr f26, f8 1340; CHECK-NEXT: stvx v28, r1, r3 # 16-byte Folded Spill 1341; CHECK-NEXT: li r3, 128 1342; CHECK-NEXT: stfd f27, 392(r1) # 8-byte Folded Spill 1343; CHECK-NEXT: fmr f27, f9 1344; CHECK-NEXT: stfd f28, 400(r1) # 8-byte Folded Spill 1345; CHECK-NEXT: fmr f28, f10 1346; CHECK-NEXT: stfd f29, 408(r1) # 8-byte Folded Spill 1347; CHECK-NEXT: fmr f29, f11 1348; CHECK-NEXT: stvx v29, r1, r3 # 16-byte Folded Spill 1349; CHECK-NEXT: li r3, 144 1350; CHECK-NEXT: stfd f30, 416(r1) # 8-byte Folded Spill 1351; CHECK-NEXT: fmr f30, f12 1352; CHECK-NEXT: stfd f31, 424(r1) # 8-byte Folded Spill 1353; CHECK-NEXT: fmr f31, f13 1354; CHECK-NEXT: stvx v30, r1, r3 # 16-byte Folded Spill 1355; CHECK-NEXT: li r3, 160 1356; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 1357; CHECK-NEXT: bl __gnu_f2h_ieee 1358; CHECK-NEXT: nop 1359; CHECK-NEXT: fmr f1, f20 1360; CHECK-NEXT: mr r30, r3 1361; CHECK-NEXT: bl __gnu_f2h_ieee 1362; CHECK-NEXT: nop 1363; CHECK-NEXT: fmr f1, f21 1364; CHECK-NEXT: mr r29, r3 1365; CHECK-NEXT: bl __gnu_f2h_ieee 1366; CHECK-NEXT: nop 1367; CHECK-NEXT: fmr f1, f22 1368; CHECK-NEXT: mr r28, r3 1369; CHECK-NEXT: bl __gnu_f2h_ieee 1370; CHECK-NEXT: nop 1371; CHECK-NEXT: fmr f1, f23 1372; CHECK-NEXT: mr r27, r3 1373; CHECK-NEXT: bl __gnu_f2h_ieee 1374; CHECK-NEXT: nop 1375; CHECK-NEXT: fmr f1, f24 1376; CHECK-NEXT: mr r26, r3 1377; CHECK-NEXT: bl __gnu_f2h_ieee 1378; CHECK-NEXT: nop 1379; CHECK-NEXT: fmr f1, f25 1380; CHECK-NEXT: mr r25, r3 1381; CHECK-NEXT: bl __gnu_f2h_ieee 1382; CHECK-NEXT: nop 1383; CHECK-NEXT: fmr f1, f26 1384; CHECK-NEXT: mr r24, r3 1385; CHECK-NEXT: bl __gnu_f2h_ieee 1386; CHECK-NEXT: nop 1387; CHECK-NEXT: fmr f1, f27 1388; CHECK-NEXT: mr r23, r3 1389; CHECK-NEXT: bl __gnu_f2h_ieee 1390; CHECK-NEXT: nop 1391; CHECK-NEXT: fmr f1, f28 1392; CHECK-NEXT: mr r22, r3 1393; CHECK-NEXT: bl __gnu_f2h_ieee 1394; CHECK-NEXT: nop 1395; CHECK-NEXT: fmr f1, f29 1396; CHECK-NEXT: mr r21, r3 1397; CHECK-NEXT: bl __gnu_f2h_ieee 1398; CHECK-NEXT: nop 1399; CHECK-NEXT: fmr f1, f30 1400; CHECK-NEXT: mr r20, r3 1401; CHECK-NEXT: bl __gnu_f2h_ieee 1402; CHECK-NEXT: nop 1403; CHECK-NEXT: fmr f1, f31 1404; CHECK-NEXT: mr r19, r3 1405; CHECK-NEXT: bl __gnu_f2h_ieee 1406; CHECK-NEXT: nop 1407; CHECK-NEXT: lfs f1, 568(r1) 1408; CHECK-NEXT: mr r18, r3 1409; CHECK-NEXT: bl __gnu_f2h_ieee 1410; CHECK-NEXT: nop 1411; CHECK-NEXT: lfs f1, 576(r1) 1412; CHECK-NEXT: mr r17, r3 1413; CHECK-NEXT: bl __gnu_f2h_ieee 1414; CHECK-NEXT: nop 1415; CHECK-NEXT: lfs f1, 584(r1) 1416; CHECK-NEXT: mr r16, r3 1417; CHECK-NEXT: bl __gnu_f2h_ieee 1418; CHECK-NEXT: nop 1419; CHECK-NEXT: clrldi r3, r3, 48 1420; CHECK-NEXT: bl __gnu_h2f_ieee 1421; CHECK-NEXT: nop 1422; CHECK-NEXT: clrldi r3, r16, 48 1423; CHECK-NEXT: fmr f31, f1 1424; CHECK-NEXT: bl __gnu_h2f_ieee 1425; CHECK-NEXT: nop 1426; CHECK-NEXT: clrldi r3, r17, 48 1427; CHECK-NEXT: fmr f30, f1 1428; CHECK-NEXT: bl __gnu_h2f_ieee 1429; CHECK-NEXT: nop 1430; CHECK-NEXT: clrldi r3, r18, 48 1431; CHECK-NEXT: fmr f29, f1 1432; CHECK-NEXT: bl __gnu_h2f_ieee 1433; CHECK-NEXT: nop 1434; CHECK-NEXT: clrldi r3, r19, 48 1435; CHECK-NEXT: fmr f28, f1 1436; CHECK-NEXT: bl __gnu_h2f_ieee 1437; CHECK-NEXT: nop 1438; CHECK-NEXT: clrldi r3, r20, 48 1439; CHECK-NEXT: fmr f27, f1 1440; CHECK-NEXT: bl __gnu_h2f_ieee 1441; CHECK-NEXT: nop 1442; CHECK-NEXT: clrldi r3, r21, 48 1443; CHECK-NEXT: fmr f26, f1 1444; CHECK-NEXT: bl __gnu_h2f_ieee 1445; CHECK-NEXT: nop 1446; CHECK-NEXT: clrldi r3, r22, 48 1447; CHECK-NEXT: fmr f25, f1 1448; CHECK-NEXT: bl __gnu_h2f_ieee 1449; CHECK-NEXT: nop 1450; CHECK-NEXT: clrldi r3, r23, 48 1451; CHECK-NEXT: fmr f24, f1 1452; CHECK-NEXT: bl __gnu_h2f_ieee 1453; CHECK-NEXT: nop 1454; CHECK-NEXT: clrldi r3, r24, 48 1455; CHECK-NEXT: fmr f23, f1 1456; CHECK-NEXT: bl __gnu_h2f_ieee 1457; CHECK-NEXT: nop 1458; CHECK-NEXT: clrldi r3, r25, 48 1459; CHECK-NEXT: fmr f22, f1 1460; CHECK-NEXT: bl __gnu_h2f_ieee 1461; CHECK-NEXT: nop 1462; CHECK-NEXT: clrldi r3, r26, 48 1463; CHECK-NEXT: fmr f21, f1 1464; CHECK-NEXT: bl __gnu_h2f_ieee 1465; CHECK-NEXT: nop 1466; CHECK-NEXT: clrldi r3, r27, 48 1467; CHECK-NEXT: fmr f20, f1 1468; CHECK-NEXT: bl __gnu_h2f_ieee 1469; CHECK-NEXT: nop 1470; CHECK-NEXT: clrldi r3, r28, 48 1471; CHECK-NEXT: fmr f19, f1 1472; CHECK-NEXT: bl __gnu_h2f_ieee 1473; CHECK-NEXT: nop 1474; CHECK-NEXT: clrldi r3, r29, 48 1475; CHECK-NEXT: fmr f18, f1 1476; CHECK-NEXT: bl __gnu_h2f_ieee 1477; CHECK-NEXT: nop 1478; CHECK-NEXT: clrldi r3, r30, 48 1479; CHECK-NEXT: fmr f17, f1 1480; CHECK-NEXT: bl __gnu_h2f_ieee 1481; CHECK-NEXT: nop 1482; CHECK-NEXT: bl lrintf 1483; CHECK-NEXT: nop 1484; CHECK-NEXT: fmr f1, f17 1485; CHECK-NEXT: mtvsrd v31, r3 1486; CHECK-NEXT: bl lrintf 1487; CHECK-NEXT: nop 1488; CHECK-NEXT: fmr f1, f18 1489; CHECK-NEXT: mtfprd f0, r3 1490; CHECK-NEXT: xxmrghd v31, vs0, v31 1491; CHECK-NEXT: bl lrintf 1492; CHECK-NEXT: nop 1493; CHECK-NEXT: fmr f1, f19 1494; CHECK-NEXT: mtvsrd v30, r3 1495; CHECK-NEXT: bl lrintf 1496; CHECK-NEXT: nop 1497; CHECK-NEXT: fmr f1, f20 1498; CHECK-NEXT: mtfprd f0, r3 1499; CHECK-NEXT: xxmrghd v30, vs0, v30 1500; CHECK-NEXT: bl lrintf 1501; CHECK-NEXT: nop 1502; CHECK-NEXT: fmr f1, f21 1503; CHECK-NEXT: mtvsrd v29, r3 1504; CHECK-NEXT: bl lrintf 1505; CHECK-NEXT: nop 1506; CHECK-NEXT: fmr f1, f22 1507; CHECK-NEXT: mtfprd f0, r3 1508; CHECK-NEXT: xxmrghd v29, vs0, v29 1509; CHECK-NEXT: bl lrintf 1510; CHECK-NEXT: nop 1511; CHECK-NEXT: fmr f1, f23 1512; CHECK-NEXT: mtvsrd v28, r3 1513; CHECK-NEXT: bl lrintf 1514; CHECK-NEXT: nop 1515; CHECK-NEXT: fmr f1, f24 1516; CHECK-NEXT: mtfprd f0, r3 1517; CHECK-NEXT: xxmrghd v28, vs0, v28 1518; CHECK-NEXT: bl lrintf 1519; CHECK-NEXT: nop 1520; CHECK-NEXT: fmr f1, f25 1521; CHECK-NEXT: mtvsrd v27, r3 1522; CHECK-NEXT: bl lrintf 1523; CHECK-NEXT: nop 1524; CHECK-NEXT: fmr f1, f26 1525; CHECK-NEXT: mtfprd f0, r3 1526; CHECK-NEXT: xxmrghd v27, vs0, v27 1527; CHECK-NEXT: bl lrintf 1528; CHECK-NEXT: nop 1529; CHECK-NEXT: fmr f1, f27 1530; CHECK-NEXT: mtvsrd v26, r3 1531; CHECK-NEXT: bl lrintf 1532; CHECK-NEXT: nop 1533; CHECK-NEXT: fmr f1, f28 1534; CHECK-NEXT: mtfprd f0, r3 1535; CHECK-NEXT: xxmrghd v26, vs0, v26 1536; CHECK-NEXT: bl lrintf 1537; CHECK-NEXT: nop 1538; CHECK-NEXT: fmr f1, f29 1539; CHECK-NEXT: mtvsrd v25, r3 1540; CHECK-NEXT: bl lrintf 1541; CHECK-NEXT: nop 1542; CHECK-NEXT: fmr f1, f30 1543; CHECK-NEXT: mtfprd f0, r3 1544; CHECK-NEXT: xxmrghd v25, vs0, v25 1545; CHECK-NEXT: bl lrintf 1546; CHECK-NEXT: nop 1547; CHECK-NEXT: fmr f1, f31 1548; CHECK-NEXT: mtvsrd v24, r3 1549; CHECK-NEXT: bl lrintf 1550; CHECK-NEXT: nop 1551; CHECK-NEXT: mtfprd f0, r3 1552; CHECK-NEXT: li r3, 160 1553; CHECK-NEXT: vmr v2, v31 1554; CHECK-NEXT: lfd f31, 424(r1) # 8-byte Folded Reload 1555; CHECK-NEXT: vmr v3, v30 1556; CHECK-NEXT: vmr v4, v29 1557; CHECK-NEXT: lfd f30, 416(r1) # 8-byte Folded Reload 1558; CHECK-NEXT: lfd f29, 408(r1) # 8-byte Folded Reload 1559; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 1560; CHECK-NEXT: li r3, 144 1561; CHECK-NEXT: vmr v5, v28 1562; CHECK-NEXT: vmr v6, v27 1563; CHECK-NEXT: vmr v7, v26 1564; CHECK-NEXT: vmr v8, v25 1565; CHECK-NEXT: lfd f28, 400(r1) # 8-byte Folded Reload 1566; CHECK-NEXT: lfd f27, 392(r1) # 8-byte Folded Reload 1567; CHECK-NEXT: lvx v30, r1, r3 # 16-byte Folded Reload 1568; CHECK-NEXT: li r3, 128 1569; CHECK-NEXT: lfd f26, 384(r1) # 8-byte Folded Reload 1570; CHECK-NEXT: lfd f25, 376(r1) # 8-byte Folded Reload 1571; CHECK-NEXT: xxmrghd v9, vs0, v24 1572; CHECK-NEXT: lfd f24, 368(r1) # 8-byte Folded Reload 1573; CHECK-NEXT: lfd f23, 360(r1) # 8-byte Folded Reload 1574; CHECK-NEXT: lfd f22, 352(r1) # 8-byte Folded Reload 1575; CHECK-NEXT: lvx v29, r1, r3 # 16-byte Folded Reload 1576; CHECK-NEXT: li r3, 112 1577; CHECK-NEXT: lfd f21, 344(r1) # 8-byte Folded Reload 1578; CHECK-NEXT: ld r30, 296(r1) # 8-byte Folded Reload 1579; CHECK-NEXT: lfd f20, 336(r1) # 8-byte Folded Reload 1580; CHECK-NEXT: lfd f19, 328(r1) # 8-byte Folded Reload 1581; CHECK-NEXT: ld r29, 288(r1) # 8-byte Folded Reload 1582; CHECK-NEXT: ld r28, 280(r1) # 8-byte Folded Reload 1583; CHECK-NEXT: lvx v28, r1, r3 # 16-byte Folded Reload 1584; CHECK-NEXT: li r3, 96 1585; CHECK-NEXT: lfd f18, 320(r1) # 8-byte Folded Reload 1586; CHECK-NEXT: ld r27, 272(r1) # 8-byte Folded Reload 1587; CHECK-NEXT: lfd f17, 312(r1) # 8-byte Folded Reload 1588; CHECK-NEXT: ld r26, 264(r1) # 8-byte Folded Reload 1589; CHECK-NEXT: ld r25, 256(r1) # 8-byte Folded Reload 1590; CHECK-NEXT: ld r24, 248(r1) # 8-byte Folded Reload 1591; CHECK-NEXT: lvx v27, r1, r3 # 16-byte Folded Reload 1592; CHECK-NEXT: li r3, 80 1593; CHECK-NEXT: ld r23, 240(r1) # 8-byte Folded Reload 1594; CHECK-NEXT: ld r22, 232(r1) # 8-byte Folded Reload 1595; CHECK-NEXT: ld r21, 224(r1) # 8-byte Folded Reload 1596; CHECK-NEXT: ld r20, 216(r1) # 8-byte Folded Reload 1597; CHECK-NEXT: ld r19, 208(r1) # 8-byte Folded Reload 1598; CHECK-NEXT: ld r18, 200(r1) # 8-byte Folded Reload 1599; CHECK-NEXT: lvx v26, r1, r3 # 16-byte Folded Reload 1600; CHECK-NEXT: li r3, 64 1601; CHECK-NEXT: ld r17, 192(r1) # 8-byte Folded Reload 1602; CHECK-NEXT: ld r16, 184(r1) # 8-byte Folded Reload 1603; CHECK-NEXT: lvx v25, r1, r3 # 16-byte Folded Reload 1604; CHECK-NEXT: li r3, 48 1605; CHECK-NEXT: lvx v24, r1, r3 # 16-byte Folded Reload 1606; CHECK-NEXT: addi r1, r1, 432 1607; CHECK-NEXT: ld r0, 16(r1) 1608; CHECK-NEXT: mtlr r0 1609; CHECK-NEXT: blr 1610; 1611; FAST-LABEL: lrint_v16i64_v16f16: 1612; FAST: # %bb.0: 1613; FAST-NEXT: mflr r0 1614; FAST-NEXT: .cfi_def_cfa_offset 160 1615; FAST-NEXT: .cfi_offset lr, 16 1616; FAST-NEXT: .cfi_offset f16, -128 1617; FAST-NEXT: .cfi_offset f17, -120 1618; FAST-NEXT: .cfi_offset f18, -112 1619; FAST-NEXT: .cfi_offset f19, -104 1620; FAST-NEXT: .cfi_offset f20, -96 1621; FAST-NEXT: .cfi_offset f21, -88 1622; FAST-NEXT: .cfi_offset f22, -80 1623; FAST-NEXT: .cfi_offset f23, -72 1624; FAST-NEXT: .cfi_offset f24, -64 1625; FAST-NEXT: .cfi_offset f25, -56 1626; FAST-NEXT: .cfi_offset f26, -48 1627; FAST-NEXT: .cfi_offset f27, -40 1628; FAST-NEXT: .cfi_offset f28, -32 1629; FAST-NEXT: .cfi_offset f29, -24 1630; FAST-NEXT: .cfi_offset f30, -16 1631; FAST-NEXT: .cfi_offset f31, -8 1632; FAST-NEXT: stfd f16, -128(r1) # 8-byte Folded Spill 1633; FAST-NEXT: stfd f17, -120(r1) # 8-byte Folded Spill 1634; FAST-NEXT: stfd f18, -112(r1) # 8-byte Folded Spill 1635; FAST-NEXT: stfd f19, -104(r1) # 8-byte Folded Spill 1636; FAST-NEXT: stfd f20, -96(r1) # 8-byte Folded Spill 1637; FAST-NEXT: stfd f21, -88(r1) # 8-byte Folded Spill 1638; FAST-NEXT: stfd f22, -80(r1) # 8-byte Folded Spill 1639; FAST-NEXT: stfd f23, -72(r1) # 8-byte Folded Spill 1640; FAST-NEXT: stfd f24, -64(r1) # 8-byte Folded Spill 1641; FAST-NEXT: stfd f25, -56(r1) # 8-byte Folded Spill 1642; FAST-NEXT: stfd f26, -48(r1) # 8-byte Folded Spill 1643; FAST-NEXT: stfd f27, -40(r1) # 8-byte Folded Spill 1644; FAST-NEXT: stfd f28, -32(r1) # 8-byte Folded Spill 1645; FAST-NEXT: stfd f29, -24(r1) # 8-byte Folded Spill 1646; FAST-NEXT: stfd f30, -16(r1) # 8-byte Folded Spill 1647; FAST-NEXT: stfd f31, -8(r1) # 8-byte Folded Spill 1648; FAST-NEXT: stdu r1, -160(r1) 1649; FAST-NEXT: fmr f26, f1 1650; FAST-NEXT: lfs f1, 312(r1) 1651; FAST-NEXT: std r0, 176(r1) 1652; FAST-NEXT: fmr f28, f13 1653; FAST-NEXT: fmr f27, f12 1654; FAST-NEXT: fmr f24, f11 1655; FAST-NEXT: fmr f21, f10 1656; FAST-NEXT: fmr f19, f9 1657; FAST-NEXT: fmr f18, f8 1658; FAST-NEXT: fmr f17, f7 1659; FAST-NEXT: fmr f16, f6 1660; FAST-NEXT: fmr f20, f5 1661; FAST-NEXT: fmr f22, f4 1662; FAST-NEXT: fmr f23, f3 1663; FAST-NEXT: fmr f25, f2 1664; FAST-NEXT: bl __gnu_f2h_ieee 1665; FAST-NEXT: nop 1666; FAST-NEXT: clrldi r3, r3, 48 1667; FAST-NEXT: bl __gnu_h2f_ieee 1668; FAST-NEXT: nop 1669; FAST-NEXT: fmr f31, f1 1670; FAST-NEXT: lfs f1, 304(r1) 1671; FAST-NEXT: bl __gnu_f2h_ieee 1672; FAST-NEXT: nop 1673; FAST-NEXT: clrldi r3, r3, 48 1674; FAST-NEXT: bl __gnu_h2f_ieee 1675; FAST-NEXT: nop 1676; FAST-NEXT: fmr f30, f1 1677; FAST-NEXT: lfs f1, 296(r1) 1678; FAST-NEXT: bl __gnu_f2h_ieee 1679; FAST-NEXT: nop 1680; FAST-NEXT: clrldi r3, r3, 48 1681; FAST-NEXT: bl __gnu_h2f_ieee 1682; FAST-NEXT: nop 1683; FAST-NEXT: fmr f29, f1 1684; FAST-NEXT: fmr f1, f28 1685; FAST-NEXT: bl __gnu_f2h_ieee 1686; FAST-NEXT: nop 1687; FAST-NEXT: clrldi r3, r3, 48 1688; FAST-NEXT: bl __gnu_h2f_ieee 1689; FAST-NEXT: nop 1690; FAST-NEXT: fmr f28, f1 1691; FAST-NEXT: fmr f1, f27 1692; FAST-NEXT: bl __gnu_f2h_ieee 1693; FAST-NEXT: nop 1694; FAST-NEXT: clrldi r3, r3, 48 1695; FAST-NEXT: bl __gnu_h2f_ieee 1696; FAST-NEXT: nop 1697; FAST-NEXT: fmr f27, f1 1698; FAST-NEXT: fmr f1, f24 1699; FAST-NEXT: bl __gnu_f2h_ieee 1700; FAST-NEXT: nop 1701; FAST-NEXT: clrldi r3, r3, 48 1702; FAST-NEXT: bl __gnu_h2f_ieee 1703; FAST-NEXT: nop 1704; FAST-NEXT: fmr f24, f1 1705; FAST-NEXT: fmr f1, f21 1706; FAST-NEXT: bl __gnu_f2h_ieee 1707; FAST-NEXT: nop 1708; FAST-NEXT: clrldi r3, r3, 48 1709; FAST-NEXT: bl __gnu_h2f_ieee 1710; FAST-NEXT: nop 1711; FAST-NEXT: fmr f21, f1 1712; FAST-NEXT: fmr f1, f19 1713; FAST-NEXT: bl __gnu_f2h_ieee 1714; FAST-NEXT: nop 1715; FAST-NEXT: clrldi r3, r3, 48 1716; FAST-NEXT: bl __gnu_h2f_ieee 1717; FAST-NEXT: nop 1718; FAST-NEXT: fmr f19, f1 1719; FAST-NEXT: fmr f1, f18 1720; FAST-NEXT: bl __gnu_f2h_ieee 1721; FAST-NEXT: nop 1722; FAST-NEXT: clrldi r3, r3, 48 1723; FAST-NEXT: bl __gnu_h2f_ieee 1724; FAST-NEXT: nop 1725; FAST-NEXT: fmr f18, f1 1726; FAST-NEXT: fmr f1, f17 1727; FAST-NEXT: bl __gnu_f2h_ieee 1728; FAST-NEXT: nop 1729; FAST-NEXT: clrldi r3, r3, 48 1730; FAST-NEXT: bl __gnu_h2f_ieee 1731; FAST-NEXT: nop 1732; FAST-NEXT: fmr f17, f1 1733; FAST-NEXT: fmr f1, f16 1734; FAST-NEXT: bl __gnu_f2h_ieee 1735; FAST-NEXT: nop 1736; FAST-NEXT: clrldi r3, r3, 48 1737; FAST-NEXT: bl __gnu_h2f_ieee 1738; FAST-NEXT: nop 1739; FAST-NEXT: fmr f16, f1 1740; FAST-NEXT: fmr f1, f20 1741; FAST-NEXT: bl __gnu_f2h_ieee 1742; FAST-NEXT: nop 1743; FAST-NEXT: clrldi r3, r3, 48 1744; FAST-NEXT: bl __gnu_h2f_ieee 1745; FAST-NEXT: nop 1746; FAST-NEXT: fmr f20, f1 1747; FAST-NEXT: fmr f1, f22 1748; FAST-NEXT: bl __gnu_f2h_ieee 1749; FAST-NEXT: nop 1750; FAST-NEXT: clrldi r3, r3, 48 1751; FAST-NEXT: bl __gnu_h2f_ieee 1752; FAST-NEXT: nop 1753; FAST-NEXT: fmr f22, f1 1754; FAST-NEXT: fmr f1, f23 1755; FAST-NEXT: bl __gnu_f2h_ieee 1756; FAST-NEXT: nop 1757; FAST-NEXT: clrldi r3, r3, 48 1758; FAST-NEXT: bl __gnu_h2f_ieee 1759; FAST-NEXT: nop 1760; FAST-NEXT: fmr f23, f1 1761; FAST-NEXT: fmr f1, f25 1762; FAST-NEXT: bl __gnu_f2h_ieee 1763; FAST-NEXT: nop 1764; FAST-NEXT: clrldi r3, r3, 48 1765; FAST-NEXT: bl __gnu_h2f_ieee 1766; FAST-NEXT: nop 1767; FAST-NEXT: fmr f25, f1 1768; FAST-NEXT: fmr f1, f26 1769; FAST-NEXT: bl __gnu_f2h_ieee 1770; FAST-NEXT: nop 1771; FAST-NEXT: clrldi r3, r3, 48 1772; FAST-NEXT: bl __gnu_h2f_ieee 1773; FAST-NEXT: nop 1774; FAST-NEXT: fctid f0, f25 1775; FAST-NEXT: fctid f2, f23 1776; FAST-NEXT: mffprd r3, f0 1777; FAST-NEXT: fctid f3, f22 1778; FAST-NEXT: fctid f4, f20 1779; FAST-NEXT: fctid f5, f16 1780; FAST-NEXT: fctid f6, f17 1781; FAST-NEXT: fctid f7, f18 1782; FAST-NEXT: fctid f8, f19 1783; FAST-NEXT: fctid f9, f21 1784; FAST-NEXT: fctid f10, f24 1785; FAST-NEXT: fctid f1, f1 1786; FAST-NEXT: mtfprd f0, r3 1787; FAST-NEXT: mffprd r3, f2 1788; FAST-NEXT: mtfprd f2, r3 1789; FAST-NEXT: mffprd r3, f3 1790; FAST-NEXT: mtfprd f3, r3 1791; FAST-NEXT: mffprd r3, f4 1792; FAST-NEXT: mtfprd f4, r3 1793; FAST-NEXT: mffprd r3, f5 1794; FAST-NEXT: mtfprd f5, r3 1795; FAST-NEXT: mffprd r3, f6 1796; FAST-NEXT: mtfprd f6, r3 1797; FAST-NEXT: mffprd r3, f7 1798; FAST-NEXT: mtfprd f7, r3 1799; FAST-NEXT: mffprd r3, f8 1800; FAST-NEXT: mtfprd f8, r3 1801; FAST-NEXT: mffprd r3, f9 1802; FAST-NEXT: mtfprd f9, r3 1803; FAST-NEXT: mffprd r3, f10 1804; FAST-NEXT: mtfprd f10, r3 1805; FAST-NEXT: mffprd r3, f1 1806; FAST-NEXT: mtfprd f1, r3 1807; FAST-NEXT: xxmrghd v3, vs3, vs2 1808; FAST-NEXT: xxmrghd v4, vs5, vs4 1809; FAST-NEXT: xxmrghd v5, vs7, vs6 1810; FAST-NEXT: xxmrghd v6, vs9, vs8 1811; FAST-NEXT: xxmrghd v2, vs0, vs1 1812; FAST-NEXT: fctid f0, f27 1813; FAST-NEXT: fctid f1, f29 1814; FAST-NEXT: mffprd r3, f0 1815; FAST-NEXT: mtfprd f0, r3 1816; FAST-NEXT: xxmrghd v7, vs0, vs10 1817; FAST-NEXT: fctid f0, f28 1818; FAST-NEXT: mffprd r3, f0 1819; FAST-NEXT: mtfprd f0, r3 1820; FAST-NEXT: mffprd r3, f1 1821; FAST-NEXT: mtfprd f1, r3 1822; FAST-NEXT: xxmrghd v8, vs1, vs0 1823; FAST-NEXT: fctid f0, f30 1824; FAST-NEXT: fctid f1, f31 1825; FAST-NEXT: mffprd r3, f0 1826; FAST-NEXT: mtfprd f0, r3 1827; FAST-NEXT: mffprd r3, f1 1828; FAST-NEXT: mtfprd f1, r3 1829; FAST-NEXT: xxmrghd v9, vs1, vs0 1830; FAST-NEXT: addi r1, r1, 160 1831; FAST-NEXT: ld r0, 16(r1) 1832; FAST-NEXT: lfd f31, -8(r1) # 8-byte Folded Reload 1833; FAST-NEXT: lfd f30, -16(r1) # 8-byte Folded Reload 1834; FAST-NEXT: mtlr r0 1835; FAST-NEXT: lfd f29, -24(r1) # 8-byte Folded Reload 1836; FAST-NEXT: lfd f28, -32(r1) # 8-byte Folded Reload 1837; FAST-NEXT: lfd f27, -40(r1) # 8-byte Folded Reload 1838; FAST-NEXT: lfd f26, -48(r1) # 8-byte Folded Reload 1839; FAST-NEXT: lfd f25, -56(r1) # 8-byte Folded Reload 1840; FAST-NEXT: lfd f24, -64(r1) # 8-byte Folded Reload 1841; FAST-NEXT: lfd f23, -72(r1) # 8-byte Folded Reload 1842; FAST-NEXT: lfd f22, -80(r1) # 8-byte Folded Reload 1843; FAST-NEXT: lfd f21, -88(r1) # 8-byte Folded Reload 1844; FAST-NEXT: lfd f20, -96(r1) # 8-byte Folded Reload 1845; FAST-NEXT: lfd f19, -104(r1) # 8-byte Folded Reload 1846; FAST-NEXT: lfd f18, -112(r1) # 8-byte Folded Reload 1847; FAST-NEXT: lfd f17, -120(r1) # 8-byte Folded Reload 1848; FAST-NEXT: lfd f16, -128(r1) # 8-byte Folded Reload 1849; FAST-NEXT: blr 1850 %a = call <16 x i64> @llvm.lrint.v16i64.v16f16(<16 x half> %x) 1851 ret <16 x i64> %a 1852} 1853declare <16 x i64> @llvm.lrint.v16i64.v16f16(<16 x half>) 1854 1855define <32 x i64> @lrint_v32i64_v32f16(<32 x half> %x) { 1856; BE-LABEL: lrint_v32i64_v32f16: 1857; BE: # %bb.0: 1858; BE-NEXT: mflr r0 1859; BE-NEXT: stdu r1, -864(r1) 1860; BE-NEXT: std r0, 880(r1) 1861; BE-NEXT: .cfi_def_cfa_offset 864 1862; BE-NEXT: .cfi_offset lr, 16 1863; BE-NEXT: .cfi_offset r14, -288 1864; BE-NEXT: .cfi_offset r15, -280 1865; BE-NEXT: .cfi_offset r16, -272 1866; BE-NEXT: .cfi_offset r17, -264 1867; BE-NEXT: .cfi_offset r18, -256 1868; BE-NEXT: .cfi_offset r19, -248 1869; BE-NEXT: .cfi_offset r20, -240 1870; BE-NEXT: .cfi_offset r21, -232 1871; BE-NEXT: .cfi_offset r22, -224 1872; BE-NEXT: .cfi_offset r23, -216 1873; BE-NEXT: .cfi_offset r24, -208 1874; BE-NEXT: .cfi_offset r25, -200 1875; BE-NEXT: .cfi_offset r26, -192 1876; BE-NEXT: .cfi_offset r27, -184 1877; BE-NEXT: .cfi_offset r28, -176 1878; BE-NEXT: .cfi_offset r29, -168 1879; BE-NEXT: .cfi_offset r30, -160 1880; BE-NEXT: .cfi_offset r31, -152 1881; BE-NEXT: .cfi_offset f14, -144 1882; BE-NEXT: .cfi_offset f15, -136 1883; BE-NEXT: .cfi_offset f16, -128 1884; BE-NEXT: .cfi_offset f17, -120 1885; BE-NEXT: .cfi_offset f18, -112 1886; BE-NEXT: .cfi_offset f19, -104 1887; BE-NEXT: .cfi_offset f20, -96 1888; BE-NEXT: .cfi_offset f21, -88 1889; BE-NEXT: .cfi_offset f22, -80 1890; BE-NEXT: .cfi_offset f23, -72 1891; BE-NEXT: .cfi_offset f24, -64 1892; BE-NEXT: .cfi_offset f25, -56 1893; BE-NEXT: .cfi_offset f26, -48 1894; BE-NEXT: .cfi_offset f27, -40 1895; BE-NEXT: .cfi_offset f28, -32 1896; BE-NEXT: .cfi_offset f29, -24 1897; BE-NEXT: .cfi_offset f30, -16 1898; BE-NEXT: .cfi_offset f31, -8 1899; BE-NEXT: stfd f20, 768(r1) # 8-byte Folded Spill 1900; BE-NEXT: fmr f20, f1 1901; BE-NEXT: fmr f1, f2 1902; BE-NEXT: std r14, 576(r1) # 8-byte Folded Spill 1903; BE-NEXT: std r15, 584(r1) # 8-byte Folded Spill 1904; BE-NEXT: std r16, 592(r1) # 8-byte Folded Spill 1905; BE-NEXT: std r17, 600(r1) # 8-byte Folded Spill 1906; BE-NEXT: std r18, 608(r1) # 8-byte Folded Spill 1907; BE-NEXT: std r19, 616(r1) # 8-byte Folded Spill 1908; BE-NEXT: std r20, 624(r1) # 8-byte Folded Spill 1909; BE-NEXT: std r21, 632(r1) # 8-byte Folded Spill 1910; BE-NEXT: std r22, 640(r1) # 8-byte Folded Spill 1911; BE-NEXT: std r23, 648(r1) # 8-byte Folded Spill 1912; BE-NEXT: std r24, 656(r1) # 8-byte Folded Spill 1913; BE-NEXT: std r25, 664(r1) # 8-byte Folded Spill 1914; BE-NEXT: std r26, 672(r1) # 8-byte Folded Spill 1915; BE-NEXT: std r27, 680(r1) # 8-byte Folded Spill 1916; BE-NEXT: std r28, 688(r1) # 8-byte Folded Spill 1917; BE-NEXT: std r29, 696(r1) # 8-byte Folded Spill 1918; BE-NEXT: std r30, 704(r1) # 8-byte Folded Spill 1919; BE-NEXT: std r31, 712(r1) # 8-byte Folded Spill 1920; BE-NEXT: stfd f14, 720(r1) # 8-byte Folded Spill 1921; BE-NEXT: stfd f15, 728(r1) # 8-byte Folded Spill 1922; BE-NEXT: stfd f16, 736(r1) # 8-byte Folded Spill 1923; BE-NEXT: stfd f17, 744(r1) # 8-byte Folded Spill 1924; BE-NEXT: stfd f18, 752(r1) # 8-byte Folded Spill 1925; BE-NEXT: stfd f19, 760(r1) # 8-byte Folded Spill 1926; BE-NEXT: stfd f21, 776(r1) # 8-byte Folded Spill 1927; BE-NEXT: stfd f22, 784(r1) # 8-byte Folded Spill 1928; BE-NEXT: stfd f23, 792(r1) # 8-byte Folded Spill 1929; BE-NEXT: stfd f24, 800(r1) # 8-byte Folded Spill 1930; BE-NEXT: stfd f25, 808(r1) # 8-byte Folded Spill 1931; BE-NEXT: stfd f26, 816(r1) # 8-byte Folded Spill 1932; BE-NEXT: stfd f27, 824(r1) # 8-byte Folded Spill 1933; BE-NEXT: stfd f28, 832(r1) # 8-byte Folded Spill 1934; BE-NEXT: stfd f29, 840(r1) # 8-byte Folded Spill 1935; BE-NEXT: stfd f30, 848(r1) # 8-byte Folded Spill 1936; BE-NEXT: stfd f31, 856(r1) # 8-byte Folded Spill 1937; BE-NEXT: fmr f31, f13 1938; BE-NEXT: fmr f29, f12 1939; BE-NEXT: fmr f30, f11 1940; BE-NEXT: fmr f28, f10 1941; BE-NEXT: fmr f27, f9 1942; BE-NEXT: fmr f26, f8 1943; BE-NEXT: fmr f25, f7 1944; BE-NEXT: fmr f24, f6 1945; BE-NEXT: fmr f23, f5 1946; BE-NEXT: fmr f22, f4 1947; BE-NEXT: fmr f21, f3 1948; BE-NEXT: mr r30, r3 1949; BE-NEXT: bl __gnu_f2h_ieee 1950; BE-NEXT: nop 1951; BE-NEXT: fmr f1, f20 1952; BE-NEXT: std r3, 304(r1) # 8-byte Folded Spill 1953; BE-NEXT: bl __gnu_f2h_ieee 1954; BE-NEXT: nop 1955; BE-NEXT: fmr f1, f22 1956; BE-NEXT: std r3, 296(r1) # 8-byte Folded Spill 1957; BE-NEXT: bl __gnu_f2h_ieee 1958; BE-NEXT: nop 1959; BE-NEXT: fmr f1, f21 1960; BE-NEXT: std r3, 280(r1) # 8-byte Folded Spill 1961; BE-NEXT: bl __gnu_f2h_ieee 1962; BE-NEXT: nop 1963; BE-NEXT: fmr f1, f24 1964; BE-NEXT: std r3, 264(r1) # 8-byte Folded Spill 1965; BE-NEXT: bl __gnu_f2h_ieee 1966; BE-NEXT: nop 1967; BE-NEXT: fmr f1, f23 1968; BE-NEXT: std r3, 248(r1) # 8-byte Folded Spill 1969; BE-NEXT: bl __gnu_f2h_ieee 1970; BE-NEXT: nop 1971; BE-NEXT: fmr f1, f26 1972; BE-NEXT: std r3, 232(r1) # 8-byte Folded Spill 1973; BE-NEXT: bl __gnu_f2h_ieee 1974; BE-NEXT: nop 1975; BE-NEXT: fmr f1, f25 1976; BE-NEXT: std r3, 216(r1) # 8-byte Folded Spill 1977; BE-NEXT: bl __gnu_f2h_ieee 1978; BE-NEXT: nop 1979; BE-NEXT: fmr f1, f28 1980; BE-NEXT: std r3, 200(r1) # 8-byte Folded Spill 1981; BE-NEXT: bl __gnu_f2h_ieee 1982; BE-NEXT: nop 1983; BE-NEXT: fmr f1, f27 1984; BE-NEXT: std r3, 184(r1) # 8-byte Folded Spill 1985; BE-NEXT: bl __gnu_f2h_ieee 1986; BE-NEXT: nop 1987; BE-NEXT: fmr f1, f29 1988; BE-NEXT: std r3, 168(r1) # 8-byte Folded Spill 1989; BE-NEXT: bl __gnu_f2h_ieee 1990; BE-NEXT: nop 1991; BE-NEXT: fmr f1, f30 1992; BE-NEXT: std r3, 152(r1) # 8-byte Folded Spill 1993; BE-NEXT: bl __gnu_f2h_ieee 1994; BE-NEXT: nop 1995; BE-NEXT: lfs f1, 1028(r1) 1996; BE-NEXT: std r3, 136(r1) # 8-byte Folded Spill 1997; BE-NEXT: bl __gnu_f2h_ieee 1998; BE-NEXT: nop 1999; BE-NEXT: fmr f1, f31 2000; BE-NEXT: std r3, 120(r1) # 8-byte Folded Spill 2001; BE-NEXT: bl __gnu_f2h_ieee 2002; BE-NEXT: nop 2003; BE-NEXT: lfs f1, 1044(r1) 2004; BE-NEXT: std r3, 112(r1) # 8-byte Folded Spill 2005; BE-NEXT: bl __gnu_f2h_ieee 2006; BE-NEXT: nop 2007; BE-NEXT: lfs f1, 1036(r1) 2008; BE-NEXT: mr r15, r3 2009; BE-NEXT: bl __gnu_f2h_ieee 2010; BE-NEXT: nop 2011; BE-NEXT: lfs f1, 1060(r1) 2012; BE-NEXT: mr r14, r3 2013; BE-NEXT: bl __gnu_f2h_ieee 2014; BE-NEXT: nop 2015; BE-NEXT: lfs f1, 1052(r1) 2016; BE-NEXT: mr r31, r3 2017; BE-NEXT: bl __gnu_f2h_ieee 2018; BE-NEXT: nop 2019; BE-NEXT: lfs f1, 1076(r1) 2020; BE-NEXT: mr r29, r3 2021; BE-NEXT: bl __gnu_f2h_ieee 2022; BE-NEXT: nop 2023; BE-NEXT: lfs f1, 1068(r1) 2024; BE-NEXT: mr r28, r3 2025; BE-NEXT: bl __gnu_f2h_ieee 2026; BE-NEXT: nop 2027; BE-NEXT: lfs f1, 1092(r1) 2028; BE-NEXT: mr r27, r3 2029; BE-NEXT: bl __gnu_f2h_ieee 2030; BE-NEXT: nop 2031; BE-NEXT: lfs f1, 1084(r1) 2032; BE-NEXT: mr r26, r3 2033; BE-NEXT: bl __gnu_f2h_ieee 2034; BE-NEXT: nop 2035; BE-NEXT: lfs f1, 1108(r1) 2036; BE-NEXT: mr r25, r3 2037; BE-NEXT: bl __gnu_f2h_ieee 2038; BE-NEXT: nop 2039; BE-NEXT: lfs f1, 1100(r1) 2040; BE-NEXT: mr r24, r3 2041; BE-NEXT: bl __gnu_f2h_ieee 2042; BE-NEXT: nop 2043; BE-NEXT: lfs f1, 1124(r1) 2044; BE-NEXT: mr r23, r3 2045; BE-NEXT: bl __gnu_f2h_ieee 2046; BE-NEXT: nop 2047; BE-NEXT: lfs f1, 1116(r1) 2048; BE-NEXT: mr r22, r3 2049; BE-NEXT: bl __gnu_f2h_ieee 2050; BE-NEXT: nop 2051; BE-NEXT: lfs f1, 1140(r1) 2052; BE-NEXT: mr r21, r3 2053; BE-NEXT: bl __gnu_f2h_ieee 2054; BE-NEXT: nop 2055; BE-NEXT: lfs f1, 1132(r1) 2056; BE-NEXT: mr r20, r3 2057; BE-NEXT: bl __gnu_f2h_ieee 2058; BE-NEXT: nop 2059; BE-NEXT: lfs f1, 1156(r1) 2060; BE-NEXT: mr r19, r3 2061; BE-NEXT: bl __gnu_f2h_ieee 2062; BE-NEXT: nop 2063; BE-NEXT: lfs f1, 1148(r1) 2064; BE-NEXT: mr r18, r3 2065; BE-NEXT: bl __gnu_f2h_ieee 2066; BE-NEXT: nop 2067; BE-NEXT: lfs f1, 1172(r1) 2068; BE-NEXT: mr r17, r3 2069; BE-NEXT: bl __gnu_f2h_ieee 2070; BE-NEXT: nop 2071; BE-NEXT: lfs f1, 1164(r1) 2072; BE-NEXT: mr r16, r3 2073; BE-NEXT: bl __gnu_f2h_ieee 2074; BE-NEXT: nop 2075; BE-NEXT: clrldi r3, r3, 48 2076; BE-NEXT: bl __gnu_h2f_ieee 2077; BE-NEXT: nop 2078; BE-NEXT: clrldi r3, r16, 48 2079; BE-NEXT: stfs f1, 316(r1) # 4-byte Folded Spill 2080; BE-NEXT: bl __gnu_h2f_ieee 2081; BE-NEXT: nop 2082; BE-NEXT: clrldi r3, r17, 48 2083; BE-NEXT: stfs f1, 312(r1) # 4-byte Folded Spill 2084; BE-NEXT: bl __gnu_h2f_ieee 2085; BE-NEXT: nop 2086; BE-NEXT: clrldi r3, r18, 48 2087; BE-NEXT: stfs f1, 292(r1) # 4-byte Folded Spill 2088; BE-NEXT: bl __gnu_h2f_ieee 2089; BE-NEXT: nop 2090; BE-NEXT: clrldi r3, r19, 48 2091; BE-NEXT: stfs f1, 276(r1) # 4-byte Folded Spill 2092; BE-NEXT: bl __gnu_h2f_ieee 2093; BE-NEXT: nop 2094; BE-NEXT: clrldi r3, r20, 48 2095; BE-NEXT: stfs f1, 260(r1) # 4-byte Folded Spill 2096; BE-NEXT: bl __gnu_h2f_ieee 2097; BE-NEXT: nop 2098; BE-NEXT: clrldi r3, r21, 48 2099; BE-NEXT: stfs f1, 244(r1) # 4-byte Folded Spill 2100; BE-NEXT: bl __gnu_h2f_ieee 2101; BE-NEXT: nop 2102; BE-NEXT: clrldi r3, r22, 48 2103; BE-NEXT: stfs f1, 228(r1) # 4-byte Folded Spill 2104; BE-NEXT: bl __gnu_h2f_ieee 2105; BE-NEXT: nop 2106; BE-NEXT: clrldi r3, r23, 48 2107; BE-NEXT: stfs f1, 212(r1) # 4-byte Folded Spill 2108; BE-NEXT: bl __gnu_h2f_ieee 2109; BE-NEXT: nop 2110; BE-NEXT: clrldi r3, r24, 48 2111; BE-NEXT: stfs f1, 196(r1) # 4-byte Folded Spill 2112; BE-NEXT: bl __gnu_h2f_ieee 2113; BE-NEXT: nop 2114; BE-NEXT: clrldi r3, r25, 48 2115; BE-NEXT: stfs f1, 180(r1) # 4-byte Folded Spill 2116; BE-NEXT: bl __gnu_h2f_ieee 2117; BE-NEXT: nop 2118; BE-NEXT: clrldi r3, r26, 48 2119; BE-NEXT: stfs f1, 164(r1) # 4-byte Folded Spill 2120; BE-NEXT: bl __gnu_h2f_ieee 2121; BE-NEXT: nop 2122; BE-NEXT: clrldi r3, r27, 48 2123; BE-NEXT: stfs f1, 148(r1) # 4-byte Folded Spill 2124; BE-NEXT: bl __gnu_h2f_ieee 2125; BE-NEXT: nop 2126; BE-NEXT: clrldi r3, r28, 48 2127; BE-NEXT: stfs f1, 132(r1) # 4-byte Folded Spill 2128; BE-NEXT: bl __gnu_h2f_ieee 2129; BE-NEXT: nop 2130; BE-NEXT: clrldi r3, r29, 48 2131; BE-NEXT: fmr f18, f1 2132; BE-NEXT: bl __gnu_h2f_ieee 2133; BE-NEXT: nop 2134; BE-NEXT: clrldi r3, r31, 48 2135; BE-NEXT: fmr f17, f1 2136; BE-NEXT: bl __gnu_h2f_ieee 2137; BE-NEXT: nop 2138; BE-NEXT: clrldi r3, r14, 48 2139; BE-NEXT: fmr f16, f1 2140; BE-NEXT: bl __gnu_h2f_ieee 2141; BE-NEXT: nop 2142; BE-NEXT: clrldi r3, r15, 48 2143; BE-NEXT: fmr f15, f1 2144; BE-NEXT: bl __gnu_h2f_ieee 2145; BE-NEXT: nop 2146; BE-NEXT: ld r3, 112(r1) # 8-byte Folded Reload 2147; BE-NEXT: fmr f14, f1 2148; BE-NEXT: clrldi r3, r3, 48 2149; BE-NEXT: bl __gnu_h2f_ieee 2150; BE-NEXT: nop 2151; BE-NEXT: ld r3, 120(r1) # 8-byte Folded Reload 2152; BE-NEXT: fmr f31, f1 2153; BE-NEXT: clrldi r3, r3, 48 2154; BE-NEXT: bl __gnu_h2f_ieee 2155; BE-NEXT: nop 2156; BE-NEXT: ld r3, 136(r1) # 8-byte Folded Reload 2157; BE-NEXT: fmr f30, f1 2158; BE-NEXT: clrldi r3, r3, 48 2159; BE-NEXT: bl __gnu_h2f_ieee 2160; BE-NEXT: nop 2161; BE-NEXT: ld r3, 152(r1) # 8-byte Folded Reload 2162; BE-NEXT: fmr f29, f1 2163; BE-NEXT: clrldi r3, r3, 48 2164; BE-NEXT: bl __gnu_h2f_ieee 2165; BE-NEXT: nop 2166; BE-NEXT: ld r3, 168(r1) # 8-byte Folded Reload 2167; BE-NEXT: fmr f28, f1 2168; BE-NEXT: clrldi r3, r3, 48 2169; BE-NEXT: bl __gnu_h2f_ieee 2170; BE-NEXT: nop 2171; BE-NEXT: ld r3, 184(r1) # 8-byte Folded Reload 2172; BE-NEXT: fmr f27, f1 2173; BE-NEXT: clrldi r3, r3, 48 2174; BE-NEXT: bl __gnu_h2f_ieee 2175; BE-NEXT: nop 2176; BE-NEXT: ld r3, 200(r1) # 8-byte Folded Reload 2177; BE-NEXT: fmr f26, f1 2178; BE-NEXT: clrldi r3, r3, 48 2179; BE-NEXT: bl __gnu_h2f_ieee 2180; BE-NEXT: nop 2181; BE-NEXT: ld r3, 216(r1) # 8-byte Folded Reload 2182; BE-NEXT: fmr f25, f1 2183; BE-NEXT: clrldi r3, r3, 48 2184; BE-NEXT: bl __gnu_h2f_ieee 2185; BE-NEXT: nop 2186; BE-NEXT: ld r3, 232(r1) # 8-byte Folded Reload 2187; BE-NEXT: fmr f24, f1 2188; BE-NEXT: clrldi r3, r3, 48 2189; BE-NEXT: bl __gnu_h2f_ieee 2190; BE-NEXT: nop 2191; BE-NEXT: ld r3, 248(r1) # 8-byte Folded Reload 2192; BE-NEXT: fmr f23, f1 2193; BE-NEXT: clrldi r3, r3, 48 2194; BE-NEXT: bl __gnu_h2f_ieee 2195; BE-NEXT: nop 2196; BE-NEXT: ld r3, 264(r1) # 8-byte Folded Reload 2197; BE-NEXT: fmr f22, f1 2198; BE-NEXT: clrldi r3, r3, 48 2199; BE-NEXT: bl __gnu_h2f_ieee 2200; BE-NEXT: nop 2201; BE-NEXT: ld r3, 280(r1) # 8-byte Folded Reload 2202; BE-NEXT: fmr f21, f1 2203; BE-NEXT: clrldi r3, r3, 48 2204; BE-NEXT: bl __gnu_h2f_ieee 2205; BE-NEXT: nop 2206; BE-NEXT: ld r3, 296(r1) # 8-byte Folded Reload 2207; BE-NEXT: fmr f20, f1 2208; BE-NEXT: clrldi r3, r3, 48 2209; BE-NEXT: bl __gnu_h2f_ieee 2210; BE-NEXT: nop 2211; BE-NEXT: ld r3, 304(r1) # 8-byte Folded Reload 2212; BE-NEXT: fmr f19, f1 2213; BE-NEXT: clrldi r3, r3, 48 2214; BE-NEXT: bl __gnu_h2f_ieee 2215; BE-NEXT: nop 2216; BE-NEXT: bl lrintf 2217; BE-NEXT: nop 2218; BE-NEXT: fmr f1, f19 2219; BE-NEXT: std r3, 328(r1) 2220; BE-NEXT: bl lrintf 2221; BE-NEXT: nop 2222; BE-NEXT: fmr f1, f20 2223; BE-NEXT: std r3, 320(r1) 2224; BE-NEXT: bl lrintf 2225; BE-NEXT: nop 2226; BE-NEXT: fmr f1, f21 2227; BE-NEXT: std r3, 344(r1) 2228; BE-NEXT: bl lrintf 2229; BE-NEXT: nop 2230; BE-NEXT: fmr f1, f22 2231; BE-NEXT: std r3, 336(r1) 2232; BE-NEXT: bl lrintf 2233; BE-NEXT: nop 2234; BE-NEXT: fmr f1, f23 2235; BE-NEXT: std r3, 360(r1) 2236; BE-NEXT: bl lrintf 2237; BE-NEXT: nop 2238; BE-NEXT: fmr f1, f24 2239; BE-NEXT: std r3, 352(r1) 2240; BE-NEXT: bl lrintf 2241; BE-NEXT: nop 2242; BE-NEXT: fmr f1, f25 2243; BE-NEXT: std r3, 376(r1) 2244; BE-NEXT: bl lrintf 2245; BE-NEXT: nop 2246; BE-NEXT: fmr f1, f26 2247; BE-NEXT: std r3, 368(r1) 2248; BE-NEXT: bl lrintf 2249; BE-NEXT: nop 2250; BE-NEXT: fmr f1, f27 2251; BE-NEXT: std r3, 392(r1) 2252; BE-NEXT: bl lrintf 2253; BE-NEXT: nop 2254; BE-NEXT: fmr f1, f28 2255; BE-NEXT: std r3, 384(r1) 2256; BE-NEXT: bl lrintf 2257; BE-NEXT: nop 2258; BE-NEXT: fmr f1, f29 2259; BE-NEXT: std r3, 408(r1) 2260; BE-NEXT: bl lrintf 2261; BE-NEXT: nop 2262; BE-NEXT: fmr f1, f30 2263; BE-NEXT: std r3, 400(r1) 2264; BE-NEXT: bl lrintf 2265; BE-NEXT: nop 2266; BE-NEXT: fmr f1, f31 2267; BE-NEXT: std r3, 424(r1) 2268; BE-NEXT: bl lrintf 2269; BE-NEXT: nop 2270; BE-NEXT: fmr f1, f14 2271; BE-NEXT: std r3, 416(r1) 2272; BE-NEXT: bl lrintf 2273; BE-NEXT: nop 2274; BE-NEXT: fmr f1, f15 2275; BE-NEXT: std r3, 440(r1) 2276; BE-NEXT: bl lrintf 2277; BE-NEXT: nop 2278; BE-NEXT: fmr f1, f16 2279; BE-NEXT: std r3, 432(r1) 2280; BE-NEXT: bl lrintf 2281; BE-NEXT: nop 2282; BE-NEXT: fmr f1, f17 2283; BE-NEXT: std r3, 456(r1) 2284; BE-NEXT: bl lrintf 2285; BE-NEXT: nop 2286; BE-NEXT: fmr f1, f18 2287; BE-NEXT: std r3, 448(r1) 2288; BE-NEXT: bl lrintf 2289; BE-NEXT: nop 2290; BE-NEXT: lfs f1, 132(r1) # 4-byte Folded Reload 2291; BE-NEXT: std r3, 472(r1) 2292; BE-NEXT: bl lrintf 2293; BE-NEXT: nop 2294; BE-NEXT: lfs f1, 148(r1) # 4-byte Folded Reload 2295; BE-NEXT: std r3, 464(r1) 2296; BE-NEXT: bl lrintf 2297; BE-NEXT: nop 2298; BE-NEXT: lfs f1, 164(r1) # 4-byte Folded Reload 2299; BE-NEXT: std r3, 488(r1) 2300; BE-NEXT: bl lrintf 2301; BE-NEXT: nop 2302; BE-NEXT: lfs f1, 180(r1) # 4-byte Folded Reload 2303; BE-NEXT: std r3, 480(r1) 2304; BE-NEXT: bl lrintf 2305; BE-NEXT: nop 2306; BE-NEXT: lfs f1, 196(r1) # 4-byte Folded Reload 2307; BE-NEXT: std r3, 504(r1) 2308; BE-NEXT: bl lrintf 2309; BE-NEXT: nop 2310; BE-NEXT: lfs f1, 212(r1) # 4-byte Folded Reload 2311; BE-NEXT: std r3, 496(r1) 2312; BE-NEXT: bl lrintf 2313; BE-NEXT: nop 2314; BE-NEXT: lfs f1, 228(r1) # 4-byte Folded Reload 2315; BE-NEXT: std r3, 520(r1) 2316; BE-NEXT: bl lrintf 2317; BE-NEXT: nop 2318; BE-NEXT: lfs f1, 244(r1) # 4-byte Folded Reload 2319; BE-NEXT: std r3, 512(r1) 2320; BE-NEXT: bl lrintf 2321; BE-NEXT: nop 2322; BE-NEXT: lfs f1, 260(r1) # 4-byte Folded Reload 2323; BE-NEXT: std r3, 536(r1) 2324; BE-NEXT: bl lrintf 2325; BE-NEXT: nop 2326; BE-NEXT: lfs f1, 276(r1) # 4-byte Folded Reload 2327; BE-NEXT: std r3, 528(r1) 2328; BE-NEXT: bl lrintf 2329; BE-NEXT: nop 2330; BE-NEXT: lfs f1, 292(r1) # 4-byte Folded Reload 2331; BE-NEXT: std r3, 552(r1) 2332; BE-NEXT: bl lrintf 2333; BE-NEXT: nop 2334; BE-NEXT: lfs f1, 312(r1) # 4-byte Folded Reload 2335; BE-NEXT: std r3, 544(r1) 2336; BE-NEXT: bl lrintf 2337; BE-NEXT: nop 2338; BE-NEXT: lfs f1, 316(r1) # 4-byte Folded Reload 2339; BE-NEXT: std r3, 568(r1) 2340; BE-NEXT: bl lrintf 2341; BE-NEXT: nop 2342; BE-NEXT: std r3, 560(r1) 2343; BE-NEXT: addi r3, r1, 320 2344; BE-NEXT: lxvd2x vs0, 0, r3 2345; BE-NEXT: addi r3, r1, 336 2346; BE-NEXT: lxvd2x vs1, 0, r3 2347; BE-NEXT: addi r3, r1, 352 2348; BE-NEXT: lxvd2x vs2, 0, r3 2349; BE-NEXT: addi r3, r1, 368 2350; BE-NEXT: lxvd2x vs3, 0, r3 2351; BE-NEXT: addi r3, r1, 384 2352; BE-NEXT: lxvd2x vs4, 0, r3 2353; BE-NEXT: addi r3, r1, 400 2354; BE-NEXT: lxvd2x vs5, 0, r3 2355; BE-NEXT: addi r3, r1, 416 2356; BE-NEXT: lxvd2x vs6, 0, r3 2357; BE-NEXT: addi r3, r1, 432 2358; BE-NEXT: lxvd2x vs7, 0, r3 2359; BE-NEXT: addi r3, r1, 448 2360; BE-NEXT: lxvd2x vs8, 0, r3 2361; BE-NEXT: addi r3, r1, 464 2362; BE-NEXT: lxvd2x vs9, 0, r3 2363; BE-NEXT: addi r3, r1, 480 2364; BE-NEXT: lxvd2x vs10, 0, r3 2365; BE-NEXT: addi r3, r1, 496 2366; BE-NEXT: lxvd2x vs11, 0, r3 2367; BE-NEXT: addi r3, r1, 512 2368; BE-NEXT: lxvd2x vs12, 0, r3 2369; BE-NEXT: addi r3, r1, 528 2370; BE-NEXT: lxvd2x vs13, 0, r3 2371; BE-NEXT: addi r3, r1, 544 2372; BE-NEXT: lxvd2x v2, 0, r3 2373; BE-NEXT: addi r3, r1, 560 2374; BE-NEXT: lxvd2x v3, 0, r3 2375; BE-NEXT: li r3, 240 2376; BE-NEXT: stxvd2x v3, r30, r3 2377; BE-NEXT: li r3, 224 2378; BE-NEXT: stxvd2x v2, r30, r3 2379; BE-NEXT: li r3, 208 2380; BE-NEXT: stxvd2x vs13, r30, r3 2381; BE-NEXT: li r3, 192 2382; BE-NEXT: stxvd2x vs12, r30, r3 2383; BE-NEXT: li r3, 176 2384; BE-NEXT: stxvd2x vs11, r30, r3 2385; BE-NEXT: li r3, 160 2386; BE-NEXT: stxvd2x vs10, r30, r3 2387; BE-NEXT: li r3, 144 2388; BE-NEXT: stxvd2x vs9, r30, r3 2389; BE-NEXT: li r3, 128 2390; BE-NEXT: stxvd2x vs8, r30, r3 2391; BE-NEXT: li r3, 112 2392; BE-NEXT: stxvd2x vs7, r30, r3 2393; BE-NEXT: li r3, 96 2394; BE-NEXT: stxvd2x vs6, r30, r3 2395; BE-NEXT: li r3, 80 2396; BE-NEXT: stxvd2x vs5, r30, r3 2397; BE-NEXT: li r3, 64 2398; BE-NEXT: stxvd2x vs4, r30, r3 2399; BE-NEXT: li r3, 48 2400; BE-NEXT: stxvd2x vs3, r30, r3 2401; BE-NEXT: li r3, 32 2402; BE-NEXT: stxvd2x vs2, r30, r3 2403; BE-NEXT: li r3, 16 2404; BE-NEXT: stxvd2x vs1, r30, r3 2405; BE-NEXT: stxvd2x vs0, 0, r30 2406; BE-NEXT: lfd f31, 856(r1) # 8-byte Folded Reload 2407; BE-NEXT: lfd f30, 848(r1) # 8-byte Folded Reload 2408; BE-NEXT: lfd f29, 840(r1) # 8-byte Folded Reload 2409; BE-NEXT: lfd f28, 832(r1) # 8-byte Folded Reload 2410; BE-NEXT: lfd f27, 824(r1) # 8-byte Folded Reload 2411; BE-NEXT: lfd f26, 816(r1) # 8-byte Folded Reload 2412; BE-NEXT: lfd f25, 808(r1) # 8-byte Folded Reload 2413; BE-NEXT: lfd f24, 800(r1) # 8-byte Folded Reload 2414; BE-NEXT: lfd f23, 792(r1) # 8-byte Folded Reload 2415; BE-NEXT: lfd f22, 784(r1) # 8-byte Folded Reload 2416; BE-NEXT: lfd f21, 776(r1) # 8-byte Folded Reload 2417; BE-NEXT: lfd f20, 768(r1) # 8-byte Folded Reload 2418; BE-NEXT: lfd f19, 760(r1) # 8-byte Folded Reload 2419; BE-NEXT: lfd f18, 752(r1) # 8-byte Folded Reload 2420; BE-NEXT: lfd f17, 744(r1) # 8-byte Folded Reload 2421; BE-NEXT: lfd f16, 736(r1) # 8-byte Folded Reload 2422; BE-NEXT: lfd f15, 728(r1) # 8-byte Folded Reload 2423; BE-NEXT: lfd f14, 720(r1) # 8-byte Folded Reload 2424; BE-NEXT: ld r31, 712(r1) # 8-byte Folded Reload 2425; BE-NEXT: ld r30, 704(r1) # 8-byte Folded Reload 2426; BE-NEXT: ld r29, 696(r1) # 8-byte Folded Reload 2427; BE-NEXT: ld r28, 688(r1) # 8-byte Folded Reload 2428; BE-NEXT: ld r27, 680(r1) # 8-byte Folded Reload 2429; BE-NEXT: ld r26, 672(r1) # 8-byte Folded Reload 2430; BE-NEXT: ld r25, 664(r1) # 8-byte Folded Reload 2431; BE-NEXT: ld r24, 656(r1) # 8-byte Folded Reload 2432; BE-NEXT: ld r23, 648(r1) # 8-byte Folded Reload 2433; BE-NEXT: ld r22, 640(r1) # 8-byte Folded Reload 2434; BE-NEXT: ld r21, 632(r1) # 8-byte Folded Reload 2435; BE-NEXT: ld r20, 624(r1) # 8-byte Folded Reload 2436; BE-NEXT: ld r19, 616(r1) # 8-byte Folded Reload 2437; BE-NEXT: ld r18, 608(r1) # 8-byte Folded Reload 2438; BE-NEXT: ld r17, 600(r1) # 8-byte Folded Reload 2439; BE-NEXT: ld r16, 592(r1) # 8-byte Folded Reload 2440; BE-NEXT: ld r15, 584(r1) # 8-byte Folded Reload 2441; BE-NEXT: ld r14, 576(r1) # 8-byte Folded Reload 2442; BE-NEXT: addi r1, r1, 864 2443; BE-NEXT: ld r0, 16(r1) 2444; BE-NEXT: mtlr r0 2445; BE-NEXT: blr 2446; 2447; CHECK-LABEL: lrint_v32i64_v32f16: 2448; CHECK: # %bb.0: 2449; CHECK-NEXT: mflr r0 2450; CHECK-NEXT: stdu r1, -688(r1) 2451; CHECK-NEXT: std r0, 704(r1) 2452; CHECK-NEXT: .cfi_def_cfa_offset 688 2453; CHECK-NEXT: .cfi_offset lr, 16 2454; CHECK-NEXT: .cfi_offset r14, -288 2455; CHECK-NEXT: .cfi_offset r15, -280 2456; CHECK-NEXT: .cfi_offset r16, -272 2457; CHECK-NEXT: .cfi_offset r17, -264 2458; CHECK-NEXT: .cfi_offset r18, -256 2459; CHECK-NEXT: .cfi_offset r19, -248 2460; CHECK-NEXT: .cfi_offset r20, -240 2461; CHECK-NEXT: .cfi_offset r21, -232 2462; CHECK-NEXT: .cfi_offset r22, -224 2463; CHECK-NEXT: .cfi_offset r23, -216 2464; CHECK-NEXT: .cfi_offset r24, -208 2465; CHECK-NEXT: .cfi_offset r25, -200 2466; CHECK-NEXT: .cfi_offset r26, -192 2467; CHECK-NEXT: .cfi_offset r27, -184 2468; CHECK-NEXT: .cfi_offset r28, -176 2469; CHECK-NEXT: .cfi_offset r29, -168 2470; CHECK-NEXT: .cfi_offset r30, -160 2471; CHECK-NEXT: .cfi_offset r31, -152 2472; CHECK-NEXT: .cfi_offset f14, -144 2473; CHECK-NEXT: .cfi_offset f15, -136 2474; CHECK-NEXT: .cfi_offset f16, -128 2475; CHECK-NEXT: .cfi_offset f17, -120 2476; CHECK-NEXT: .cfi_offset f18, -112 2477; CHECK-NEXT: .cfi_offset f19, -104 2478; CHECK-NEXT: .cfi_offset f20, -96 2479; CHECK-NEXT: .cfi_offset f21, -88 2480; CHECK-NEXT: .cfi_offset f22, -80 2481; CHECK-NEXT: .cfi_offset f23, -72 2482; CHECK-NEXT: .cfi_offset f24, -64 2483; CHECK-NEXT: .cfi_offset f25, -56 2484; CHECK-NEXT: .cfi_offset f26, -48 2485; CHECK-NEXT: .cfi_offset f27, -40 2486; CHECK-NEXT: .cfi_offset f28, -32 2487; CHECK-NEXT: .cfi_offset f29, -24 2488; CHECK-NEXT: .cfi_offset f30, -16 2489; CHECK-NEXT: .cfi_offset f31, -8 2490; CHECK-NEXT: .cfi_offset v20, -480 2491; CHECK-NEXT: .cfi_offset v21, -464 2492; CHECK-NEXT: .cfi_offset v22, -448 2493; CHECK-NEXT: .cfi_offset v23, -432 2494; CHECK-NEXT: .cfi_offset v24, -416 2495; CHECK-NEXT: .cfi_offset v25, -400 2496; CHECK-NEXT: .cfi_offset v26, -384 2497; CHECK-NEXT: .cfi_offset v27, -368 2498; CHECK-NEXT: .cfi_offset v28, -352 2499; CHECK-NEXT: .cfi_offset v29, -336 2500; CHECK-NEXT: .cfi_offset v30, -320 2501; CHECK-NEXT: .cfi_offset v31, -304 2502; CHECK-NEXT: li r4, 208 2503; CHECK-NEXT: std r14, 400(r1) # 8-byte Folded Spill 2504; CHECK-NEXT: std r15, 408(r1) # 8-byte Folded Spill 2505; CHECK-NEXT: std r16, 416(r1) # 8-byte Folded Spill 2506; CHECK-NEXT: std r17, 424(r1) # 8-byte Folded Spill 2507; CHECK-NEXT: std r18, 432(r1) # 8-byte Folded Spill 2508; CHECK-NEXT: std r19, 440(r1) # 8-byte Folded Spill 2509; CHECK-NEXT: std r20, 448(r1) # 8-byte Folded Spill 2510; CHECK-NEXT: stvx v20, r1, r4 # 16-byte Folded Spill 2511; CHECK-NEXT: li r4, 224 2512; CHECK-NEXT: std r21, 456(r1) # 8-byte Folded Spill 2513; CHECK-NEXT: std r22, 464(r1) # 8-byte Folded Spill 2514; CHECK-NEXT: std r23, 472(r1) # 8-byte Folded Spill 2515; CHECK-NEXT: std r24, 480(r1) # 8-byte Folded Spill 2516; CHECK-NEXT: std r25, 488(r1) # 8-byte Folded Spill 2517; CHECK-NEXT: std r26, 496(r1) # 8-byte Folded Spill 2518; CHECK-NEXT: stvx v21, r1, r4 # 16-byte Folded Spill 2519; CHECK-NEXT: li r4, 240 2520; CHECK-NEXT: std r27, 504(r1) # 8-byte Folded Spill 2521; CHECK-NEXT: std r28, 512(r1) # 8-byte Folded Spill 2522; CHECK-NEXT: std r29, 520(r1) # 8-byte Folded Spill 2523; CHECK-NEXT: std r30, 528(r1) # 8-byte Folded Spill 2524; CHECK-NEXT: mr r30, r3 2525; CHECK-NEXT: std r31, 536(r1) # 8-byte Folded Spill 2526; CHECK-NEXT: stvx v22, r1, r4 # 16-byte Folded Spill 2527; CHECK-NEXT: li r4, 256 2528; CHECK-NEXT: stfd f14, 544(r1) # 8-byte Folded Spill 2529; CHECK-NEXT: stfd f15, 552(r1) # 8-byte Folded Spill 2530; CHECK-NEXT: stfd f16, 560(r1) # 8-byte Folded Spill 2531; CHECK-NEXT: stfd f17, 568(r1) # 8-byte Folded Spill 2532; CHECK-NEXT: stfd f18, 576(r1) # 8-byte Folded Spill 2533; CHECK-NEXT: stfd f19, 584(r1) # 8-byte Folded Spill 2534; CHECK-NEXT: stvx v23, r1, r4 # 16-byte Folded Spill 2535; CHECK-NEXT: li r4, 272 2536; CHECK-NEXT: stfd f20, 592(r1) # 8-byte Folded Spill 2537; CHECK-NEXT: fmr f20, f2 2538; CHECK-NEXT: stfd f21, 600(r1) # 8-byte Folded Spill 2539; CHECK-NEXT: fmr f21, f3 2540; CHECK-NEXT: stfd f22, 608(r1) # 8-byte Folded Spill 2541; CHECK-NEXT: fmr f22, f4 2542; CHECK-NEXT: stvx v24, r1, r4 # 16-byte Folded Spill 2543; CHECK-NEXT: li r4, 288 2544; CHECK-NEXT: stfd f23, 616(r1) # 8-byte Folded Spill 2545; CHECK-NEXT: fmr f23, f5 2546; CHECK-NEXT: stfd f24, 624(r1) # 8-byte Folded Spill 2547; CHECK-NEXT: fmr f24, f6 2548; CHECK-NEXT: stfd f25, 632(r1) # 8-byte Folded Spill 2549; CHECK-NEXT: fmr f25, f7 2550; CHECK-NEXT: stvx v25, r1, r4 # 16-byte Folded Spill 2551; CHECK-NEXT: li r4, 304 2552; CHECK-NEXT: stfd f26, 640(r1) # 8-byte Folded Spill 2553; CHECK-NEXT: fmr f26, f8 2554; CHECK-NEXT: stfd f27, 648(r1) # 8-byte Folded Spill 2555; CHECK-NEXT: fmr f27, f9 2556; CHECK-NEXT: stfd f28, 656(r1) # 8-byte Folded Spill 2557; CHECK-NEXT: fmr f28, f10 2558; CHECK-NEXT: stvx v26, r1, r4 # 16-byte Folded Spill 2559; CHECK-NEXT: li r4, 320 2560; CHECK-NEXT: stfd f29, 664(r1) # 8-byte Folded Spill 2561; CHECK-NEXT: fmr f29, f11 2562; CHECK-NEXT: stfd f30, 672(r1) # 8-byte Folded Spill 2563; CHECK-NEXT: fmr f30, f12 2564; CHECK-NEXT: stfd f31, 680(r1) # 8-byte Folded Spill 2565; CHECK-NEXT: fmr f31, f13 2566; CHECK-NEXT: stvx v27, r1, r4 # 16-byte Folded Spill 2567; CHECK-NEXT: li r4, 336 2568; CHECK-NEXT: stvx v28, r1, r4 # 16-byte Folded Spill 2569; CHECK-NEXT: li r4, 352 2570; CHECK-NEXT: stvx v29, r1, r4 # 16-byte Folded Spill 2571; CHECK-NEXT: li r4, 368 2572; CHECK-NEXT: stvx v30, r1, r4 # 16-byte Folded Spill 2573; CHECK-NEXT: li r4, 384 2574; CHECK-NEXT: stvx v31, r1, r4 # 16-byte Folded Spill 2575; CHECK-NEXT: bl __gnu_f2h_ieee 2576; CHECK-NEXT: nop 2577; CHECK-NEXT: fmr f1, f20 2578; CHECK-NEXT: std r3, 176(r1) # 8-byte Folded Spill 2579; CHECK-NEXT: bl __gnu_f2h_ieee 2580; CHECK-NEXT: nop 2581; CHECK-NEXT: fmr f1, f21 2582; CHECK-NEXT: std r3, 160(r1) # 8-byte Folded Spill 2583; CHECK-NEXT: bl __gnu_f2h_ieee 2584; CHECK-NEXT: nop 2585; CHECK-NEXT: fmr f1, f22 2586; CHECK-NEXT: std r3, 144(r1) # 8-byte Folded Spill 2587; CHECK-NEXT: bl __gnu_f2h_ieee 2588; CHECK-NEXT: nop 2589; CHECK-NEXT: fmr f1, f23 2590; CHECK-NEXT: std r3, 128(r1) # 8-byte Folded Spill 2591; CHECK-NEXT: bl __gnu_f2h_ieee 2592; CHECK-NEXT: nop 2593; CHECK-NEXT: fmr f1, f24 2594; CHECK-NEXT: std r3, 120(r1) # 8-byte Folded Spill 2595; CHECK-NEXT: bl __gnu_f2h_ieee 2596; CHECK-NEXT: nop 2597; CHECK-NEXT: fmr f1, f25 2598; CHECK-NEXT: std r3, 112(r1) # 8-byte Folded Spill 2599; CHECK-NEXT: bl __gnu_f2h_ieee 2600; CHECK-NEXT: nop 2601; CHECK-NEXT: fmr f1, f26 2602; CHECK-NEXT: std r3, 104(r1) # 8-byte Folded Spill 2603; CHECK-NEXT: bl __gnu_f2h_ieee 2604; CHECK-NEXT: nop 2605; CHECK-NEXT: fmr f1, f27 2606; CHECK-NEXT: std r3, 96(r1) # 8-byte Folded Spill 2607; CHECK-NEXT: bl __gnu_f2h_ieee 2608; CHECK-NEXT: nop 2609; CHECK-NEXT: fmr f1, f28 2610; CHECK-NEXT: std r3, 88(r1) # 8-byte Folded Spill 2611; CHECK-NEXT: bl __gnu_f2h_ieee 2612; CHECK-NEXT: nop 2613; CHECK-NEXT: fmr f1, f29 2614; CHECK-NEXT: std r3, 80(r1) # 8-byte Folded Spill 2615; CHECK-NEXT: bl __gnu_f2h_ieee 2616; CHECK-NEXT: nop 2617; CHECK-NEXT: fmr f1, f30 2618; CHECK-NEXT: std r3, 72(r1) # 8-byte Folded Spill 2619; CHECK-NEXT: bl __gnu_f2h_ieee 2620; CHECK-NEXT: nop 2621; CHECK-NEXT: fmr f1, f31 2622; CHECK-NEXT: std r3, 64(r1) # 8-byte Folded Spill 2623; CHECK-NEXT: bl __gnu_f2h_ieee 2624; CHECK-NEXT: nop 2625; CHECK-NEXT: lfs f1, 832(r1) 2626; CHECK-NEXT: std r3, 56(r1) # 8-byte Folded Spill 2627; CHECK-NEXT: bl __gnu_f2h_ieee 2628; CHECK-NEXT: nop 2629; CHECK-NEXT: lfs f1, 840(r1) 2630; CHECK-NEXT: std r3, 48(r1) # 8-byte Folded Spill 2631; CHECK-NEXT: bl __gnu_f2h_ieee 2632; CHECK-NEXT: nop 2633; CHECK-NEXT: lfs f1, 848(r1) 2634; CHECK-NEXT: mr r15, r3 2635; CHECK-NEXT: bl __gnu_f2h_ieee 2636; CHECK-NEXT: nop 2637; CHECK-NEXT: lfs f1, 856(r1) 2638; CHECK-NEXT: mr r14, r3 2639; CHECK-NEXT: bl __gnu_f2h_ieee 2640; CHECK-NEXT: nop 2641; CHECK-NEXT: lfs f1, 864(r1) 2642; CHECK-NEXT: mr r31, r3 2643; CHECK-NEXT: bl __gnu_f2h_ieee 2644; CHECK-NEXT: nop 2645; CHECK-NEXT: lfs f1, 872(r1) 2646; CHECK-NEXT: mr r29, r3 2647; CHECK-NEXT: bl __gnu_f2h_ieee 2648; CHECK-NEXT: nop 2649; CHECK-NEXT: lfs f1, 880(r1) 2650; CHECK-NEXT: mr r28, r3 2651; CHECK-NEXT: bl __gnu_f2h_ieee 2652; CHECK-NEXT: nop 2653; CHECK-NEXT: lfs f1, 888(r1) 2654; CHECK-NEXT: mr r27, r3 2655; CHECK-NEXT: bl __gnu_f2h_ieee 2656; CHECK-NEXT: nop 2657; CHECK-NEXT: lfs f1, 896(r1) 2658; CHECK-NEXT: mr r26, r3 2659; CHECK-NEXT: bl __gnu_f2h_ieee 2660; CHECK-NEXT: nop 2661; CHECK-NEXT: lfs f1, 904(r1) 2662; CHECK-NEXT: mr r25, r3 2663; CHECK-NEXT: bl __gnu_f2h_ieee 2664; CHECK-NEXT: nop 2665; CHECK-NEXT: lfs f1, 912(r1) 2666; CHECK-NEXT: mr r24, r3 2667; CHECK-NEXT: bl __gnu_f2h_ieee 2668; CHECK-NEXT: nop 2669; CHECK-NEXT: lfs f1, 920(r1) 2670; CHECK-NEXT: mr r23, r3 2671; CHECK-NEXT: bl __gnu_f2h_ieee 2672; CHECK-NEXT: nop 2673; CHECK-NEXT: lfs f1, 928(r1) 2674; CHECK-NEXT: mr r22, r3 2675; CHECK-NEXT: bl __gnu_f2h_ieee 2676; CHECK-NEXT: nop 2677; CHECK-NEXT: lfs f1, 936(r1) 2678; CHECK-NEXT: mr r21, r3 2679; CHECK-NEXT: bl __gnu_f2h_ieee 2680; CHECK-NEXT: nop 2681; CHECK-NEXT: lfs f1, 944(r1) 2682; CHECK-NEXT: mr r20, r3 2683; CHECK-NEXT: bl __gnu_f2h_ieee 2684; CHECK-NEXT: nop 2685; CHECK-NEXT: lfs f1, 952(r1) 2686; CHECK-NEXT: mr r19, r3 2687; CHECK-NEXT: bl __gnu_f2h_ieee 2688; CHECK-NEXT: nop 2689; CHECK-NEXT: lfs f1, 960(r1) 2690; CHECK-NEXT: mr r18, r3 2691; CHECK-NEXT: bl __gnu_f2h_ieee 2692; CHECK-NEXT: nop 2693; CHECK-NEXT: lfs f1, 968(r1) 2694; CHECK-NEXT: mr r17, r3 2695; CHECK-NEXT: bl __gnu_f2h_ieee 2696; CHECK-NEXT: nop 2697; CHECK-NEXT: lfs f1, 976(r1) 2698; CHECK-NEXT: mr r16, r3 2699; CHECK-NEXT: bl __gnu_f2h_ieee 2700; CHECK-NEXT: nop 2701; CHECK-NEXT: clrldi r3, r3, 48 2702; CHECK-NEXT: bl __gnu_h2f_ieee 2703; CHECK-NEXT: nop 2704; CHECK-NEXT: li r3, 204 2705; CHECK-NEXT: stxsspx f1, r1, r3 # 4-byte Folded Spill 2706; CHECK-NEXT: clrldi r3, r16, 48 2707; CHECK-NEXT: bl __gnu_h2f_ieee 2708; CHECK-NEXT: nop 2709; CHECK-NEXT: li r3, 200 2710; CHECK-NEXT: stxsspx f1, r1, r3 # 4-byte Folded Spill 2711; CHECK-NEXT: clrldi r3, r17, 48 2712; CHECK-NEXT: bl __gnu_h2f_ieee 2713; CHECK-NEXT: nop 2714; CHECK-NEXT: clrldi r3, r18, 48 2715; CHECK-NEXT: fmr f29, f1 2716; CHECK-NEXT: bl __gnu_h2f_ieee 2717; CHECK-NEXT: nop 2718; CHECK-NEXT: clrldi r3, r19, 48 2719; CHECK-NEXT: fmr f28, f1 2720; CHECK-NEXT: bl __gnu_h2f_ieee 2721; CHECK-NEXT: nop 2722; CHECK-NEXT: clrldi r3, r20, 48 2723; CHECK-NEXT: fmr f27, f1 2724; CHECK-NEXT: bl __gnu_h2f_ieee 2725; CHECK-NEXT: nop 2726; CHECK-NEXT: clrldi r3, r21, 48 2727; CHECK-NEXT: fmr f26, f1 2728; CHECK-NEXT: bl __gnu_h2f_ieee 2729; CHECK-NEXT: nop 2730; CHECK-NEXT: clrldi r3, r22, 48 2731; CHECK-NEXT: fmr f25, f1 2732; CHECK-NEXT: bl __gnu_h2f_ieee 2733; CHECK-NEXT: nop 2734; CHECK-NEXT: clrldi r3, r23, 48 2735; CHECK-NEXT: fmr f24, f1 2736; CHECK-NEXT: bl __gnu_h2f_ieee 2737; CHECK-NEXT: nop 2738; CHECK-NEXT: clrldi r3, r24, 48 2739; CHECK-NEXT: fmr f23, f1 2740; CHECK-NEXT: bl __gnu_h2f_ieee 2741; CHECK-NEXT: nop 2742; CHECK-NEXT: clrldi r3, r25, 48 2743; CHECK-NEXT: fmr f22, f1 2744; CHECK-NEXT: bl __gnu_h2f_ieee 2745; CHECK-NEXT: nop 2746; CHECK-NEXT: clrldi r3, r26, 48 2747; CHECK-NEXT: fmr f21, f1 2748; CHECK-NEXT: bl __gnu_h2f_ieee 2749; CHECK-NEXT: nop 2750; CHECK-NEXT: clrldi r3, r27, 48 2751; CHECK-NEXT: fmr f20, f1 2752; CHECK-NEXT: bl __gnu_h2f_ieee 2753; CHECK-NEXT: nop 2754; CHECK-NEXT: clrldi r3, r28, 48 2755; CHECK-NEXT: fmr f19, f1 2756; CHECK-NEXT: bl __gnu_h2f_ieee 2757; CHECK-NEXT: nop 2758; CHECK-NEXT: clrldi r3, r29, 48 2759; CHECK-NEXT: fmr f18, f1 2760; CHECK-NEXT: bl __gnu_h2f_ieee 2761; CHECK-NEXT: nop 2762; CHECK-NEXT: clrldi r3, r31, 48 2763; CHECK-NEXT: fmr f17, f1 2764; CHECK-NEXT: bl __gnu_h2f_ieee 2765; CHECK-NEXT: nop 2766; CHECK-NEXT: clrldi r3, r14, 48 2767; CHECK-NEXT: fmr f16, f1 2768; CHECK-NEXT: bl __gnu_h2f_ieee 2769; CHECK-NEXT: nop 2770; CHECK-NEXT: clrldi r3, r15, 48 2771; CHECK-NEXT: fmr f15, f1 2772; CHECK-NEXT: bl __gnu_h2f_ieee 2773; CHECK-NEXT: nop 2774; CHECK-NEXT: ld r3, 48(r1) # 8-byte Folded Reload 2775; CHECK-NEXT: fmr f14, f1 2776; CHECK-NEXT: clrldi r3, r3, 48 2777; CHECK-NEXT: bl __gnu_h2f_ieee 2778; CHECK-NEXT: nop 2779; CHECK-NEXT: ld r3, 56(r1) # 8-byte Folded Reload 2780; CHECK-NEXT: fmr f30, f1 2781; CHECK-NEXT: clrldi r3, r3, 48 2782; CHECK-NEXT: bl __gnu_h2f_ieee 2783; CHECK-NEXT: nop 2784; CHECK-NEXT: ld r3, 64(r1) # 8-byte Folded Reload 2785; CHECK-NEXT: xxlor v30, f1, f1 2786; CHECK-NEXT: clrldi r3, r3, 48 2787; CHECK-NEXT: bl __gnu_h2f_ieee 2788; CHECK-NEXT: nop 2789; CHECK-NEXT: ld r3, 72(r1) # 8-byte Folded Reload 2790; CHECK-NEXT: xxlor v29, f1, f1 2791; CHECK-NEXT: clrldi r3, r3, 48 2792; CHECK-NEXT: bl __gnu_h2f_ieee 2793; CHECK-NEXT: nop 2794; CHECK-NEXT: ld r3, 80(r1) # 8-byte Folded Reload 2795; CHECK-NEXT: xxlor v28, f1, f1 2796; CHECK-NEXT: clrldi r3, r3, 48 2797; CHECK-NEXT: bl __gnu_h2f_ieee 2798; CHECK-NEXT: nop 2799; CHECK-NEXT: ld r3, 88(r1) # 8-byte Folded Reload 2800; CHECK-NEXT: xxlor v27, f1, f1 2801; CHECK-NEXT: clrldi r3, r3, 48 2802; CHECK-NEXT: bl __gnu_h2f_ieee 2803; CHECK-NEXT: nop 2804; CHECK-NEXT: ld r3, 96(r1) # 8-byte Folded Reload 2805; CHECK-NEXT: xxlor v26, f1, f1 2806; CHECK-NEXT: clrldi r3, r3, 48 2807; CHECK-NEXT: bl __gnu_h2f_ieee 2808; CHECK-NEXT: nop 2809; CHECK-NEXT: ld r3, 104(r1) # 8-byte Folded Reload 2810; CHECK-NEXT: xxlor v25, f1, f1 2811; CHECK-NEXT: clrldi r3, r3, 48 2812; CHECK-NEXT: bl __gnu_h2f_ieee 2813; CHECK-NEXT: nop 2814; CHECK-NEXT: ld r3, 112(r1) # 8-byte Folded Reload 2815; CHECK-NEXT: xxlor v24, f1, f1 2816; CHECK-NEXT: clrldi r3, r3, 48 2817; CHECK-NEXT: bl __gnu_h2f_ieee 2818; CHECK-NEXT: nop 2819; CHECK-NEXT: ld r3, 120(r1) # 8-byte Folded Reload 2820; CHECK-NEXT: xxlor v23, f1, f1 2821; CHECK-NEXT: clrldi r3, r3, 48 2822; CHECK-NEXT: bl __gnu_h2f_ieee 2823; CHECK-NEXT: nop 2824; CHECK-NEXT: ld r3, 128(r1) # 8-byte Folded Reload 2825; CHECK-NEXT: xxlor v22, f1, f1 2826; CHECK-NEXT: clrldi r3, r3, 48 2827; CHECK-NEXT: bl __gnu_h2f_ieee 2828; CHECK-NEXT: nop 2829; CHECK-NEXT: ld r3, 144(r1) # 8-byte Folded Reload 2830; CHECK-NEXT: xxlor v21, f1, f1 2831; CHECK-NEXT: clrldi r3, r3, 48 2832; CHECK-NEXT: bl __gnu_h2f_ieee 2833; CHECK-NEXT: nop 2834; CHECK-NEXT: ld r3, 160(r1) # 8-byte Folded Reload 2835; CHECK-NEXT: xxlor v20, f1, f1 2836; CHECK-NEXT: clrldi r3, r3, 48 2837; CHECK-NEXT: bl __gnu_h2f_ieee 2838; CHECK-NEXT: nop 2839; CHECK-NEXT: ld r3, 176(r1) # 8-byte Folded Reload 2840; CHECK-NEXT: fmr f31, f1 2841; CHECK-NEXT: clrldi r3, r3, 48 2842; CHECK-NEXT: bl __gnu_h2f_ieee 2843; CHECK-NEXT: nop 2844; CHECK-NEXT: bl lrintf 2845; CHECK-NEXT: nop 2846; CHECK-NEXT: fmr f1, f31 2847; CHECK-NEXT: mtvsrd v31, r3 2848; CHECK-NEXT: bl lrintf 2849; CHECK-NEXT: nop 2850; CHECK-NEXT: mtfprd f0, r3 2851; CHECK-NEXT: li r3, 176 2852; CHECK-NEXT: xxlor f1, v20, v20 2853; CHECK-NEXT: xxmrghd vs0, vs0, v31 2854; CHECK-NEXT: stxvd2x vs0, r1, r3 # 16-byte Folded Spill 2855; CHECK-NEXT: bl lrintf 2856; CHECK-NEXT: nop 2857; CHECK-NEXT: xxlor f1, v21, v21 2858; CHECK-NEXT: mtvsrd v31, r3 2859; CHECK-NEXT: bl lrintf 2860; CHECK-NEXT: nop 2861; CHECK-NEXT: mtfprd f0, r3 2862; CHECK-NEXT: li r3, 160 2863; CHECK-NEXT: xxlor f1, v22, v22 2864; CHECK-NEXT: xxmrghd vs0, vs0, v31 2865; CHECK-NEXT: stxvd2x vs0, r1, r3 # 16-byte Folded Spill 2866; CHECK-NEXT: bl lrintf 2867; CHECK-NEXT: nop 2868; CHECK-NEXT: xxlor f1, v23, v23 2869; CHECK-NEXT: mtvsrd v31, r3 2870; CHECK-NEXT: bl lrintf 2871; CHECK-NEXT: nop 2872; CHECK-NEXT: mtfprd f0, r3 2873; CHECK-NEXT: li r3, 144 2874; CHECK-NEXT: xxlor f1, v24, v24 2875; CHECK-NEXT: xxmrghd vs0, vs0, v31 2876; CHECK-NEXT: stxvd2x vs0, r1, r3 # 16-byte Folded Spill 2877; CHECK-NEXT: bl lrintf 2878; CHECK-NEXT: nop 2879; CHECK-NEXT: xxlor f1, v25, v25 2880; CHECK-NEXT: mtvsrd v31, r3 2881; CHECK-NEXT: bl lrintf 2882; CHECK-NEXT: nop 2883; CHECK-NEXT: mtfprd f0, r3 2884; CHECK-NEXT: li r3, 128 2885; CHECK-NEXT: xxlor f1, v26, v26 2886; CHECK-NEXT: xxmrghd vs0, vs0, v31 2887; CHECK-NEXT: stxvd2x vs0, r1, r3 # 16-byte Folded Spill 2888; CHECK-NEXT: bl lrintf 2889; CHECK-NEXT: nop 2890; CHECK-NEXT: xxlor f1, v27, v27 2891; CHECK-NEXT: mtvsrd v31, r3 2892; CHECK-NEXT: bl lrintf 2893; CHECK-NEXT: nop 2894; CHECK-NEXT: mtfprd f0, r3 2895; CHECK-NEXT: xxlor f1, v28, v28 2896; CHECK-NEXT: xxmrghd v27, vs0, v31 2897; CHECK-NEXT: bl lrintf 2898; CHECK-NEXT: nop 2899; CHECK-NEXT: xxlor f1, v29, v29 2900; CHECK-NEXT: mtvsrd v31, r3 2901; CHECK-NEXT: bl lrintf 2902; CHECK-NEXT: nop 2903; CHECK-NEXT: mtfprd f0, r3 2904; CHECK-NEXT: xxlor f1, v30, v30 2905; CHECK-NEXT: xxmrghd v29, vs0, v31 2906; CHECK-NEXT: bl lrintf 2907; CHECK-NEXT: nop 2908; CHECK-NEXT: fmr f1, f30 2909; CHECK-NEXT: mtvsrd v31, r3 2910; CHECK-NEXT: bl lrintf 2911; CHECK-NEXT: nop 2912; CHECK-NEXT: fmr f1, f14 2913; CHECK-NEXT: mtfprd f0, r3 2914; CHECK-NEXT: xxmrghd v31, vs0, v31 2915; CHECK-NEXT: bl lrintf 2916; CHECK-NEXT: nop 2917; CHECK-NEXT: fmr f1, f15 2918; CHECK-NEXT: mtvsrd v30, r3 2919; CHECK-NEXT: bl lrintf 2920; CHECK-NEXT: nop 2921; CHECK-NEXT: fmr f1, f16 2922; CHECK-NEXT: mtfprd f0, r3 2923; CHECK-NEXT: xxmrghd v30, vs0, v30 2924; CHECK-NEXT: bl lrintf 2925; CHECK-NEXT: nop 2926; CHECK-NEXT: fmr f1, f17 2927; CHECK-NEXT: mtvsrd v28, r3 2928; CHECK-NEXT: bl lrintf 2929; CHECK-NEXT: nop 2930; CHECK-NEXT: fmr f1, f18 2931; CHECK-NEXT: mtfprd f0, r3 2932; CHECK-NEXT: xxmrghd v28, vs0, v28 2933; CHECK-NEXT: bl lrintf 2934; CHECK-NEXT: nop 2935; CHECK-NEXT: fmr f1, f19 2936; CHECK-NEXT: mtvsrd v26, r3 2937; CHECK-NEXT: bl lrintf 2938; CHECK-NEXT: nop 2939; CHECK-NEXT: fmr f1, f20 2940; CHECK-NEXT: mtfprd f0, r3 2941; CHECK-NEXT: xxmrghd v26, vs0, v26 2942; CHECK-NEXT: bl lrintf 2943; CHECK-NEXT: nop 2944; CHECK-NEXT: fmr f1, f21 2945; CHECK-NEXT: mtvsrd v24, r3 2946; CHECK-NEXT: bl lrintf 2947; CHECK-NEXT: nop 2948; CHECK-NEXT: fmr f1, f22 2949; CHECK-NEXT: mtfprd f0, r3 2950; CHECK-NEXT: xxmrghd v24, vs0, v24 2951; CHECK-NEXT: bl lrintf 2952; CHECK-NEXT: nop 2953; CHECK-NEXT: fmr f1, f23 2954; CHECK-NEXT: mtvsrd v22, r3 2955; CHECK-NEXT: bl lrintf 2956; CHECK-NEXT: nop 2957; CHECK-NEXT: fmr f1, f24 2958; CHECK-NEXT: mtfprd f0, r3 2959; CHECK-NEXT: xxmrghd v22, vs0, v22 2960; CHECK-NEXT: bl lrintf 2961; CHECK-NEXT: nop 2962; CHECK-NEXT: fmr f1, f25 2963; CHECK-NEXT: mtvsrd v20, r3 2964; CHECK-NEXT: bl lrintf 2965; CHECK-NEXT: nop 2966; CHECK-NEXT: fmr f1, f26 2967; CHECK-NEXT: mtfprd f0, r3 2968; CHECK-NEXT: xxmrghd v20, vs0, v20 2969; CHECK-NEXT: bl lrintf 2970; CHECK-NEXT: nop 2971; CHECK-NEXT: fmr f1, f27 2972; CHECK-NEXT: mtvsrd v21, r3 2973; CHECK-NEXT: bl lrintf 2974; CHECK-NEXT: nop 2975; CHECK-NEXT: fmr f1, f28 2976; CHECK-NEXT: mtfprd f0, r3 2977; CHECK-NEXT: xxmrghd v21, vs0, v21 2978; CHECK-NEXT: bl lrintf 2979; CHECK-NEXT: nop 2980; CHECK-NEXT: fmr f1, f29 2981; CHECK-NEXT: mtvsrd v23, r3 2982; CHECK-NEXT: bl lrintf 2983; CHECK-NEXT: nop 2984; CHECK-NEXT: mtfprd f0, r3 2985; CHECK-NEXT: li r3, 200 2986; CHECK-NEXT: lxsspx f1, r1, r3 # 4-byte Folded Reload 2987; CHECK-NEXT: xxmrghd v23, vs0, v23 2988; CHECK-NEXT: bl lrintf 2989; CHECK-NEXT: nop 2990; CHECK-NEXT: mtvsrd v25, r3 2991; CHECK-NEXT: li r3, 204 2992; CHECK-NEXT: lxsspx f1, r1, r3 # 4-byte Folded Reload 2993; CHECK-NEXT: bl lrintf 2994; CHECK-NEXT: nop 2995; CHECK-NEXT: mtfprd f0, r3 2996; CHECK-NEXT: li r3, 240 2997; CHECK-NEXT: xxswapd vs1, v23 2998; CHECK-NEXT: li r4, 128 2999; CHECK-NEXT: xxswapd vs2, v21 3000; CHECK-NEXT: xxswapd vs3, v31 3001; CHECK-NEXT: xxmrghd v2, vs0, v25 3002; CHECK-NEXT: xxswapd vs0, v2 3003; CHECK-NEXT: stxvd2x vs0, r30, r3 3004; CHECK-NEXT: li r3, 224 3005; CHECK-NEXT: stxvd2x vs1, r30, r3 3006; CHECK-NEXT: li r3, 208 3007; CHECK-NEXT: stxvd2x vs2, r30, r3 3008; CHECK-NEXT: li r3, 192 3009; CHECK-NEXT: xxswapd vs0, v20 3010; CHECK-NEXT: stxvd2x vs0, r30, r3 3011; CHECK-NEXT: li r3, 176 3012; CHECK-NEXT: xxswapd vs1, v22 3013; CHECK-NEXT: stxvd2x vs1, r30, r3 3014; CHECK-NEXT: li r3, 160 3015; CHECK-NEXT: xxswapd vs2, v28 3016; CHECK-NEXT: xxswapd vs0, v24 3017; CHECK-NEXT: stxvd2x vs0, r30, r3 3018; CHECK-NEXT: li r3, 144 3019; CHECK-NEXT: xxswapd vs1, v26 3020; CHECK-NEXT: stxvd2x vs1, r30, r3 3021; CHECK-NEXT: li r3, 128 3022; CHECK-NEXT: stxvd2x vs2, r30, r3 3023; CHECK-NEXT: li r3, 112 3024; CHECK-NEXT: xxswapd vs0, v30 3025; CHECK-NEXT: stxvd2x vs0, r30, r3 3026; CHECK-NEXT: li r3, 96 3027; CHECK-NEXT: stxvd2x vs3, r30, r3 3028; CHECK-NEXT: li r3, 80 3029; CHECK-NEXT: lxvd2x vs2, r1, r4 # 16-byte Folded Reload 3030; CHECK-NEXT: li r4, 144 3031; CHECK-NEXT: xxswapd vs1, v29 3032; CHECK-NEXT: stxvd2x vs1, r30, r3 3033; CHECK-NEXT: li r3, 64 3034; CHECK-NEXT: lxvd2x vs1, r1, r4 # 16-byte Folded Reload 3035; CHECK-NEXT: li r4, 160 3036; CHECK-NEXT: lxvd2x vs3, r1, r4 # 16-byte Folded Reload 3037; CHECK-NEXT: li r4, 176 3038; CHECK-NEXT: lxvd2x vs4, r1, r4 # 16-byte Folded Reload 3039; CHECK-NEXT: xxswapd vs0, v27 3040; CHECK-NEXT: stxvd2x vs0, r30, r3 3041; CHECK-NEXT: li r3, 48 3042; CHECK-NEXT: xxswapd vs2, vs2 3043; CHECK-NEXT: stxvd2x vs2, r30, r3 3044; CHECK-NEXT: li r3, 32 3045; CHECK-NEXT: xxswapd vs1, vs1 3046; CHECK-NEXT: stxvd2x vs1, r30, r3 3047; CHECK-NEXT: li r3, 16 3048; CHECK-NEXT: xxswapd vs3, vs3 3049; CHECK-NEXT: stxvd2x vs3, r30, r3 3050; CHECK-NEXT: li r3, 384 3051; CHECK-NEXT: xxswapd vs4, vs4 3052; CHECK-NEXT: stxvd2x vs4, 0, r30 3053; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 3054; CHECK-NEXT: li r3, 368 3055; CHECK-NEXT: lfd f31, 680(r1) # 8-byte Folded Reload 3056; CHECK-NEXT: lfd f30, 672(r1) # 8-byte Folded Reload 3057; CHECK-NEXT: lfd f29, 664(r1) # 8-byte Folded Reload 3058; CHECK-NEXT: lfd f28, 656(r1) # 8-byte Folded Reload 3059; CHECK-NEXT: lfd f27, 648(r1) # 8-byte Folded Reload 3060; CHECK-NEXT: lfd f26, 640(r1) # 8-byte Folded Reload 3061; CHECK-NEXT: lfd f25, 632(r1) # 8-byte Folded Reload 3062; CHECK-NEXT: lfd f24, 624(r1) # 8-byte Folded Reload 3063; CHECK-NEXT: lfd f23, 616(r1) # 8-byte Folded Reload 3064; CHECK-NEXT: lfd f22, 608(r1) # 8-byte Folded Reload 3065; CHECK-NEXT: lfd f21, 600(r1) # 8-byte Folded Reload 3066; CHECK-NEXT: lfd f20, 592(r1) # 8-byte Folded Reload 3067; CHECK-NEXT: lfd f19, 584(r1) # 8-byte Folded Reload 3068; CHECK-NEXT: lfd f18, 576(r1) # 8-byte Folded Reload 3069; CHECK-NEXT: lfd f17, 568(r1) # 8-byte Folded Reload 3070; CHECK-NEXT: lfd f16, 560(r1) # 8-byte Folded Reload 3071; CHECK-NEXT: lvx v30, r1, r3 # 16-byte Folded Reload 3072; CHECK-NEXT: li r3, 352 3073; CHECK-NEXT: lfd f15, 552(r1) # 8-byte Folded Reload 3074; CHECK-NEXT: lfd f14, 544(r1) # 8-byte Folded Reload 3075; CHECK-NEXT: ld r31, 536(r1) # 8-byte Folded Reload 3076; CHECK-NEXT: ld r30, 528(r1) # 8-byte Folded Reload 3077; CHECK-NEXT: ld r29, 520(r1) # 8-byte Folded Reload 3078; CHECK-NEXT: ld r28, 512(r1) # 8-byte Folded Reload 3079; CHECK-NEXT: lvx v29, r1, r3 # 16-byte Folded Reload 3080; CHECK-NEXT: li r3, 336 3081; CHECK-NEXT: ld r27, 504(r1) # 8-byte Folded Reload 3082; CHECK-NEXT: ld r26, 496(r1) # 8-byte Folded Reload 3083; CHECK-NEXT: ld r25, 488(r1) # 8-byte Folded Reload 3084; CHECK-NEXT: ld r24, 480(r1) # 8-byte Folded Reload 3085; CHECK-NEXT: ld r23, 472(r1) # 8-byte Folded Reload 3086; CHECK-NEXT: ld r22, 464(r1) # 8-byte Folded Reload 3087; CHECK-NEXT: lvx v28, r1, r3 # 16-byte Folded Reload 3088; CHECK-NEXT: li r3, 320 3089; CHECK-NEXT: ld r21, 456(r1) # 8-byte Folded Reload 3090; CHECK-NEXT: ld r20, 448(r1) # 8-byte Folded Reload 3091; CHECK-NEXT: ld r19, 440(r1) # 8-byte Folded Reload 3092; CHECK-NEXT: ld r18, 432(r1) # 8-byte Folded Reload 3093; CHECK-NEXT: ld r17, 424(r1) # 8-byte Folded Reload 3094; CHECK-NEXT: ld r16, 416(r1) # 8-byte Folded Reload 3095; CHECK-NEXT: lvx v27, r1, r3 # 16-byte Folded Reload 3096; CHECK-NEXT: li r3, 304 3097; CHECK-NEXT: ld r15, 408(r1) # 8-byte Folded Reload 3098; CHECK-NEXT: ld r14, 400(r1) # 8-byte Folded Reload 3099; CHECK-NEXT: lvx v26, r1, r3 # 16-byte Folded Reload 3100; CHECK-NEXT: li r3, 288 3101; CHECK-NEXT: lvx v25, r1, r3 # 16-byte Folded Reload 3102; CHECK-NEXT: li r3, 272 3103; CHECK-NEXT: lvx v24, r1, r3 # 16-byte Folded Reload 3104; CHECK-NEXT: li r3, 256 3105; CHECK-NEXT: lvx v23, r1, r3 # 16-byte Folded Reload 3106; CHECK-NEXT: li r3, 240 3107; CHECK-NEXT: lvx v22, r1, r3 # 16-byte Folded Reload 3108; CHECK-NEXT: li r3, 224 3109; CHECK-NEXT: lvx v21, r1, r3 # 16-byte Folded Reload 3110; CHECK-NEXT: li r3, 208 3111; CHECK-NEXT: lvx v20, r1, r3 # 16-byte Folded Reload 3112; CHECK-NEXT: addi r1, r1, 688 3113; CHECK-NEXT: ld r0, 16(r1) 3114; CHECK-NEXT: mtlr r0 3115; CHECK-NEXT: blr 3116; 3117; FAST-LABEL: lrint_v32i64_v32f16: 3118; FAST: # %bb.0: 3119; FAST-NEXT: mflr r0 3120; FAST-NEXT: stdu r1, -480(r1) 3121; FAST-NEXT: std r0, 496(r1) 3122; FAST-NEXT: .cfi_def_cfa_offset 480 3123; FAST-NEXT: .cfi_offset lr, 16 3124; FAST-NEXT: .cfi_offset r30, -160 3125; FAST-NEXT: .cfi_offset f14, -144 3126; FAST-NEXT: .cfi_offset f15, -136 3127; FAST-NEXT: .cfi_offset f16, -128 3128; FAST-NEXT: .cfi_offset f17, -120 3129; FAST-NEXT: .cfi_offset f18, -112 3130; FAST-NEXT: .cfi_offset f19, -104 3131; FAST-NEXT: .cfi_offset f20, -96 3132; FAST-NEXT: .cfi_offset f21, -88 3133; FAST-NEXT: .cfi_offset f22, -80 3134; FAST-NEXT: .cfi_offset f23, -72 3135; FAST-NEXT: .cfi_offset f24, -64 3136; FAST-NEXT: .cfi_offset f25, -56 3137; FAST-NEXT: .cfi_offset f26, -48 3138; FAST-NEXT: .cfi_offset f27, -40 3139; FAST-NEXT: .cfi_offset f28, -32 3140; FAST-NEXT: .cfi_offset f29, -24 3141; FAST-NEXT: .cfi_offset f30, -16 3142; FAST-NEXT: .cfi_offset f31, -8 3143; FAST-NEXT: .cfi_offset v20, -352 3144; FAST-NEXT: .cfi_offset v21, -336 3145; FAST-NEXT: .cfi_offset v22, -320 3146; FAST-NEXT: .cfi_offset v23, -304 3147; FAST-NEXT: .cfi_offset v24, -288 3148; FAST-NEXT: .cfi_offset v25, -272 3149; FAST-NEXT: .cfi_offset v26, -256 3150; FAST-NEXT: .cfi_offset v27, -240 3151; FAST-NEXT: .cfi_offset v28, -224 3152; FAST-NEXT: .cfi_offset v29, -208 3153; FAST-NEXT: .cfi_offset v30, -192 3154; FAST-NEXT: .cfi_offset v31, -176 3155; FAST-NEXT: li r4, 128 3156; FAST-NEXT: std r30, 320(r1) # 8-byte Folded Spill 3157; FAST-NEXT: stfd f14, 336(r1) # 8-byte Folded Spill 3158; FAST-NEXT: fmr f14, f5 3159; FAST-NEXT: stfd f15, 344(r1) # 8-byte Folded Spill 3160; FAST-NEXT: stfd f16, 352(r1) # 8-byte Folded Spill 3161; FAST-NEXT: fmr f16, f4 3162; FAST-NEXT: mr r30, r3 3163; FAST-NEXT: stvx v20, r1, r4 # 16-byte Folded Spill 3164; FAST-NEXT: li r4, 144 3165; FAST-NEXT: stfd f17, 360(r1) # 8-byte Folded Spill 3166; FAST-NEXT: stfd f18, 368(r1) # 8-byte Folded Spill 3167; FAST-NEXT: stfd f19, 376(r1) # 8-byte Folded Spill 3168; FAST-NEXT: stfd f20, 384(r1) # 8-byte Folded Spill 3169; FAST-NEXT: stfd f21, 392(r1) # 8-byte Folded Spill 3170; FAST-NEXT: stfd f22, 400(r1) # 8-byte Folded Spill 3171; FAST-NEXT: stvx v21, r1, r4 # 16-byte Folded Spill 3172; FAST-NEXT: li r4, 160 3173; FAST-NEXT: stfd f23, 408(r1) # 8-byte Folded Spill 3174; FAST-NEXT: stfd f24, 416(r1) # 8-byte Folded Spill 3175; FAST-NEXT: stfd f25, 424(r1) # 8-byte Folded Spill 3176; FAST-NEXT: stfd f26, 432(r1) # 8-byte Folded Spill 3177; FAST-NEXT: stfd f27, 440(r1) # 8-byte Folded Spill 3178; FAST-NEXT: stfd f28, 448(r1) # 8-byte Folded Spill 3179; FAST-NEXT: stvx v22, r1, r4 # 16-byte Folded Spill 3180; FAST-NEXT: li r4, 176 3181; FAST-NEXT: xxlor v22, f3, f3 3182; FAST-NEXT: stfd f29, 456(r1) # 8-byte Folded Spill 3183; FAST-NEXT: fmr f29, f9 3184; FAST-NEXT: stfd f30, 464(r1) # 8-byte Folded Spill 3185; FAST-NEXT: stfd f31, 472(r1) # 8-byte Folded Spill 3186; FAST-NEXT: stvx v23, r1, r4 # 16-byte Folded Spill 3187; FAST-NEXT: li r4, 192 3188; FAST-NEXT: xxlor v23, f2, f2 3189; FAST-NEXT: stvx v24, r1, r4 # 16-byte Folded Spill 3190; FAST-NEXT: li r4, 208 3191; FAST-NEXT: stvx v25, r1, r4 # 16-byte Folded Spill 3192; FAST-NEXT: li r4, 224 3193; FAST-NEXT: xxlor v25, f13, f13 3194; FAST-NEXT: stvx v26, r1, r4 # 16-byte Folded Spill 3195; FAST-NEXT: li r4, 240 3196; FAST-NEXT: xxlor v26, f12, f12 3197; FAST-NEXT: stvx v27, r1, r4 # 16-byte Folded Spill 3198; FAST-NEXT: li r4, 256 3199; FAST-NEXT: xxlor v27, f11, f11 3200; FAST-NEXT: stvx v28, r1, r4 # 16-byte Folded Spill 3201; FAST-NEXT: li r4, 272 3202; FAST-NEXT: xxlor v28, f10, f10 3203; FAST-NEXT: stvx v29, r1, r4 # 16-byte Folded Spill 3204; FAST-NEXT: li r4, 288 3205; FAST-NEXT: xxlor v29, f8, f8 3206; FAST-NEXT: stvx v30, r1, r4 # 16-byte Folded Spill 3207; FAST-NEXT: li r4, 304 3208; FAST-NEXT: xxlor v30, f7, f7 3209; FAST-NEXT: stvx v31, r1, r4 # 16-byte Folded Spill 3210; FAST-NEXT: li r4, 44 3211; FAST-NEXT: xxlor v31, f6, f6 3212; FAST-NEXT: stxsspx f1, r1, r4 # 4-byte Folded Spill 3213; FAST-NEXT: lfs f1, 768(r1) 3214; FAST-NEXT: bl __gnu_f2h_ieee 3215; FAST-NEXT: nop 3216; FAST-NEXT: clrldi r3, r3, 48 3217; FAST-NEXT: bl __gnu_h2f_ieee 3218; FAST-NEXT: nop 3219; FAST-NEXT: li r3, 120 3220; FAST-NEXT: stxsdx f1, r1, r3 # 8-byte Folded Spill 3221; FAST-NEXT: lfs f1, 760(r1) 3222; FAST-NEXT: bl __gnu_f2h_ieee 3223; FAST-NEXT: nop 3224; FAST-NEXT: clrldi r3, r3, 48 3225; FAST-NEXT: bl __gnu_h2f_ieee 3226; FAST-NEXT: nop 3227; FAST-NEXT: li r3, 112 3228; FAST-NEXT: stxsdx f1, r1, r3 # 8-byte Folded Spill 3229; FAST-NEXT: lfs f1, 752(r1) 3230; FAST-NEXT: bl __gnu_f2h_ieee 3231; FAST-NEXT: nop 3232; FAST-NEXT: clrldi r3, r3, 48 3233; FAST-NEXT: bl __gnu_h2f_ieee 3234; FAST-NEXT: nop 3235; FAST-NEXT: li r3, 104 3236; FAST-NEXT: stxsdx f1, r1, r3 # 8-byte Folded Spill 3237; FAST-NEXT: lfs f1, 744(r1) 3238; FAST-NEXT: bl __gnu_f2h_ieee 3239; FAST-NEXT: nop 3240; FAST-NEXT: clrldi r3, r3, 48 3241; FAST-NEXT: bl __gnu_h2f_ieee 3242; FAST-NEXT: nop 3243; FAST-NEXT: li r3, 96 3244; FAST-NEXT: stxsdx f1, r1, r3 # 8-byte Folded Spill 3245; FAST-NEXT: lfs f1, 736(r1) 3246; FAST-NEXT: bl __gnu_f2h_ieee 3247; FAST-NEXT: nop 3248; FAST-NEXT: clrldi r3, r3, 48 3249; FAST-NEXT: bl __gnu_h2f_ieee 3250; FAST-NEXT: nop 3251; FAST-NEXT: li r3, 88 3252; FAST-NEXT: stxsdx f1, r1, r3 # 8-byte Folded Spill 3253; FAST-NEXT: lfs f1, 728(r1) 3254; FAST-NEXT: bl __gnu_f2h_ieee 3255; FAST-NEXT: nop 3256; FAST-NEXT: clrldi r3, r3, 48 3257; FAST-NEXT: bl __gnu_h2f_ieee 3258; FAST-NEXT: nop 3259; FAST-NEXT: li r3, 80 3260; FAST-NEXT: stxsdx f1, r1, r3 # 8-byte Folded Spill 3261; FAST-NEXT: lfs f1, 720(r1) 3262; FAST-NEXT: bl __gnu_f2h_ieee 3263; FAST-NEXT: nop 3264; FAST-NEXT: clrldi r3, r3, 48 3265; FAST-NEXT: bl __gnu_h2f_ieee 3266; FAST-NEXT: nop 3267; FAST-NEXT: li r3, 72 3268; FAST-NEXT: stxsdx f1, r1, r3 # 8-byte Folded Spill 3269; FAST-NEXT: lfs f1, 712(r1) 3270; FAST-NEXT: bl __gnu_f2h_ieee 3271; FAST-NEXT: nop 3272; FAST-NEXT: clrldi r3, r3, 48 3273; FAST-NEXT: bl __gnu_h2f_ieee 3274; FAST-NEXT: nop 3275; FAST-NEXT: li r3, 64 3276; FAST-NEXT: stxsdx f1, r1, r3 # 8-byte Folded Spill 3277; FAST-NEXT: lfs f1, 704(r1) 3278; FAST-NEXT: bl __gnu_f2h_ieee 3279; FAST-NEXT: nop 3280; FAST-NEXT: clrldi r3, r3, 48 3281; FAST-NEXT: bl __gnu_h2f_ieee 3282; FAST-NEXT: nop 3283; FAST-NEXT: li r3, 56 3284; FAST-NEXT: stxsdx f1, r1, r3 # 8-byte Folded Spill 3285; FAST-NEXT: lfs f1, 696(r1) 3286; FAST-NEXT: bl __gnu_f2h_ieee 3287; FAST-NEXT: nop 3288; FAST-NEXT: clrldi r3, r3, 48 3289; FAST-NEXT: bl __gnu_h2f_ieee 3290; FAST-NEXT: nop 3291; FAST-NEXT: li r3, 48 3292; FAST-NEXT: stxsdx f1, r1, r3 # 8-byte Folded Spill 3293; FAST-NEXT: lfs f1, 688(r1) 3294; FAST-NEXT: bl __gnu_f2h_ieee 3295; FAST-NEXT: nop 3296; FAST-NEXT: clrldi r3, r3, 48 3297; FAST-NEXT: bl __gnu_h2f_ieee 3298; FAST-NEXT: nop 3299; FAST-NEXT: xxlor v21, f1, f1 3300; FAST-NEXT: lfs f1, 680(r1) 3301; FAST-NEXT: bl __gnu_f2h_ieee 3302; FAST-NEXT: nop 3303; FAST-NEXT: clrldi r3, r3, 48 3304; FAST-NEXT: bl __gnu_h2f_ieee 3305; FAST-NEXT: nop 3306; FAST-NEXT: xxlor v20, f1, f1 3307; FAST-NEXT: lfs f1, 672(r1) 3308; FAST-NEXT: bl __gnu_f2h_ieee 3309; FAST-NEXT: nop 3310; FAST-NEXT: clrldi r3, r3, 48 3311; FAST-NEXT: bl __gnu_h2f_ieee 3312; FAST-NEXT: nop 3313; FAST-NEXT: xxlor v24, f1, f1 3314; FAST-NEXT: lfs f1, 664(r1) 3315; FAST-NEXT: bl __gnu_f2h_ieee 3316; FAST-NEXT: nop 3317; FAST-NEXT: clrldi r3, r3, 48 3318; FAST-NEXT: bl __gnu_h2f_ieee 3319; FAST-NEXT: nop 3320; FAST-NEXT: fmr f31, f1 3321; FAST-NEXT: lfs f1, 656(r1) 3322; FAST-NEXT: bl __gnu_f2h_ieee 3323; FAST-NEXT: nop 3324; FAST-NEXT: clrldi r3, r3, 48 3325; FAST-NEXT: bl __gnu_h2f_ieee 3326; FAST-NEXT: nop 3327; FAST-NEXT: fmr f30, f1 3328; FAST-NEXT: lfs f1, 648(r1) 3329; FAST-NEXT: bl __gnu_f2h_ieee 3330; FAST-NEXT: nop 3331; FAST-NEXT: clrldi r3, r3, 48 3332; FAST-NEXT: bl __gnu_h2f_ieee 3333; FAST-NEXT: nop 3334; FAST-NEXT: fmr f28, f1 3335; FAST-NEXT: lfs f1, 640(r1) 3336; FAST-NEXT: bl __gnu_f2h_ieee 3337; FAST-NEXT: nop 3338; FAST-NEXT: clrldi r3, r3, 48 3339; FAST-NEXT: bl __gnu_h2f_ieee 3340; FAST-NEXT: nop 3341; FAST-NEXT: fmr f27, f1 3342; FAST-NEXT: lfs f1, 632(r1) 3343; FAST-NEXT: bl __gnu_f2h_ieee 3344; FAST-NEXT: nop 3345; FAST-NEXT: clrldi r3, r3, 48 3346; FAST-NEXT: bl __gnu_h2f_ieee 3347; FAST-NEXT: nop 3348; FAST-NEXT: fmr f26, f1 3349; FAST-NEXT: lfs f1, 624(r1) 3350; FAST-NEXT: bl __gnu_f2h_ieee 3351; FAST-NEXT: nop 3352; FAST-NEXT: clrldi r3, r3, 48 3353; FAST-NEXT: bl __gnu_h2f_ieee 3354; FAST-NEXT: nop 3355; FAST-NEXT: fmr f25, f1 3356; FAST-NEXT: xxlor f1, v25, v25 3357; FAST-NEXT: bl __gnu_f2h_ieee 3358; FAST-NEXT: nop 3359; FAST-NEXT: clrldi r3, r3, 48 3360; FAST-NEXT: bl __gnu_h2f_ieee 3361; FAST-NEXT: nop 3362; FAST-NEXT: fmr f24, f1 3363; FAST-NEXT: xxlor f1, v26, v26 3364; FAST-NEXT: bl __gnu_f2h_ieee 3365; FAST-NEXT: nop 3366; FAST-NEXT: clrldi r3, r3, 48 3367; FAST-NEXT: bl __gnu_h2f_ieee 3368; FAST-NEXT: nop 3369; FAST-NEXT: fmr f23, f1 3370; FAST-NEXT: xxlor f1, v27, v27 3371; FAST-NEXT: bl __gnu_f2h_ieee 3372; FAST-NEXT: nop 3373; FAST-NEXT: clrldi r3, r3, 48 3374; FAST-NEXT: bl __gnu_h2f_ieee 3375; FAST-NEXT: nop 3376; FAST-NEXT: fmr f22, f1 3377; FAST-NEXT: xxlor f1, v28, v28 3378; FAST-NEXT: bl __gnu_f2h_ieee 3379; FAST-NEXT: nop 3380; FAST-NEXT: clrldi r3, r3, 48 3381; FAST-NEXT: bl __gnu_h2f_ieee 3382; FAST-NEXT: nop 3383; FAST-NEXT: fmr f21, f1 3384; FAST-NEXT: fmr f1, f29 3385; FAST-NEXT: bl __gnu_f2h_ieee 3386; FAST-NEXT: nop 3387; FAST-NEXT: clrldi r3, r3, 48 3388; FAST-NEXT: bl __gnu_h2f_ieee 3389; FAST-NEXT: nop 3390; FAST-NEXT: fmr f20, f1 3391; FAST-NEXT: xxlor f1, v29, v29 3392; FAST-NEXT: bl __gnu_f2h_ieee 3393; FAST-NEXT: nop 3394; FAST-NEXT: clrldi r3, r3, 48 3395; FAST-NEXT: bl __gnu_h2f_ieee 3396; FAST-NEXT: nop 3397; FAST-NEXT: fmr f19, f1 3398; FAST-NEXT: xxlor f1, v30, v30 3399; FAST-NEXT: bl __gnu_f2h_ieee 3400; FAST-NEXT: nop 3401; FAST-NEXT: clrldi r3, r3, 48 3402; FAST-NEXT: bl __gnu_h2f_ieee 3403; FAST-NEXT: nop 3404; FAST-NEXT: fmr f18, f1 3405; FAST-NEXT: xxlor f1, v31, v31 3406; FAST-NEXT: bl __gnu_f2h_ieee 3407; FAST-NEXT: nop 3408; FAST-NEXT: clrldi r3, r3, 48 3409; FAST-NEXT: bl __gnu_h2f_ieee 3410; FAST-NEXT: nop 3411; FAST-NEXT: fmr f29, f1 3412; FAST-NEXT: fmr f1, f14 3413; FAST-NEXT: bl __gnu_f2h_ieee 3414; FAST-NEXT: nop 3415; FAST-NEXT: clrldi r3, r3, 48 3416; FAST-NEXT: bl __gnu_h2f_ieee 3417; FAST-NEXT: nop 3418; FAST-NEXT: fmr f14, f1 3419; FAST-NEXT: fmr f1, f16 3420; FAST-NEXT: bl __gnu_f2h_ieee 3421; FAST-NEXT: nop 3422; FAST-NEXT: clrldi r3, r3, 48 3423; FAST-NEXT: bl __gnu_h2f_ieee 3424; FAST-NEXT: nop 3425; FAST-NEXT: fmr f16, f1 3426; FAST-NEXT: xxlor f1, v22, v22 3427; FAST-NEXT: bl __gnu_f2h_ieee 3428; FAST-NEXT: nop 3429; FAST-NEXT: clrldi r3, r3, 48 3430; FAST-NEXT: bl __gnu_h2f_ieee 3431; FAST-NEXT: nop 3432; FAST-NEXT: fmr f17, f1 3433; FAST-NEXT: xxlor f1, v23, v23 3434; FAST-NEXT: bl __gnu_f2h_ieee 3435; FAST-NEXT: nop 3436; FAST-NEXT: clrldi r3, r3, 48 3437; FAST-NEXT: bl __gnu_h2f_ieee 3438; FAST-NEXT: nop 3439; FAST-NEXT: li r3, 44 3440; FAST-NEXT: fmr f15, f1 3441; FAST-NEXT: lxsspx f1, r1, r3 # 4-byte Folded Reload 3442; FAST-NEXT: bl __gnu_f2h_ieee 3443; FAST-NEXT: nop 3444; FAST-NEXT: clrldi r3, r3, 48 3445; FAST-NEXT: bl __gnu_h2f_ieee 3446; FAST-NEXT: nop 3447; FAST-NEXT: fctid f3, f15 3448; FAST-NEXT: fctid f4, f17 3449; FAST-NEXT: mffprd r3, f3 3450; FAST-NEXT: fctid f5, f16 3451; FAST-NEXT: fctid f6, f14 3452; FAST-NEXT: fctid f7, f18 3453; FAST-NEXT: fctid f8, f19 3454; FAST-NEXT: fctid f13, f1 3455; FAST-NEXT: fctid f9, f20 3456; FAST-NEXT: fctid f10, f22 3457; FAST-NEXT: fctid f11, f24 3458; FAST-NEXT: fctid f12, f25 3459; FAST-NEXT: fctid f2, f23 3460; FAST-NEXT: fctid f0, f21 3461; FAST-NEXT: mtvsrd v2, r3 3462; FAST-NEXT: mffprd r3, f4 3463; FAST-NEXT: mtvsrd v3, r3 3464; FAST-NEXT: mffprd r3, f5 3465; FAST-NEXT: mtfprd f5, r3 3466; FAST-NEXT: mffprd r3, f6 3467; FAST-NEXT: mtfprd f1, r3 3468; FAST-NEXT: mffprd r3, f7 3469; FAST-NEXT: mtfprd f6, r3 3470; FAST-NEXT: mffprd r3, f8 3471; FAST-NEXT: mtfprd f7, r3 3472; FAST-NEXT: mffprd r3, f9 3473; FAST-NEXT: mtfprd f3, r3 3474; FAST-NEXT: mffprd r3, f10 3475; FAST-NEXT: mtfprd f4, r3 3476; FAST-NEXT: mffprd r3, f11 3477; FAST-NEXT: fctid f11, f31 3478; FAST-NEXT: lfd f31, 56(r1) # 8-byte Folded Reload 3479; FAST-NEXT: mtfprd f8, r3 3480; FAST-NEXT: mffprd r3, f12 3481; FAST-NEXT: xxlor f12, v24, v24 3482; FAST-NEXT: fctid f31, f31 3483; FAST-NEXT: fctid f12, f12 3484; FAST-NEXT: mtfprd f9, r3 3485; FAST-NEXT: mffprd r3, f13 3486; FAST-NEXT: lfd f13, 48(r1) # 8-byte Folded Reload 3487; FAST-NEXT: mtfprd f10, r3 3488; FAST-NEXT: fctid f13, f13 3489; FAST-NEXT: xxmrghd v3, vs5, v3 3490; FAST-NEXT: fctid f5, f26 3491; FAST-NEXT: mffprd r3, f5 3492; FAST-NEXT: mtfprd f5, r3 3493; FAST-NEXT: xxmrghd v4, vs7, vs6 3494; FAST-NEXT: fctid f6, f27 3495; FAST-NEXT: fctid f7, f28 3496; FAST-NEXT: mffprd r3, f6 3497; FAST-NEXT: lfd f28, 96(r1) # 8-byte Folded Reload 3498; FAST-NEXT: fctid f28, f28 3499; FAST-NEXT: mtfprd f6, r3 3500; FAST-NEXT: mffprd r3, f7 3501; FAST-NEXT: mtfprd f7, r3 3502; FAST-NEXT: xxmrghd v2, v2, vs10 3503; FAST-NEXT: fctid f10, f30 3504; FAST-NEXT: mffprd r3, f10 3505; FAST-NEXT: lfd f30, 80(r1) # 8-byte Folded Reload 3506; FAST-NEXT: fctid f30, f30 3507; FAST-NEXT: mtfprd f10, r3 3508; FAST-NEXT: mffprd r3, f11 3509; FAST-NEXT: mtfprd f11, r3 3510; FAST-NEXT: mffprd r3, f12 3511; FAST-NEXT: mtfprd f12, r3 3512; FAST-NEXT: xxmrghd v5, vs12, vs11 3513; FAST-NEXT: xxlor f11, v20, v20 3514; FAST-NEXT: xxlor f12, v21, v21 3515; FAST-NEXT: fctid f11, f11 3516; FAST-NEXT: fctid f12, f12 3517; FAST-NEXT: mffprd r3, f11 3518; FAST-NEXT: mtfprd f11, r3 3519; FAST-NEXT: mffprd r3, f12 3520; FAST-NEXT: mtfprd f12, r3 3521; FAST-NEXT: mffprd r3, f13 3522; FAST-NEXT: mtfprd f13, r3 3523; FAST-NEXT: mffprd r3, f31 3524; FAST-NEXT: lfd f31, 64(r1) # 8-byte Folded Reload 3525; FAST-NEXT: fctid f31, f31 3526; FAST-NEXT: mtvsrd v0, r3 3527; FAST-NEXT: mffprd r3, f31 3528; FAST-NEXT: lfd f31, 72(r1) # 8-byte Folded Reload 3529; FAST-NEXT: mtvsrd v1, r3 3530; FAST-NEXT: mffprd r3, f30 3531; FAST-NEXT: lfd f30, 88(r1) # 8-byte Folded Reload 3532; FAST-NEXT: fctid f31, f31 3533; FAST-NEXT: mtvsrd v6, r3 3534; FAST-NEXT: mffprd r3, f28 3535; FAST-NEXT: lfd f28, 104(r1) # 8-byte Folded Reload 3536; FAST-NEXT: fctid f30, f30 3537; FAST-NEXT: fctid f28, f28 3538; FAST-NEXT: mtvsrd v7, r3 3539; FAST-NEXT: mffprd r3, f28 3540; FAST-NEXT: lfd f28, 112(r1) # 8-byte Folded Reload 3541; FAST-NEXT: fctid f28, f28 3542; FAST-NEXT: mtvsrd v8, r3 3543; FAST-NEXT: mffprd r3, f28 3544; FAST-NEXT: lfd f28, 120(r1) # 8-byte Folded Reload 3545; FAST-NEXT: fctid f28, f28 3546; FAST-NEXT: xxmrghd v10, vs12, vs11 3547; FAST-NEXT: xxmrghd v0, v0, vs13 3548; FAST-NEXT: xxswapd vs12, v0 3549; FAST-NEXT: xxmrghd v0, vs9, vs8 3550; FAST-NEXT: xxmrghd v7, v8, v7 3551; FAST-NEXT: mtvsrd v8, r3 3552; FAST-NEXT: mffprd r3, f28 3553; FAST-NEXT: mtvsrd v9, r3 3554; FAST-NEXT: mffprd r3, f30 3555; FAST-NEXT: xxswapd v7, v7 3556; FAST-NEXT: xxmrghd v8, v9, v8 3557; FAST-NEXT: mtvsrd v9, r3 3558; FAST-NEXT: mffprd r3, f31 3559; FAST-NEXT: xxswapd v8, v8 3560; FAST-NEXT: xxmrghd v6, v9, v6 3561; FAST-NEXT: mtvsrd v9, r3 3562; FAST-NEXT: li r3, 240 3563; FAST-NEXT: stxvd2x v8, r30, r3 3564; FAST-NEXT: li r3, 224 3565; FAST-NEXT: stxvd2x v7, r30, r3 3566; FAST-NEXT: li r3, 208 3567; FAST-NEXT: xxswapd vs11, v6 3568; FAST-NEXT: xxmrghd v6, vs10, vs7 3569; FAST-NEXT: stxvd2x vs11, r30, r3 3570; FAST-NEXT: li r3, 192 3571; FAST-NEXT: xxmrghd v1, v9, v1 3572; FAST-NEXT: xxswapd vs11, v1 3573; FAST-NEXT: xxmrghd v1, vs6, vs5 3574; FAST-NEXT: xxswapd vs5, v10 3575; FAST-NEXT: xxswapd vs6, v5 3576; FAST-NEXT: stxvd2x vs11, r30, r3 3577; FAST-NEXT: li r3, 176 3578; FAST-NEXT: stxvd2x vs12, r30, r3 3579; FAST-NEXT: li r3, 160 3580; FAST-NEXT: stxvd2x vs5, r30, r3 3581; FAST-NEXT: li r3, 144 3582; FAST-NEXT: stxvd2x vs6, r30, r3 3583; FAST-NEXT: mffprd r3, f2 3584; FAST-NEXT: mtfprd f7, r3 3585; FAST-NEXT: li r3, 128 3586; FAST-NEXT: xxswapd vs5, v6 3587; FAST-NEXT: stxvd2x vs5, r30, r3 3588; FAST-NEXT: li r3, 112 3589; FAST-NEXT: xxswapd vs2, v1 3590; FAST-NEXT: xxswapd vs6, v0 3591; FAST-NEXT: stxvd2x vs2, r30, r3 3592; FAST-NEXT: li r3, 96 3593; FAST-NEXT: fctid f2, f29 3594; FAST-NEXT: stxvd2x vs6, r30, r3 3595; FAST-NEXT: mffprd r3, f0 3596; FAST-NEXT: mtfprd f0, r3 3597; FAST-NEXT: mffprd r3, f2 3598; FAST-NEXT: mtfprd f2, r3 3599; FAST-NEXT: li r3, 80 3600; FAST-NEXT: xxmrghd v5, vs7, vs4 3601; FAST-NEXT: xxswapd vs4, v2 3602; FAST-NEXT: xxmrghd v0, vs0, vs3 3603; FAST-NEXT: xxswapd vs0, v5 3604; FAST-NEXT: xxswapd vs3, v3 3605; FAST-NEXT: stxvd2x vs0, r30, r3 3606; FAST-NEXT: li r3, 64 3607; FAST-NEXT: xxswapd vs0, v0 3608; FAST-NEXT: stxvd2x vs0, r30, r3 3609; FAST-NEXT: li r3, 48 3610; FAST-NEXT: xxmrghd v5, vs2, vs1 3611; FAST-NEXT: xxswapd vs1, v4 3612; FAST-NEXT: stxvd2x vs1, r30, r3 3613; FAST-NEXT: li r3, 32 3614; FAST-NEXT: xxswapd vs2, v5 3615; FAST-NEXT: stxvd2x vs2, r30, r3 3616; FAST-NEXT: li r3, 16 3617; FAST-NEXT: stxvd2x vs3, r30, r3 3618; FAST-NEXT: li r3, 304 3619; FAST-NEXT: stxvd2x vs4, 0, r30 3620; FAST-NEXT: lfd f31, 472(r1) # 8-byte Folded Reload 3621; FAST-NEXT: lfd f30, 464(r1) # 8-byte Folded Reload 3622; FAST-NEXT: lfd f29, 456(r1) # 8-byte Folded Reload 3623; FAST-NEXT: lfd f28, 448(r1) # 8-byte Folded Reload 3624; FAST-NEXT: lfd f27, 440(r1) # 8-byte Folded Reload 3625; FAST-NEXT: lfd f26, 432(r1) # 8-byte Folded Reload 3626; FAST-NEXT: lfd f25, 424(r1) # 8-byte Folded Reload 3627; FAST-NEXT: lfd f24, 416(r1) # 8-byte Folded Reload 3628; FAST-NEXT: lfd f23, 408(r1) # 8-byte Folded Reload 3629; FAST-NEXT: lfd f22, 400(r1) # 8-byte Folded Reload 3630; FAST-NEXT: lfd f21, 392(r1) # 8-byte Folded Reload 3631; FAST-NEXT: lfd f20, 384(r1) # 8-byte Folded Reload 3632; FAST-NEXT: lfd f19, 376(r1) # 8-byte Folded Reload 3633; FAST-NEXT: lfd f18, 368(r1) # 8-byte Folded Reload 3634; FAST-NEXT: lfd f17, 360(r1) # 8-byte Folded Reload 3635; FAST-NEXT: lfd f16, 352(r1) # 8-byte Folded Reload 3636; FAST-NEXT: lfd f15, 344(r1) # 8-byte Folded Reload 3637; FAST-NEXT: lfd f14, 336(r1) # 8-byte Folded Reload 3638; FAST-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 3639; FAST-NEXT: li r3, 288 3640; FAST-NEXT: ld r30, 320(r1) # 8-byte Folded Reload 3641; FAST-NEXT: lvx v30, r1, r3 # 16-byte Folded Reload 3642; FAST-NEXT: li r3, 272 3643; FAST-NEXT: lvx v29, r1, r3 # 16-byte Folded Reload 3644; FAST-NEXT: li r3, 256 3645; FAST-NEXT: lvx v28, r1, r3 # 16-byte Folded Reload 3646; FAST-NEXT: li r3, 240 3647; FAST-NEXT: lvx v27, r1, r3 # 16-byte Folded Reload 3648; FAST-NEXT: li r3, 224 3649; FAST-NEXT: lvx v26, r1, r3 # 16-byte Folded Reload 3650; FAST-NEXT: li r3, 208 3651; FAST-NEXT: lvx v25, r1, r3 # 16-byte Folded Reload 3652; FAST-NEXT: li r3, 192 3653; FAST-NEXT: lvx v24, r1, r3 # 16-byte Folded Reload 3654; FAST-NEXT: li r3, 176 3655; FAST-NEXT: lvx v23, r1, r3 # 16-byte Folded Reload 3656; FAST-NEXT: li r3, 160 3657; FAST-NEXT: lvx v22, r1, r3 # 16-byte Folded Reload 3658; FAST-NEXT: li r3, 144 3659; FAST-NEXT: lvx v21, r1, r3 # 16-byte Folded Reload 3660; FAST-NEXT: li r3, 128 3661; FAST-NEXT: lvx v20, r1, r3 # 16-byte Folded Reload 3662; FAST-NEXT: addi r1, r1, 480 3663; FAST-NEXT: ld r0, 16(r1) 3664; FAST-NEXT: mtlr r0 3665; FAST-NEXT: blr 3666 %a = call <32 x i64> @llvm.lrint.v32i64.v32f16(<32 x half> %x) 3667 ret <32 x i64> %a 3668} 3669declare <32 x i64> @llvm.lrint.v32i64.v32f16(<32 x half>) 3670 3671define <1 x i64> @lrint_v1f32(<1 x float> %x) { 3672; BE-LABEL: lrint_v1f32: 3673; BE: # %bb.0: 3674; BE-NEXT: mflr r0 3675; BE-NEXT: stdu r1, -112(r1) 3676; BE-NEXT: std r0, 128(r1) 3677; BE-NEXT: .cfi_def_cfa_offset 112 3678; BE-NEXT: .cfi_offset lr, 16 3679; BE-NEXT: bl lrintf 3680; BE-NEXT: nop 3681; BE-NEXT: addi r1, r1, 112 3682; BE-NEXT: ld r0, 16(r1) 3683; BE-NEXT: mtlr r0 3684; BE-NEXT: blr 3685; 3686; CHECK-LABEL: lrint_v1f32: 3687; CHECK: # %bb.0: 3688; CHECK-NEXT: mflr r0 3689; CHECK-NEXT: stdu r1, -32(r1) 3690; CHECK-NEXT: std r0, 48(r1) 3691; CHECK-NEXT: .cfi_def_cfa_offset 32 3692; CHECK-NEXT: .cfi_offset lr, 16 3693; CHECK-NEXT: bl lrintf 3694; CHECK-NEXT: nop 3695; CHECK-NEXT: addi r1, r1, 32 3696; CHECK-NEXT: ld r0, 16(r1) 3697; CHECK-NEXT: mtlr r0 3698; CHECK-NEXT: blr 3699; 3700; FAST-LABEL: lrint_v1f32: 3701; FAST: # %bb.0: 3702; FAST-NEXT: fctid f0, f1 3703; FAST-NEXT: mffprd r3, f0 3704; FAST-NEXT: blr 3705 %a = call <1 x i64> @llvm.lrint.v1i64.v1f32(<1 x float> %x) 3706 ret <1 x i64> %a 3707} 3708declare <1 x i64> @llvm.lrint.v1i64.v1f32(<1 x float>) 3709 3710define <2 x i64> @lrint_v2f32(<2 x float> %x) { 3711; BE-LABEL: lrint_v2f32: 3712; BE: # %bb.0: 3713; BE-NEXT: mflr r0 3714; BE-NEXT: stdu r1, -144(r1) 3715; BE-NEXT: std r0, 160(r1) 3716; BE-NEXT: .cfi_def_cfa_offset 144 3717; BE-NEXT: .cfi_offset lr, 16 3718; BE-NEXT: addi r3, r1, 112 3719; BE-NEXT: stxvw4x v2, 0, r3 3720; BE-NEXT: lfs f1, 116(r1) 3721; BE-NEXT: bl lrintf 3722; BE-NEXT: nop 3723; BE-NEXT: lfs f1, 112(r1) 3724; BE-NEXT: std r3, 136(r1) 3725; BE-NEXT: bl lrintf 3726; BE-NEXT: nop 3727; BE-NEXT: std r3, 128(r1) 3728; BE-NEXT: addi r3, r1, 128 3729; BE-NEXT: lxvd2x v2, 0, r3 3730; BE-NEXT: addi r1, r1, 144 3731; BE-NEXT: ld r0, 16(r1) 3732; BE-NEXT: mtlr r0 3733; BE-NEXT: blr 3734; 3735; CHECK-LABEL: lrint_v2f32: 3736; CHECK: # %bb.0: 3737; CHECK-NEXT: mflr r0 3738; CHECK-NEXT: stdu r1, -64(r1) 3739; CHECK-NEXT: std r0, 80(r1) 3740; CHECK-NEXT: .cfi_def_cfa_offset 64 3741; CHECK-NEXT: .cfi_offset lr, 16 3742; CHECK-NEXT: .cfi_offset v31, -16 3743; CHECK-NEXT: xxsldwi vs0, v2, v2, 3 3744; CHECK-NEXT: li r3, 48 3745; CHECK-NEXT: xscvspdpn f1, vs0 3746; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 3747; CHECK-NEXT: vmr v31, v2 3748; CHECK-NEXT: bl lrintf 3749; CHECK-NEXT: nop 3750; CHECK-NEXT: xxswapd vs0, v31 3751; CHECK-NEXT: mtvsrd v31, r3 3752; CHECK-NEXT: xscvspdpn f1, vs0 3753; CHECK-NEXT: bl lrintf 3754; CHECK-NEXT: nop 3755; CHECK-NEXT: mtfprd f0, r3 3756; CHECK-NEXT: li r3, 48 3757; CHECK-NEXT: xxmrghd v2, vs0, v31 3758; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 3759; CHECK-NEXT: addi r1, r1, 64 3760; CHECK-NEXT: ld r0, 16(r1) 3761; CHECK-NEXT: mtlr r0 3762; CHECK-NEXT: blr 3763; 3764; FAST-LABEL: lrint_v2f32: 3765; FAST: # %bb.0: 3766; FAST-NEXT: xxsldwi vs0, v2, v2, 3 3767; FAST-NEXT: xxswapd vs1, v2 3768; FAST-NEXT: xscvspdpn f0, vs0 3769; FAST-NEXT: xscvspdpn f1, vs1 3770; FAST-NEXT: fctid f0, f0 3771; FAST-NEXT: fctid f1, f1 3772; FAST-NEXT: mffprd r3, f0 3773; FAST-NEXT: mtfprd f0, r3 3774; FAST-NEXT: mffprd r3, f1 3775; FAST-NEXT: mtfprd f1, r3 3776; FAST-NEXT: xxmrghd v2, vs1, vs0 3777; FAST-NEXT: blr 3778 %a = call <2 x i64> @llvm.lrint.v2i64.v2f32(<2 x float> %x) 3779 ret <2 x i64> %a 3780} 3781declare <2 x i64> @llvm.lrint.v2i64.v2f32(<2 x float>) 3782 3783define <4 x i64> @lrint_v4f32(<4 x float> %x) { 3784; BE-LABEL: lrint_v4f32: 3785; BE: # %bb.0: 3786; BE-NEXT: mflr r0 3787; BE-NEXT: stdu r1, -160(r1) 3788; BE-NEXT: std r0, 176(r1) 3789; BE-NEXT: .cfi_def_cfa_offset 160 3790; BE-NEXT: .cfi_offset lr, 16 3791; BE-NEXT: addi r3, r1, 112 3792; BE-NEXT: stxvw4x v2, 0, r3 3793; BE-NEXT: lfs f1, 116(r1) 3794; BE-NEXT: bl lrintf 3795; BE-NEXT: nop 3796; BE-NEXT: lfs f1, 112(r1) 3797; BE-NEXT: std r3, 136(r1) 3798; BE-NEXT: bl lrintf 3799; BE-NEXT: nop 3800; BE-NEXT: lfs f1, 124(r1) 3801; BE-NEXT: std r3, 128(r1) 3802; BE-NEXT: bl lrintf 3803; BE-NEXT: nop 3804; BE-NEXT: lfs f1, 120(r1) 3805; BE-NEXT: std r3, 152(r1) 3806; BE-NEXT: bl lrintf 3807; BE-NEXT: nop 3808; BE-NEXT: std r3, 144(r1) 3809; BE-NEXT: addi r3, r1, 128 3810; BE-NEXT: lxvd2x v2, 0, r3 3811; BE-NEXT: addi r3, r1, 144 3812; BE-NEXT: lxvd2x v3, 0, r3 3813; BE-NEXT: addi r1, r1, 160 3814; BE-NEXT: ld r0, 16(r1) 3815; BE-NEXT: mtlr r0 3816; BE-NEXT: blr 3817; 3818; CHECK-LABEL: lrint_v4f32: 3819; CHECK: # %bb.0: 3820; CHECK-NEXT: mflr r0 3821; CHECK-NEXT: stdu r1, -80(r1) 3822; CHECK-NEXT: std r0, 96(r1) 3823; CHECK-NEXT: .cfi_def_cfa_offset 80 3824; CHECK-NEXT: .cfi_offset lr, 16 3825; CHECK-NEXT: .cfi_offset v30, -32 3826; CHECK-NEXT: .cfi_offset v31, -16 3827; CHECK-NEXT: xxsldwi vs0, v2, v2, 3 3828; CHECK-NEXT: li r3, 48 3829; CHECK-NEXT: xscvspdpn f1, vs0 3830; CHECK-NEXT: stvx v30, r1, r3 # 16-byte Folded Spill 3831; CHECK-NEXT: li r3, 64 3832; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 3833; CHECK-NEXT: vmr v31, v2 3834; CHECK-NEXT: bl lrintf 3835; CHECK-NEXT: nop 3836; CHECK-NEXT: xxswapd vs0, v31 3837; CHECK-NEXT: mtvsrd v30, r3 3838; CHECK-NEXT: xscvspdpn f1, vs0 3839; CHECK-NEXT: bl lrintf 3840; CHECK-NEXT: nop 3841; CHECK-NEXT: xscvspdpn f1, v31 3842; CHECK-NEXT: mtfprd f0, r3 3843; CHECK-NEXT: xxmrghd v30, vs0, v30 3844; CHECK-NEXT: bl lrintf 3845; CHECK-NEXT: nop 3846; CHECK-NEXT: xxsldwi vs0, v31, v31, 1 3847; CHECK-NEXT: mtvsrd v31, r3 3848; CHECK-NEXT: xscvspdpn f1, vs0 3849; CHECK-NEXT: bl lrintf 3850; CHECK-NEXT: nop 3851; CHECK-NEXT: mtfprd f0, r3 3852; CHECK-NEXT: li r3, 64 3853; CHECK-NEXT: vmr v2, v30 3854; CHECK-NEXT: xxmrghd v3, v31, vs0 3855; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 3856; CHECK-NEXT: li r3, 48 3857; CHECK-NEXT: lvx v30, r1, r3 # 16-byte Folded Reload 3858; CHECK-NEXT: addi r1, r1, 80 3859; CHECK-NEXT: ld r0, 16(r1) 3860; CHECK-NEXT: mtlr r0 3861; CHECK-NEXT: blr 3862; 3863; FAST-LABEL: lrint_v4f32: 3864; FAST: # %bb.0: 3865; FAST-NEXT: xxsldwi vs0, v2, v2, 3 3866; FAST-NEXT: xxswapd vs1, v2 3867; FAST-NEXT: xscvspdpn f0, vs0 3868; FAST-NEXT: xxsldwi vs2, v2, v2, 1 3869; FAST-NEXT: fctid f0, f0 3870; FAST-NEXT: mffprd r3, f0 3871; FAST-NEXT: xscvspdpn f0, vs1 3872; FAST-NEXT: mtfprd f1, r3 3873; FAST-NEXT: fctid f0, f0 3874; FAST-NEXT: mffprd r3, f0 3875; FAST-NEXT: mtfprd f0, r3 3876; FAST-NEXT: xxmrghd v4, vs0, vs1 3877; FAST-NEXT: xscvspdpn f0, v2 3878; FAST-NEXT: vmr v2, v4 3879; FAST-NEXT: fctid f0, f0 3880; FAST-NEXT: mffprd r3, f0 3881; FAST-NEXT: xscvspdpn f0, vs2 3882; FAST-NEXT: mtfprd f1, r3 3883; FAST-NEXT: fctid f0, f0 3884; FAST-NEXT: mffprd r3, f0 3885; FAST-NEXT: mtfprd f0, r3 3886; FAST-NEXT: xxmrghd v3, vs1, vs0 3887; FAST-NEXT: blr 3888 %a = call <4 x i64> @llvm.lrint.v4i64.v4f32(<4 x float> %x) 3889 ret <4 x i64> %a 3890} 3891declare <4 x i64> @llvm.lrint.v4i64.v4f32(<4 x float>) 3892 3893define <8 x i64> @lrint_v8f32(<8 x float> %x) { 3894; BE-LABEL: lrint_v8f32: 3895; BE: # %bb.0: 3896; BE-NEXT: mflr r0 3897; BE-NEXT: stdu r1, -208(r1) 3898; BE-NEXT: std r0, 224(r1) 3899; BE-NEXT: .cfi_def_cfa_offset 208 3900; BE-NEXT: .cfi_offset lr, 16 3901; BE-NEXT: addi r3, r1, 112 3902; BE-NEXT: stxvw4x v2, 0, r3 3903; BE-NEXT: addi r3, r1, 128 3904; BE-NEXT: stxvw4x v3, 0, r3 3905; BE-NEXT: lfs f1, 116(r1) 3906; BE-NEXT: bl lrintf 3907; BE-NEXT: nop 3908; BE-NEXT: lfs f1, 112(r1) 3909; BE-NEXT: std r3, 152(r1) 3910; BE-NEXT: bl lrintf 3911; BE-NEXT: nop 3912; BE-NEXT: lfs f1, 124(r1) 3913; BE-NEXT: std r3, 144(r1) 3914; BE-NEXT: bl lrintf 3915; BE-NEXT: nop 3916; BE-NEXT: lfs f1, 120(r1) 3917; BE-NEXT: std r3, 168(r1) 3918; BE-NEXT: bl lrintf 3919; BE-NEXT: nop 3920; BE-NEXT: lfs f1, 132(r1) 3921; BE-NEXT: std r3, 160(r1) 3922; BE-NEXT: bl lrintf 3923; BE-NEXT: nop 3924; BE-NEXT: lfs f1, 128(r1) 3925; BE-NEXT: std r3, 184(r1) 3926; BE-NEXT: bl lrintf 3927; BE-NEXT: nop 3928; BE-NEXT: lfs f1, 140(r1) 3929; BE-NEXT: std r3, 176(r1) 3930; BE-NEXT: bl lrintf 3931; BE-NEXT: nop 3932; BE-NEXT: lfs f1, 136(r1) 3933; BE-NEXT: std r3, 200(r1) 3934; BE-NEXT: bl lrintf 3935; BE-NEXT: nop 3936; BE-NEXT: std r3, 192(r1) 3937; BE-NEXT: addi r3, r1, 144 3938; BE-NEXT: lxvd2x v2, 0, r3 3939; BE-NEXT: addi r3, r1, 160 3940; BE-NEXT: lxvd2x v3, 0, r3 3941; BE-NEXT: addi r3, r1, 176 3942; BE-NEXT: lxvd2x v4, 0, r3 3943; BE-NEXT: addi r3, r1, 192 3944; BE-NEXT: lxvd2x v5, 0, r3 3945; BE-NEXT: addi r1, r1, 208 3946; BE-NEXT: ld r0, 16(r1) 3947; BE-NEXT: mtlr r0 3948; BE-NEXT: blr 3949; 3950; CHECK-LABEL: lrint_v8f32: 3951; CHECK: # %bb.0: 3952; CHECK-NEXT: mflr r0 3953; CHECK-NEXT: stdu r1, -112(r1) 3954; CHECK-NEXT: std r0, 128(r1) 3955; CHECK-NEXT: .cfi_def_cfa_offset 112 3956; CHECK-NEXT: .cfi_offset lr, 16 3957; CHECK-NEXT: .cfi_offset v28, -64 3958; CHECK-NEXT: .cfi_offset v29, -48 3959; CHECK-NEXT: .cfi_offset v30, -32 3960; CHECK-NEXT: .cfi_offset v31, -16 3961; CHECK-NEXT: li r3, 48 3962; CHECK-NEXT: xxsldwi vs0, v2, v2, 3 3963; CHECK-NEXT: stvx v28, r1, r3 # 16-byte Folded Spill 3964; CHECK-NEXT: li r3, 64 3965; CHECK-NEXT: xscvspdpn f1, vs0 3966; CHECK-NEXT: stvx v29, r1, r3 # 16-byte Folded Spill 3967; CHECK-NEXT: li r3, 80 3968; CHECK-NEXT: stvx v30, r1, r3 # 16-byte Folded Spill 3969; CHECK-NEXT: li r3, 96 3970; CHECK-NEXT: vmr v30, v2 3971; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 3972; CHECK-NEXT: vmr v31, v3 3973; CHECK-NEXT: bl lrintf 3974; CHECK-NEXT: nop 3975; CHECK-NEXT: xxswapd vs0, v30 3976; CHECK-NEXT: mtvsrd v29, r3 3977; CHECK-NEXT: xscvspdpn f1, vs0 3978; CHECK-NEXT: bl lrintf 3979; CHECK-NEXT: nop 3980; CHECK-NEXT: xscvspdpn f1, v30 3981; CHECK-NEXT: mtfprd f0, r3 3982; CHECK-NEXT: xxmrghd v29, vs0, v29 3983; CHECK-NEXT: bl lrintf 3984; CHECK-NEXT: nop 3985; CHECK-NEXT: xxsldwi vs0, v30, v30, 1 3986; CHECK-NEXT: mtvsrd v30, r3 3987; CHECK-NEXT: xscvspdpn f1, vs0 3988; CHECK-NEXT: bl lrintf 3989; CHECK-NEXT: nop 3990; CHECK-NEXT: mtfprd f0, r3 3991; CHECK-NEXT: xxmrghd v30, v30, vs0 3992; CHECK-NEXT: xxsldwi vs0, v31, v31, 3 3993; CHECK-NEXT: xscvspdpn f1, vs0 3994; CHECK-NEXT: bl lrintf 3995; CHECK-NEXT: nop 3996; CHECK-NEXT: xxswapd vs0, v31 3997; CHECK-NEXT: mtvsrd v28, r3 3998; CHECK-NEXT: xscvspdpn f1, vs0 3999; CHECK-NEXT: bl lrintf 4000; CHECK-NEXT: nop 4001; CHECK-NEXT: xscvspdpn f1, v31 4002; CHECK-NEXT: mtfprd f0, r3 4003; CHECK-NEXT: xxmrghd v28, vs0, v28 4004; CHECK-NEXT: bl lrintf 4005; CHECK-NEXT: nop 4006; CHECK-NEXT: xxsldwi vs0, v31, v31, 1 4007; CHECK-NEXT: mtvsrd v31, r3 4008; CHECK-NEXT: xscvspdpn f1, vs0 4009; CHECK-NEXT: bl lrintf 4010; CHECK-NEXT: nop 4011; CHECK-NEXT: mtfprd f0, r3 4012; CHECK-NEXT: li r3, 96 4013; CHECK-NEXT: vmr v3, v30 4014; CHECK-NEXT: vmr v2, v29 4015; CHECK-NEXT: vmr v4, v28 4016; CHECK-NEXT: xxmrghd v5, v31, vs0 4017; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 4018; CHECK-NEXT: li r3, 80 4019; CHECK-NEXT: lvx v30, r1, r3 # 16-byte Folded Reload 4020; CHECK-NEXT: li r3, 64 4021; CHECK-NEXT: lvx v29, r1, r3 # 16-byte Folded Reload 4022; CHECK-NEXT: li r3, 48 4023; CHECK-NEXT: lvx v28, r1, r3 # 16-byte Folded Reload 4024; CHECK-NEXT: addi r1, r1, 112 4025; CHECK-NEXT: ld r0, 16(r1) 4026; CHECK-NEXT: mtlr r0 4027; CHECK-NEXT: blr 4028; 4029; FAST-LABEL: lrint_v8f32: 4030; FAST: # %bb.0: 4031; FAST-NEXT: xxsldwi vs0, v2, v2, 3 4032; FAST-NEXT: xxswapd vs1, v2 4033; FAST-NEXT: xscvspdpn f0, vs0 4034; FAST-NEXT: xxsldwi vs2, v2, v2, 1 4035; FAST-NEXT: xxsldwi vs3, v3, v3, 3 4036; FAST-NEXT: xxswapd vs4, v3 4037; FAST-NEXT: xxsldwi vs5, v3, v3, 1 4038; FAST-NEXT: fctid f0, f0 4039; FAST-NEXT: mffprd r3, f0 4040; FAST-NEXT: xscvspdpn f0, vs1 4041; FAST-NEXT: mtfprd f1, r3 4042; FAST-NEXT: fctid f0, f0 4043; FAST-NEXT: mffprd r3, f0 4044; FAST-NEXT: mtfprd f0, r3 4045; FAST-NEXT: xxmrghd v0, vs0, vs1 4046; FAST-NEXT: xscvspdpn f0, v2 4047; FAST-NEXT: vmr v2, v0 4048; FAST-NEXT: fctid f0, f0 4049; FAST-NEXT: mffprd r3, f0 4050; FAST-NEXT: xscvspdpn f0, vs2 4051; FAST-NEXT: mtfprd f1, r3 4052; FAST-NEXT: fctid f0, f0 4053; FAST-NEXT: mffprd r3, f0 4054; FAST-NEXT: mtfprd f0, r3 4055; FAST-NEXT: xxmrghd v1, vs1, vs0 4056; FAST-NEXT: xscvspdpn f0, vs3 4057; FAST-NEXT: fctid f0, f0 4058; FAST-NEXT: mffprd r3, f0 4059; FAST-NEXT: xscvspdpn f0, vs4 4060; FAST-NEXT: mtfprd f1, r3 4061; FAST-NEXT: fctid f0, f0 4062; FAST-NEXT: mffprd r3, f0 4063; FAST-NEXT: mtfprd f0, r3 4064; FAST-NEXT: xxmrghd v4, vs0, vs1 4065; FAST-NEXT: xscvspdpn f0, v3 4066; FAST-NEXT: vmr v3, v1 4067; FAST-NEXT: fctid f0, f0 4068; FAST-NEXT: mffprd r3, f0 4069; FAST-NEXT: xscvspdpn f0, vs5 4070; FAST-NEXT: mtfprd f1, r3 4071; FAST-NEXT: fctid f0, f0 4072; FAST-NEXT: mffprd r3, f0 4073; FAST-NEXT: mtfprd f0, r3 4074; FAST-NEXT: xxmrghd v5, vs1, vs0 4075; FAST-NEXT: blr 4076 %a = call <8 x i64> @llvm.lrint.v8i64.v8f32(<8 x float> %x) 4077 ret <8 x i64> %a 4078} 4079declare <8 x i64> @llvm.lrint.v8i64.v8f32(<8 x float>) 4080 4081define <16 x i64> @lrint_v16i64_v16f32(<16 x float> %x) { 4082; BE-LABEL: lrint_v16i64_v16f32: 4083; BE: # %bb.0: 4084; BE-NEXT: mflr r0 4085; BE-NEXT: stdu r1, -304(r1) 4086; BE-NEXT: std r0, 320(r1) 4087; BE-NEXT: .cfi_def_cfa_offset 304 4088; BE-NEXT: .cfi_offset lr, 16 4089; BE-NEXT: addi r3, r1, 112 4090; BE-NEXT: stxvw4x v2, 0, r3 4091; BE-NEXT: addi r3, r1, 128 4092; BE-NEXT: stxvw4x v3, 0, r3 4093; BE-NEXT: addi r3, r1, 144 4094; BE-NEXT: stxvw4x v4, 0, r3 4095; BE-NEXT: addi r3, r1, 160 4096; BE-NEXT: stxvw4x v5, 0, r3 4097; BE-NEXT: lfs f1, 116(r1) 4098; BE-NEXT: bl lrintf 4099; BE-NEXT: nop 4100; BE-NEXT: lfs f1, 112(r1) 4101; BE-NEXT: std r3, 184(r1) 4102; BE-NEXT: bl lrintf 4103; BE-NEXT: nop 4104; BE-NEXT: lfs f1, 124(r1) 4105; BE-NEXT: std r3, 176(r1) 4106; BE-NEXT: bl lrintf 4107; BE-NEXT: nop 4108; BE-NEXT: lfs f1, 120(r1) 4109; BE-NEXT: std r3, 200(r1) 4110; BE-NEXT: bl lrintf 4111; BE-NEXT: nop 4112; BE-NEXT: lfs f1, 132(r1) 4113; BE-NEXT: std r3, 192(r1) 4114; BE-NEXT: bl lrintf 4115; BE-NEXT: nop 4116; BE-NEXT: lfs f1, 128(r1) 4117; BE-NEXT: std r3, 216(r1) 4118; BE-NEXT: bl lrintf 4119; BE-NEXT: nop 4120; BE-NEXT: lfs f1, 140(r1) 4121; BE-NEXT: std r3, 208(r1) 4122; BE-NEXT: bl lrintf 4123; BE-NEXT: nop 4124; BE-NEXT: lfs f1, 136(r1) 4125; BE-NEXT: std r3, 232(r1) 4126; BE-NEXT: bl lrintf 4127; BE-NEXT: nop 4128; BE-NEXT: lfs f1, 148(r1) 4129; BE-NEXT: std r3, 224(r1) 4130; BE-NEXT: bl lrintf 4131; BE-NEXT: nop 4132; BE-NEXT: lfs f1, 144(r1) 4133; BE-NEXT: std r3, 248(r1) 4134; BE-NEXT: bl lrintf 4135; BE-NEXT: nop 4136; BE-NEXT: lfs f1, 156(r1) 4137; BE-NEXT: std r3, 240(r1) 4138; BE-NEXT: bl lrintf 4139; BE-NEXT: nop 4140; BE-NEXT: lfs f1, 152(r1) 4141; BE-NEXT: std r3, 264(r1) 4142; BE-NEXT: bl lrintf 4143; BE-NEXT: nop 4144; BE-NEXT: lfs f1, 164(r1) 4145; BE-NEXT: std r3, 256(r1) 4146; BE-NEXT: bl lrintf 4147; BE-NEXT: nop 4148; BE-NEXT: lfs f1, 160(r1) 4149; BE-NEXT: std r3, 280(r1) 4150; BE-NEXT: bl lrintf 4151; BE-NEXT: nop 4152; BE-NEXT: lfs f1, 172(r1) 4153; BE-NEXT: std r3, 272(r1) 4154; BE-NEXT: bl lrintf 4155; BE-NEXT: nop 4156; BE-NEXT: lfs f1, 168(r1) 4157; BE-NEXT: std r3, 296(r1) 4158; BE-NEXT: bl lrintf 4159; BE-NEXT: nop 4160; BE-NEXT: std r3, 288(r1) 4161; BE-NEXT: addi r3, r1, 176 4162; BE-NEXT: lxvd2x v2, 0, r3 4163; BE-NEXT: addi r3, r1, 192 4164; BE-NEXT: lxvd2x v3, 0, r3 4165; BE-NEXT: addi r3, r1, 208 4166; BE-NEXT: lxvd2x v4, 0, r3 4167; BE-NEXT: addi r3, r1, 224 4168; BE-NEXT: lxvd2x v5, 0, r3 4169; BE-NEXT: addi r3, r1, 240 4170; BE-NEXT: lxvd2x v6, 0, r3 4171; BE-NEXT: addi r3, r1, 256 4172; BE-NEXT: lxvd2x v7, 0, r3 4173; BE-NEXT: addi r3, r1, 272 4174; BE-NEXT: lxvd2x v8, 0, r3 4175; BE-NEXT: addi r3, r1, 288 4176; BE-NEXT: lxvd2x v9, 0, r3 4177; BE-NEXT: addi r1, r1, 304 4178; BE-NEXT: ld r0, 16(r1) 4179; BE-NEXT: mtlr r0 4180; BE-NEXT: blr 4181; 4182; CHECK-LABEL: lrint_v16i64_v16f32: 4183; CHECK: # %bb.0: 4184; CHECK-NEXT: mflr r0 4185; CHECK-NEXT: stdu r1, -176(r1) 4186; CHECK-NEXT: std r0, 192(r1) 4187; CHECK-NEXT: .cfi_def_cfa_offset 176 4188; CHECK-NEXT: .cfi_offset lr, 16 4189; CHECK-NEXT: .cfi_offset v24, -128 4190; CHECK-NEXT: .cfi_offset v25, -112 4191; CHECK-NEXT: .cfi_offset v26, -96 4192; CHECK-NEXT: .cfi_offset v27, -80 4193; CHECK-NEXT: .cfi_offset v28, -64 4194; CHECK-NEXT: .cfi_offset v29, -48 4195; CHECK-NEXT: .cfi_offset v30, -32 4196; CHECK-NEXT: .cfi_offset v31, -16 4197; CHECK-NEXT: li r3, 48 4198; CHECK-NEXT: xxsldwi vs0, v2, v2, 3 4199; CHECK-NEXT: stvx v24, r1, r3 # 16-byte Folded Spill 4200; CHECK-NEXT: li r3, 64 4201; CHECK-NEXT: xscvspdpn f1, vs0 4202; CHECK-NEXT: stvx v25, r1, r3 # 16-byte Folded Spill 4203; CHECK-NEXT: li r3, 80 4204; CHECK-NEXT: stvx v26, r1, r3 # 16-byte Folded Spill 4205; CHECK-NEXT: li r3, 96 4206; CHECK-NEXT: vmr v26, v3 4207; CHECK-NEXT: stvx v27, r1, r3 # 16-byte Folded Spill 4208; CHECK-NEXT: li r3, 112 4209; CHECK-NEXT: stvx v28, r1, r3 # 16-byte Folded Spill 4210; CHECK-NEXT: li r3, 128 4211; CHECK-NEXT: vmr v28, v4 4212; CHECK-NEXT: stvx v29, r1, r3 # 16-byte Folded Spill 4213; CHECK-NEXT: li r3, 144 4214; CHECK-NEXT: vmr v29, v2 4215; CHECK-NEXT: stvx v30, r1, r3 # 16-byte Folded Spill 4216; CHECK-NEXT: li r3, 160 4217; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 4218; CHECK-NEXT: vmr v31, v5 4219; CHECK-NEXT: bl lrintf 4220; CHECK-NEXT: nop 4221; CHECK-NEXT: xxswapd vs0, v29 4222; CHECK-NEXT: mtvsrd v30, r3 4223; CHECK-NEXT: xscvspdpn f1, vs0 4224; CHECK-NEXT: bl lrintf 4225; CHECK-NEXT: nop 4226; CHECK-NEXT: xscvspdpn f1, v29 4227; CHECK-NEXT: mtfprd f0, r3 4228; CHECK-NEXT: xxmrghd v30, vs0, v30 4229; CHECK-NEXT: bl lrintf 4230; CHECK-NEXT: nop 4231; CHECK-NEXT: xxsldwi vs0, v29, v29, 1 4232; CHECK-NEXT: mtvsrd v29, r3 4233; CHECK-NEXT: xscvspdpn f1, vs0 4234; CHECK-NEXT: bl lrintf 4235; CHECK-NEXT: nop 4236; CHECK-NEXT: mtfprd f0, r3 4237; CHECK-NEXT: xxmrghd v29, v29, vs0 4238; CHECK-NEXT: xxsldwi vs0, v26, v26, 3 4239; CHECK-NEXT: xscvspdpn f1, vs0 4240; CHECK-NEXT: bl lrintf 4241; CHECK-NEXT: nop 4242; CHECK-NEXT: xxswapd vs0, v26 4243; CHECK-NEXT: mtvsrd v27, r3 4244; CHECK-NEXT: xscvspdpn f1, vs0 4245; CHECK-NEXT: bl lrintf 4246; CHECK-NEXT: nop 4247; CHECK-NEXT: xscvspdpn f1, v26 4248; CHECK-NEXT: mtfprd f0, r3 4249; CHECK-NEXT: xxmrghd v27, vs0, v27 4250; CHECK-NEXT: bl lrintf 4251; CHECK-NEXT: nop 4252; CHECK-NEXT: xxsldwi vs0, v26, v26, 1 4253; CHECK-NEXT: mtvsrd v26, r3 4254; CHECK-NEXT: xscvspdpn f1, vs0 4255; CHECK-NEXT: bl lrintf 4256; CHECK-NEXT: nop 4257; CHECK-NEXT: mtfprd f0, r3 4258; CHECK-NEXT: xxmrghd v26, v26, vs0 4259; CHECK-NEXT: xxsldwi vs0, v28, v28, 3 4260; CHECK-NEXT: xscvspdpn f1, vs0 4261; CHECK-NEXT: bl lrintf 4262; CHECK-NEXT: nop 4263; CHECK-NEXT: xxswapd vs0, v28 4264; CHECK-NEXT: mtvsrd v25, r3 4265; CHECK-NEXT: xscvspdpn f1, vs0 4266; CHECK-NEXT: bl lrintf 4267; CHECK-NEXT: nop 4268; CHECK-NEXT: xscvspdpn f1, v28 4269; CHECK-NEXT: mtfprd f0, r3 4270; CHECK-NEXT: xxmrghd v25, vs0, v25 4271; CHECK-NEXT: bl lrintf 4272; CHECK-NEXT: nop 4273; CHECK-NEXT: xxsldwi vs0, v28, v28, 1 4274; CHECK-NEXT: mtvsrd v28, r3 4275; CHECK-NEXT: xscvspdpn f1, vs0 4276; CHECK-NEXT: bl lrintf 4277; CHECK-NEXT: nop 4278; CHECK-NEXT: mtfprd f0, r3 4279; CHECK-NEXT: xxmrghd v28, v28, vs0 4280; CHECK-NEXT: xxsldwi vs0, v31, v31, 3 4281; CHECK-NEXT: xscvspdpn f1, vs0 4282; CHECK-NEXT: bl lrintf 4283; CHECK-NEXT: nop 4284; CHECK-NEXT: xxswapd vs0, v31 4285; CHECK-NEXT: mtvsrd v24, r3 4286; CHECK-NEXT: xscvspdpn f1, vs0 4287; CHECK-NEXT: bl lrintf 4288; CHECK-NEXT: nop 4289; CHECK-NEXT: xscvspdpn f1, v31 4290; CHECK-NEXT: mtfprd f0, r3 4291; CHECK-NEXT: xxmrghd v24, vs0, v24 4292; CHECK-NEXT: bl lrintf 4293; CHECK-NEXT: nop 4294; CHECK-NEXT: xxsldwi vs0, v31, v31, 1 4295; CHECK-NEXT: mtvsrd v31, r3 4296; CHECK-NEXT: xscvspdpn f1, vs0 4297; CHECK-NEXT: bl lrintf 4298; CHECK-NEXT: nop 4299; CHECK-NEXT: mtfprd f0, r3 4300; CHECK-NEXT: li r3, 160 4301; CHECK-NEXT: vmr v2, v30 4302; CHECK-NEXT: vmr v3, v29 4303; CHECK-NEXT: vmr v7, v28 4304; CHECK-NEXT: vmr v4, v27 4305; CHECK-NEXT: vmr v5, v26 4306; CHECK-NEXT: vmr v6, v25 4307; CHECK-NEXT: vmr v8, v24 4308; CHECK-NEXT: xxmrghd v9, v31, vs0 4309; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 4310; CHECK-NEXT: li r3, 144 4311; CHECK-NEXT: lvx v30, r1, r3 # 16-byte Folded Reload 4312; CHECK-NEXT: li r3, 128 4313; CHECK-NEXT: lvx v29, r1, r3 # 16-byte Folded Reload 4314; CHECK-NEXT: li r3, 112 4315; CHECK-NEXT: lvx v28, r1, r3 # 16-byte Folded Reload 4316; CHECK-NEXT: li r3, 96 4317; CHECK-NEXT: lvx v27, r1, r3 # 16-byte Folded Reload 4318; CHECK-NEXT: li r3, 80 4319; CHECK-NEXT: lvx v26, r1, r3 # 16-byte Folded Reload 4320; CHECK-NEXT: li r3, 64 4321; CHECK-NEXT: lvx v25, r1, r3 # 16-byte Folded Reload 4322; CHECK-NEXT: li r3, 48 4323; CHECK-NEXT: lvx v24, r1, r3 # 16-byte Folded Reload 4324; CHECK-NEXT: addi r1, r1, 176 4325; CHECK-NEXT: ld r0, 16(r1) 4326; CHECK-NEXT: mtlr r0 4327; CHECK-NEXT: blr 4328; 4329; FAST-LABEL: lrint_v16i64_v16f32: 4330; FAST: # %bb.0: 4331; FAST-NEXT: xxsldwi vs0, v2, v2, 3 4332; FAST-NEXT: xxswapd vs1, v2 4333; FAST-NEXT: xscvspdpn f0, vs0 4334; FAST-NEXT: xxsldwi vs2, v2, v2, 1 4335; FAST-NEXT: xxsldwi vs3, v3, v3, 3 4336; FAST-NEXT: xxswapd vs4, v3 4337; FAST-NEXT: xxsldwi vs5, v3, v3, 1 4338; FAST-NEXT: xxsldwi vs6, v4, v4, 3 4339; FAST-NEXT: xxswapd vs7, v4 4340; FAST-NEXT: xxsldwi vs8, v4, v4, 1 4341; FAST-NEXT: xxsldwi vs9, v5, v5, 3 4342; FAST-NEXT: xxswapd vs10, v5 4343; FAST-NEXT: xxsldwi vs11, v5, v5, 1 4344; FAST-NEXT: fctid f0, f0 4345; FAST-NEXT: mffprd r3, f0 4346; FAST-NEXT: xscvspdpn f0, vs1 4347; FAST-NEXT: mtfprd f1, r3 4348; FAST-NEXT: fctid f0, f0 4349; FAST-NEXT: mffprd r3, f0 4350; FAST-NEXT: mtfprd f0, r3 4351; FAST-NEXT: xxmrghd v0, vs0, vs1 4352; FAST-NEXT: xscvspdpn f0, v2 4353; FAST-NEXT: vmr v2, v0 4354; FAST-NEXT: fctid f0, f0 4355; FAST-NEXT: mffprd r3, f0 4356; FAST-NEXT: xscvspdpn f0, vs2 4357; FAST-NEXT: mtfprd f1, r3 4358; FAST-NEXT: fctid f0, f0 4359; FAST-NEXT: mffprd r3, f0 4360; FAST-NEXT: mtfprd f0, r3 4361; FAST-NEXT: xxmrghd v1, vs1, vs0 4362; FAST-NEXT: xscvspdpn f0, vs3 4363; FAST-NEXT: fctid f0, f0 4364; FAST-NEXT: mffprd r3, f0 4365; FAST-NEXT: xscvspdpn f0, vs4 4366; FAST-NEXT: mtfprd f1, r3 4367; FAST-NEXT: fctid f0, f0 4368; FAST-NEXT: mffprd r3, f0 4369; FAST-NEXT: mtfprd f0, r3 4370; FAST-NEXT: xxmrghd v10, vs0, vs1 4371; FAST-NEXT: xscvspdpn f0, v3 4372; FAST-NEXT: vmr v3, v1 4373; FAST-NEXT: fctid f0, f0 4374; FAST-NEXT: mffprd r3, f0 4375; FAST-NEXT: xscvspdpn f0, vs5 4376; FAST-NEXT: mtfprd f1, r3 4377; FAST-NEXT: fctid f0, f0 4378; FAST-NEXT: mffprd r3, f0 4379; FAST-NEXT: mtfprd f0, r3 4380; FAST-NEXT: xxmrghd v11, vs1, vs0 4381; FAST-NEXT: xscvspdpn f0, vs6 4382; FAST-NEXT: fctid f0, f0 4383; FAST-NEXT: mffprd r3, f0 4384; FAST-NEXT: xscvspdpn f0, vs7 4385; FAST-NEXT: mtfprd f1, r3 4386; FAST-NEXT: fctid f0, f0 4387; FAST-NEXT: mffprd r3, f0 4388; FAST-NEXT: mtfprd f0, r3 4389; FAST-NEXT: xxmrghd v6, vs0, vs1 4390; FAST-NEXT: xscvspdpn f0, v4 4391; FAST-NEXT: xscvspdpn f1, vs8 4392; FAST-NEXT: vmr v4, v10 4393; FAST-NEXT: fctid f0, f0 4394; FAST-NEXT: fctid f1, f1 4395; FAST-NEXT: mffprd r3, f0 4396; FAST-NEXT: mtfprd f0, r3 4397; FAST-NEXT: mffprd r3, f1 4398; FAST-NEXT: mtfprd f1, r3 4399; FAST-NEXT: xxmrghd v7, vs0, vs1 4400; FAST-NEXT: xscvspdpn f0, vs9 4401; FAST-NEXT: xscvspdpn f1, vs10 4402; FAST-NEXT: fctid f0, f0 4403; FAST-NEXT: fctid f1, f1 4404; FAST-NEXT: mffprd r3, f0 4405; FAST-NEXT: mtfprd f0, r3 4406; FAST-NEXT: mffprd r3, f1 4407; FAST-NEXT: mtfprd f1, r3 4408; FAST-NEXT: xxmrghd v8, vs1, vs0 4409; FAST-NEXT: xscvspdpn f0, v5 4410; FAST-NEXT: xscvspdpn f1, vs11 4411; FAST-NEXT: vmr v5, v11 4412; FAST-NEXT: fctid f0, f0 4413; FAST-NEXT: fctid f1, f1 4414; FAST-NEXT: mffprd r3, f0 4415; FAST-NEXT: mtfprd f0, r3 4416; FAST-NEXT: mffprd r3, f1 4417; FAST-NEXT: mtfprd f1, r3 4418; FAST-NEXT: xxmrghd v9, vs0, vs1 4419; FAST-NEXT: blr 4420 %a = call <16 x i64> @llvm.lrint.v16i64.v16f32(<16 x float> %x) 4421 ret <16 x i64> %a 4422} 4423declare <16 x i64> @llvm.lrint.v16i64.v16f32(<16 x float>) 4424 4425define <1 x i64> @lrint_v1f64(<1 x double> %x) { 4426; BE-LABEL: lrint_v1f64: 4427; BE: # %bb.0: 4428; BE-NEXT: mflr r0 4429; BE-NEXT: stdu r1, -112(r1) 4430; BE-NEXT: std r0, 128(r1) 4431; BE-NEXT: .cfi_def_cfa_offset 112 4432; BE-NEXT: .cfi_offset lr, 16 4433; BE-NEXT: bl lrint 4434; BE-NEXT: nop 4435; BE-NEXT: addi r1, r1, 112 4436; BE-NEXT: ld r0, 16(r1) 4437; BE-NEXT: mtlr r0 4438; BE-NEXT: blr 4439; 4440; CHECK-LABEL: lrint_v1f64: 4441; CHECK: # %bb.0: 4442; CHECK-NEXT: mflr r0 4443; CHECK-NEXT: stdu r1, -32(r1) 4444; CHECK-NEXT: std r0, 48(r1) 4445; CHECK-NEXT: .cfi_def_cfa_offset 32 4446; CHECK-NEXT: .cfi_offset lr, 16 4447; CHECK-NEXT: bl lrint 4448; CHECK-NEXT: nop 4449; CHECK-NEXT: addi r1, r1, 32 4450; CHECK-NEXT: ld r0, 16(r1) 4451; CHECK-NEXT: mtlr r0 4452; CHECK-NEXT: blr 4453; 4454; FAST-LABEL: lrint_v1f64: 4455; FAST: # %bb.0: 4456; FAST-NEXT: fctid f0, f1 4457; FAST-NEXT: mffprd r3, f0 4458; FAST-NEXT: blr 4459 %a = call <1 x i64> @llvm.lrint.v1i64.v1f64(<1 x double> %x) 4460 ret <1 x i64> %a 4461} 4462declare <1 x i64> @llvm.lrint.v1i64.v1f64(<1 x double>) 4463 4464define <2 x i64> @lrint_v2f64(<2 x double> %x) { 4465; BE-LABEL: lrint_v2f64: 4466; BE: # %bb.0: 4467; BE-NEXT: mflr r0 4468; BE-NEXT: stdu r1, -160(r1) 4469; BE-NEXT: std r0, 176(r1) 4470; BE-NEXT: .cfi_def_cfa_offset 160 4471; BE-NEXT: .cfi_offset lr, 16 4472; BE-NEXT: .cfi_offset v31, -16 4473; BE-NEXT: li r3, 144 4474; BE-NEXT: stxvd2x v31, r1, r3 # 16-byte Folded Spill 4475; BE-NEXT: vmr v31, v2 4476; BE-NEXT: xxlor f1, v31, v31 4477; BE-NEXT: bl lrint 4478; BE-NEXT: nop 4479; BE-NEXT: xxswapd vs1, v31 4480; BE-NEXT: std r3, 128(r1) 4481; BE-NEXT: bl lrint 4482; BE-NEXT: nop 4483; BE-NEXT: std r3, 136(r1) 4484; BE-NEXT: addi r3, r1, 128 4485; BE-NEXT: lxvd2x v2, 0, r3 4486; BE-NEXT: li r3, 144 4487; BE-NEXT: lxvd2x v31, r1, r3 # 16-byte Folded Reload 4488; BE-NEXT: addi r1, r1, 160 4489; BE-NEXT: ld r0, 16(r1) 4490; BE-NEXT: mtlr r0 4491; BE-NEXT: blr 4492; 4493; CHECK-LABEL: lrint_v2f64: 4494; CHECK: # %bb.0: 4495; CHECK-NEXT: mflr r0 4496; CHECK-NEXT: stdu r1, -64(r1) 4497; CHECK-NEXT: std r0, 80(r1) 4498; CHECK-NEXT: .cfi_def_cfa_offset 64 4499; CHECK-NEXT: .cfi_offset lr, 16 4500; CHECK-NEXT: .cfi_offset v31, -16 4501; CHECK-NEXT: li r3, 48 4502; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 4503; CHECK-NEXT: vmr v31, v2 4504; CHECK-NEXT: xxlor f1, v31, v31 4505; CHECK-NEXT: bl lrint 4506; CHECK-NEXT: nop 4507; CHECK-NEXT: xxswapd vs1, v31 4508; CHECK-NEXT: mtvsrd v31, r3 4509; CHECK-NEXT: bl lrint 4510; CHECK-NEXT: nop 4511; CHECK-NEXT: mtfprd f0, r3 4512; CHECK-NEXT: li r3, 48 4513; CHECK-NEXT: xxmrghd v2, v31, vs0 4514; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 4515; CHECK-NEXT: addi r1, r1, 64 4516; CHECK-NEXT: ld r0, 16(r1) 4517; CHECK-NEXT: mtlr r0 4518; CHECK-NEXT: blr 4519; 4520; FAST-LABEL: lrint_v2f64: 4521; FAST: # %bb.0: 4522; FAST-NEXT: xxlor f1, v2, v2 4523; FAST-NEXT: xxswapd vs0, v2 4524; FAST-NEXT: fctid f1, f1 4525; FAST-NEXT: fctid f0, f0 4526; FAST-NEXT: mffprd r3, f1 4527; FAST-NEXT: mtfprd f1, r3 4528; FAST-NEXT: mffprd r3, f0 4529; FAST-NEXT: mtfprd f0, r3 4530; FAST-NEXT: xxmrghd v2, vs1, vs0 4531; FAST-NEXT: blr 4532 %a = call <2 x i64> @llvm.lrint.v2i64.v2f64(<2 x double> %x) 4533 ret <2 x i64> %a 4534} 4535declare <2 x i64> @llvm.lrint.v2i64.v2f64(<2 x double>) 4536 4537define <4 x i64> @lrint_v4f64(<4 x double> %x) { 4538; BE-LABEL: lrint_v4f64: 4539; BE: # %bb.0: 4540; BE-NEXT: mflr r0 4541; BE-NEXT: stdu r1, -192(r1) 4542; BE-NEXT: std r0, 208(r1) 4543; BE-NEXT: .cfi_def_cfa_offset 192 4544; BE-NEXT: .cfi_offset lr, 16 4545; BE-NEXT: .cfi_offset v30, -32 4546; BE-NEXT: .cfi_offset v31, -16 4547; BE-NEXT: li r3, 160 4548; BE-NEXT: stxvd2x v30, r1, r3 # 16-byte Folded Spill 4549; BE-NEXT: vmr v30, v2 4550; BE-NEXT: li r3, 176 4551; BE-NEXT: xxlor f1, v30, v30 4552; BE-NEXT: stxvd2x v31, r1, r3 # 16-byte Folded Spill 4553; BE-NEXT: vmr v31, v3 4554; BE-NEXT: bl lrint 4555; BE-NEXT: nop 4556; BE-NEXT: xxswapd vs1, v30 4557; BE-NEXT: std r3, 128(r1) 4558; BE-NEXT: bl lrint 4559; BE-NEXT: nop 4560; BE-NEXT: xxlor f1, v31, v31 4561; BE-NEXT: std r3, 136(r1) 4562; BE-NEXT: bl lrint 4563; BE-NEXT: nop 4564; BE-NEXT: xxswapd vs1, v31 4565; BE-NEXT: std r3, 144(r1) 4566; BE-NEXT: bl lrint 4567; BE-NEXT: nop 4568; BE-NEXT: std r3, 152(r1) 4569; BE-NEXT: addi r3, r1, 128 4570; BE-NEXT: lxvd2x v2, 0, r3 4571; BE-NEXT: addi r3, r1, 144 4572; BE-NEXT: lxvd2x v3, 0, r3 4573; BE-NEXT: li r3, 176 4574; BE-NEXT: lxvd2x v31, r1, r3 # 16-byte Folded Reload 4575; BE-NEXT: li r3, 160 4576; BE-NEXT: lxvd2x v30, r1, r3 # 16-byte Folded Reload 4577; BE-NEXT: addi r1, r1, 192 4578; BE-NEXT: ld r0, 16(r1) 4579; BE-NEXT: mtlr r0 4580; BE-NEXT: blr 4581; 4582; CHECK-LABEL: lrint_v4f64: 4583; CHECK: # %bb.0: 4584; CHECK-NEXT: mflr r0 4585; CHECK-NEXT: stdu r1, -80(r1) 4586; CHECK-NEXT: std r0, 96(r1) 4587; CHECK-NEXT: .cfi_def_cfa_offset 80 4588; CHECK-NEXT: .cfi_offset lr, 16 4589; CHECK-NEXT: .cfi_offset v30, -32 4590; CHECK-NEXT: .cfi_offset v31, -16 4591; CHECK-NEXT: li r3, 48 4592; CHECK-NEXT: stvx v30, r1, r3 # 16-byte Folded Spill 4593; CHECK-NEXT: vmr v30, v2 4594; CHECK-NEXT: li r3, 64 4595; CHECK-NEXT: xxlor f1, v30, v30 4596; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 4597; CHECK-NEXT: vmr v31, v3 4598; CHECK-NEXT: bl lrint 4599; CHECK-NEXT: nop 4600; CHECK-NEXT: xxswapd vs1, v30 4601; CHECK-NEXT: mtvsrd v30, r3 4602; CHECK-NEXT: bl lrint 4603; CHECK-NEXT: nop 4604; CHECK-NEXT: mtfprd f0, r3 4605; CHECK-NEXT: xxlor f1, v31, v31 4606; CHECK-NEXT: xxmrghd v30, v30, vs0 4607; CHECK-NEXT: bl lrint 4608; CHECK-NEXT: nop 4609; CHECK-NEXT: xxswapd vs1, v31 4610; CHECK-NEXT: mtvsrd v31, r3 4611; CHECK-NEXT: bl lrint 4612; CHECK-NEXT: nop 4613; CHECK-NEXT: mtfprd f0, r3 4614; CHECK-NEXT: li r3, 64 4615; CHECK-NEXT: vmr v2, v30 4616; CHECK-NEXT: xxmrghd v3, v31, vs0 4617; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 4618; CHECK-NEXT: li r3, 48 4619; CHECK-NEXT: lvx v30, r1, r3 # 16-byte Folded Reload 4620; CHECK-NEXT: addi r1, r1, 80 4621; CHECK-NEXT: ld r0, 16(r1) 4622; CHECK-NEXT: mtlr r0 4623; CHECK-NEXT: blr 4624; 4625; FAST-LABEL: lrint_v4f64: 4626; FAST: # %bb.0: 4627; FAST-NEXT: xxswapd vs0, v2 4628; FAST-NEXT: xxlor f2, v2, v2 4629; FAST-NEXT: xxswapd vs1, v3 4630; FAST-NEXT: fctid f0, f0 4631; FAST-NEXT: fctid f2, f2 4632; FAST-NEXT: fctid f1, f1 4633; FAST-NEXT: mffprd r4, f0 4634; FAST-NEXT: xxlor f0, v3, v3 4635; FAST-NEXT: mffprd r3, f2 4636; FAST-NEXT: fctid f0, f0 4637; FAST-NEXT: mtfprd f2, r4 4638; FAST-NEXT: mffprd r5, f0 4639; FAST-NEXT: mtfprd f0, r3 4640; FAST-NEXT: mffprd r3, f1 4641; FAST-NEXT: mtfprd f1, r3 4642; FAST-NEXT: xxmrghd v2, vs0, vs2 4643; FAST-NEXT: mtfprd f0, r5 4644; FAST-NEXT: xxmrghd v3, vs0, vs1 4645; FAST-NEXT: blr 4646 %a = call <4 x i64> @llvm.lrint.v4i64.v4f64(<4 x double> %x) 4647 ret <4 x i64> %a 4648} 4649declare <4 x i64> @llvm.lrint.v4i64.v4f64(<4 x double>) 4650 4651define <8 x i64> @lrint_v8f64(<8 x double> %x) { 4652; BE-LABEL: lrint_v8f64: 4653; BE: # %bb.0: 4654; BE-NEXT: mflr r0 4655; BE-NEXT: stdu r1, -256(r1) 4656; BE-NEXT: std r0, 272(r1) 4657; BE-NEXT: .cfi_def_cfa_offset 256 4658; BE-NEXT: .cfi_offset lr, 16 4659; BE-NEXT: .cfi_offset v28, -64 4660; BE-NEXT: .cfi_offset v29, -48 4661; BE-NEXT: .cfi_offset v30, -32 4662; BE-NEXT: .cfi_offset v31, -16 4663; BE-NEXT: li r3, 192 4664; BE-NEXT: stxvd2x v28, r1, r3 # 16-byte Folded Spill 4665; BE-NEXT: li r3, 208 4666; BE-NEXT: vmr v28, v2 4667; BE-NEXT: xxlor f1, v28, v28 4668; BE-NEXT: stxvd2x v29, r1, r3 # 16-byte Folded Spill 4669; BE-NEXT: li r3, 224 4670; BE-NEXT: vmr v29, v3 4671; BE-NEXT: stxvd2x v30, r1, r3 # 16-byte Folded Spill 4672; BE-NEXT: li r3, 240 4673; BE-NEXT: vmr v30, v4 4674; BE-NEXT: stxvd2x v31, r1, r3 # 16-byte Folded Spill 4675; BE-NEXT: vmr v31, v5 4676; BE-NEXT: bl lrint 4677; BE-NEXT: nop 4678; BE-NEXT: xxswapd vs1, v28 4679; BE-NEXT: std r3, 128(r1) 4680; BE-NEXT: bl lrint 4681; BE-NEXT: nop 4682; BE-NEXT: xxlor f1, v29, v29 4683; BE-NEXT: std r3, 136(r1) 4684; BE-NEXT: bl lrint 4685; BE-NEXT: nop 4686; BE-NEXT: xxswapd vs1, v29 4687; BE-NEXT: std r3, 144(r1) 4688; BE-NEXT: bl lrint 4689; BE-NEXT: nop 4690; BE-NEXT: xxlor f1, v30, v30 4691; BE-NEXT: std r3, 152(r1) 4692; BE-NEXT: bl lrint 4693; BE-NEXT: nop 4694; BE-NEXT: xxswapd vs1, v30 4695; BE-NEXT: std r3, 160(r1) 4696; BE-NEXT: bl lrint 4697; BE-NEXT: nop 4698; BE-NEXT: xxlor f1, v31, v31 4699; BE-NEXT: std r3, 168(r1) 4700; BE-NEXT: bl lrint 4701; BE-NEXT: nop 4702; BE-NEXT: xxswapd vs1, v31 4703; BE-NEXT: std r3, 176(r1) 4704; BE-NEXT: bl lrint 4705; BE-NEXT: nop 4706; BE-NEXT: std r3, 184(r1) 4707; BE-NEXT: addi r3, r1, 128 4708; BE-NEXT: lxvd2x v2, 0, r3 4709; BE-NEXT: addi r3, r1, 144 4710; BE-NEXT: lxvd2x v3, 0, r3 4711; BE-NEXT: addi r3, r1, 160 4712; BE-NEXT: lxvd2x v4, 0, r3 4713; BE-NEXT: addi r3, r1, 176 4714; BE-NEXT: lxvd2x v5, 0, r3 4715; BE-NEXT: li r3, 240 4716; BE-NEXT: lxvd2x v31, r1, r3 # 16-byte Folded Reload 4717; BE-NEXT: li r3, 224 4718; BE-NEXT: lxvd2x v30, r1, r3 # 16-byte Folded Reload 4719; BE-NEXT: li r3, 208 4720; BE-NEXT: lxvd2x v29, r1, r3 # 16-byte Folded Reload 4721; BE-NEXT: li r3, 192 4722; BE-NEXT: lxvd2x v28, r1, r3 # 16-byte Folded Reload 4723; BE-NEXT: addi r1, r1, 256 4724; BE-NEXT: ld r0, 16(r1) 4725; BE-NEXT: mtlr r0 4726; BE-NEXT: blr 4727; 4728; CHECK-LABEL: lrint_v8f64: 4729; CHECK: # %bb.0: 4730; CHECK-NEXT: mflr r0 4731; CHECK-NEXT: stdu r1, -112(r1) 4732; CHECK-NEXT: std r0, 128(r1) 4733; CHECK-NEXT: .cfi_def_cfa_offset 112 4734; CHECK-NEXT: .cfi_offset lr, 16 4735; CHECK-NEXT: .cfi_offset v28, -64 4736; CHECK-NEXT: .cfi_offset v29, -48 4737; CHECK-NEXT: .cfi_offset v30, -32 4738; CHECK-NEXT: .cfi_offset v31, -16 4739; CHECK-NEXT: li r3, 48 4740; CHECK-NEXT: stvx v28, r1, r3 # 16-byte Folded Spill 4741; CHECK-NEXT: li r3, 64 4742; CHECK-NEXT: vmr v28, v2 4743; CHECK-NEXT: stvx v29, r1, r3 # 16-byte Folded Spill 4744; CHECK-NEXT: li r3, 80 4745; CHECK-NEXT: xxlor f1, v28, v28 4746; CHECK-NEXT: vmr v29, v3 4747; CHECK-NEXT: stvx v30, r1, r3 # 16-byte Folded Spill 4748; CHECK-NEXT: li r3, 96 4749; CHECK-NEXT: vmr v30, v4 4750; CHECK-NEXT: stvx v31, r1, r3 # 16-byte Folded Spill 4751; CHECK-NEXT: vmr v31, v5 4752; CHECK-NEXT: bl lrint 4753; CHECK-NEXT: nop 4754; CHECK-NEXT: xxswapd vs1, v28 4755; CHECK-NEXT: mtvsrd v28, r3 4756; CHECK-NEXT: bl lrint 4757; CHECK-NEXT: nop 4758; CHECK-NEXT: mtfprd f0, r3 4759; CHECK-NEXT: xxlor f1, v29, v29 4760; CHECK-NEXT: xxmrghd v28, v28, vs0 4761; CHECK-NEXT: bl lrint 4762; CHECK-NEXT: nop 4763; CHECK-NEXT: xxswapd vs1, v29 4764; CHECK-NEXT: mtvsrd v29, r3 4765; CHECK-NEXT: bl lrint 4766; CHECK-NEXT: nop 4767; CHECK-NEXT: mtfprd f0, r3 4768; CHECK-NEXT: xxlor f1, v30, v30 4769; CHECK-NEXT: xxmrghd v29, v29, vs0 4770; CHECK-NEXT: bl lrint 4771; CHECK-NEXT: nop 4772; CHECK-NEXT: xxswapd vs1, v30 4773; CHECK-NEXT: mtvsrd v30, r3 4774; CHECK-NEXT: bl lrint 4775; CHECK-NEXT: nop 4776; CHECK-NEXT: mtfprd f0, r3 4777; CHECK-NEXT: xxlor f1, v31, v31 4778; CHECK-NEXT: xxmrghd v30, v30, vs0 4779; CHECK-NEXT: bl lrint 4780; CHECK-NEXT: nop 4781; CHECK-NEXT: xxswapd vs1, v31 4782; CHECK-NEXT: mtvsrd v31, r3 4783; CHECK-NEXT: bl lrint 4784; CHECK-NEXT: nop 4785; CHECK-NEXT: mtfprd f0, r3 4786; CHECK-NEXT: li r3, 96 4787; CHECK-NEXT: vmr v4, v30 4788; CHECK-NEXT: vmr v3, v29 4789; CHECK-NEXT: vmr v2, v28 4790; CHECK-NEXT: xxmrghd v5, v31, vs0 4791; CHECK-NEXT: lvx v31, r1, r3 # 16-byte Folded Reload 4792; CHECK-NEXT: li r3, 80 4793; CHECK-NEXT: lvx v30, r1, r3 # 16-byte Folded Reload 4794; CHECK-NEXT: li r3, 64 4795; CHECK-NEXT: lvx v29, r1, r3 # 16-byte Folded Reload 4796; CHECK-NEXT: li r3, 48 4797; CHECK-NEXT: lvx v28, r1, r3 # 16-byte Folded Reload 4798; CHECK-NEXT: addi r1, r1, 112 4799; CHECK-NEXT: ld r0, 16(r1) 4800; CHECK-NEXT: mtlr r0 4801; CHECK-NEXT: blr 4802; 4803; FAST-LABEL: lrint_v8f64: 4804; FAST: # %bb.0: 4805; FAST-NEXT: xxswapd vs0, v2 4806; FAST-NEXT: xxswapd vs1, v3 4807; FAST-NEXT: xxlor f4, v2, v2 4808; FAST-NEXT: xxswapd vs2, v4 4809; FAST-NEXT: xxswapd vs3, v5 4810; FAST-NEXT: fctid f0, f0 4811; FAST-NEXT: fctid f4, f4 4812; FAST-NEXT: mffprd r4, f0 4813; FAST-NEXT: xxlor f0, v3, v3 4814; FAST-NEXT: mffprd r3, f4 4815; FAST-NEXT: fctid f0, f0 4816; FAST-NEXT: mffprd r5, f0 4817; FAST-NEXT: fctid f0, f1 4818; FAST-NEXT: mtfprd f1, r4 4819; FAST-NEXT: mffprd r6, f0 4820; FAST-NEXT: xxlor f0, v4, v4 4821; FAST-NEXT: fctid f0, f0 4822; FAST-NEXT: mtfprd f4, r6 4823; FAST-NEXT: mffprd r7, f0 4824; FAST-NEXT: fctid f0, f2 4825; FAST-NEXT: mtfprd f2, r5 4826; FAST-NEXT: mtfprd f5, r7 4827; FAST-NEXT: mffprd r8, f0 4828; FAST-NEXT: xxlor f0, v5, v5 4829; FAST-NEXT: fctid f0, f0 4830; FAST-NEXT: mtfprd f6, r8 4831; FAST-NEXT: mffprd r9, f0 4832; FAST-NEXT: mtfprd f0, r3 4833; FAST-NEXT: xxmrghd v3, vs2, vs4 4834; FAST-NEXT: xxmrghd v4, vs5, vs6 4835; FAST-NEXT: xxmrghd v2, vs0, vs1 4836; FAST-NEXT: fctid f1, f3 4837; FAST-NEXT: mtfprd f0, r9 4838; FAST-NEXT: mffprd r3, f1 4839; FAST-NEXT: mtfprd f1, r3 4840; FAST-NEXT: xxmrghd v5, vs0, vs1 4841; FAST-NEXT: blr 4842 %a = call <8 x i64> @llvm.lrint.v8i64.v8f64(<8 x double> %x) 4843 ret <8 x i64> %a 4844} 4845declare <8 x i64> @llvm.lrint.v8i64.v8f64(<8 x double>) 4846