brintos

brintos / llvm-project-archived public Read only

0
0
Text · 24.0 KiB · 1572cc0 Raw
727 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown -ppc-vsr-nums-as-vr \3; RUN:   -verify-machineinstrs -ppc-asm-full-reg-names < %s | FileCheck %s4; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-unknown -ppc-vsr-nums-as-vr \5; RUN:   -verify-machineinstrs -ppc-asm-full-reg-names < %s | FileCheck %s \6; RUN:   -check-prefix=CHECK-P87 8; Function Attrs: norecurse nounwind readnone9define fp128 @loadConstant() {10; CHECK-LABEL: loadConstant:11; CHECK:       # %bb.0: # %entry12; CHECK-NEXT:    addis r3, r2, .LCPI0_0@toc@ha13; CHECK-NEXT:    addi r3, r3, .LCPI0_0@toc@l14; CHECK-NEXT:    lxv v2, 0(r3)15; CHECK-NEXT:    blr16;17; CHECK-P8-LABEL: loadConstant:18; CHECK-P8:       # %bb.0: # %entry19; CHECK-P8-NEXT:    addis r3, r2, .LCPI0_0@toc@ha20; CHECK-P8-NEXT:    addi r3, r3, .LCPI0_0@toc@l21; CHECK-P8-NEXT:    lxvd2x vs0, 0, r322; CHECK-P8-NEXT:    xxswapd v2, vs023; CHECK-P8-NEXT:    blr24  entry:25    ret fp128 0xL0000000000000000400140000000000026}27 28; Function Attrs: norecurse nounwind readnone29define fp128 @loadConstant2(fp128 %a, fp128 %b) {30; CHECK-LABEL: loadConstant2:31; CHECK:       # %bb.0: # %entry32; CHECK-NEXT:    xsaddqp v2, v2, v333; CHECK-NEXT:    addis r3, r2, .LCPI1_0@toc@ha34; CHECK-NEXT:    addi r3, r3, .LCPI1_0@toc@l35; CHECK-NEXT:    lxv v3, 0(r3)36; CHECK-NEXT:    xsaddqp v2, v2, v337; CHECK-NEXT:    blr38;39; CHECK-P8-LABEL: loadConstant2:40; CHECK-P8:       # %bb.0: # %entry41; CHECK-P8-NEXT:    mflr r042; CHECK-P8-NEXT:    stdu r1, -32(r1)43; CHECK-P8-NEXT:    std r0, 48(r1)44; CHECK-P8-NEXT:    .cfi_def_cfa_offset 3245; CHECK-P8-NEXT:    .cfi_offset lr, 1646; CHECK-P8-NEXT:    bl __addkf347; CHECK-P8-NEXT:    nop48; CHECK-P8-NEXT:    addis r3, r2, .LCPI1_0@toc@ha49; CHECK-P8-NEXT:    addi r3, r3, .LCPI1_0@toc@l50; CHECK-P8-NEXT:    lxvd2x vs0, 0, r351; CHECK-P8-NEXT:    xxswapd v3, vs052; CHECK-P8-NEXT:    bl __addkf353; CHECK-P8-NEXT:    nop54; CHECK-P8-NEXT:    addi r1, r1, 3255; CHECK-P8-NEXT:    ld r0, 16(r1)56; CHECK-P8-NEXT:    mtlr r057; CHECK-P8-NEXT:    blr58  entry:59    %add = fadd fp128 %a, %b60      %add1 = fadd fp128 %add, 0xL0000000000000000400140000000000061        ret fp128 %add162}63 64; Test passing float128 by value.65; Function Attrs: norecurse nounwind readnone66define signext i32 @fp128Param(fp128 %a) {67; CHECK-LABEL: fp128Param:68; CHECK:       # %bb.0: # %entry69; CHECK-NEXT:    xscvqpswz v2, v270; CHECK-NEXT:    mfvsrwz r3, v271; CHECK-NEXT:    extsw r3, r372; CHECK-NEXT:    blr73;74; CHECK-P8-LABEL: fp128Param:75; CHECK-P8:       # %bb.0: # %entry76; CHECK-P8-NEXT:    mflr r077; CHECK-P8-NEXT:    stdu r1, -32(r1)78; CHECK-P8-NEXT:    std r0, 48(r1)79; CHECK-P8-NEXT:    .cfi_def_cfa_offset 3280; CHECK-P8-NEXT:    .cfi_offset lr, 1681; CHECK-P8-NEXT:    bl __fixkfsi82; CHECK-P8-NEXT:    nop83; CHECK-P8-NEXT:    extsw r3, r384; CHECK-P8-NEXT:    addi r1, r1, 3285; CHECK-P8-NEXT:    ld r0, 16(r1)86; CHECK-P8-NEXT:    mtlr r087; CHECK-P8-NEXT:    blr88entry:89  %conv = fptosi fp128 %a to i3290  ret i32 %conv91}92 93; Test float128 as return value.94; Function Attrs: norecurse nounwind readnone95define fp128 @fp128Return(fp128 %a, fp128 %b) {96; CHECK-LABEL: fp128Return:97; CHECK:       # %bb.0: # %entry98; CHECK-NEXT:    xsaddqp v2, v2, v399; CHECK-NEXT:    blr100;101; CHECK-P8-LABEL: fp128Return:102; CHECK-P8:       # %bb.0: # %entry103; CHECK-P8-NEXT:    mflr r0104; CHECK-P8-NEXT:    stdu r1, -32(r1)105; CHECK-P8-NEXT:    std r0, 48(r1)106; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32107; CHECK-P8-NEXT:    .cfi_offset lr, 16108; CHECK-P8-NEXT:    bl __addkf3109; CHECK-P8-NEXT:    nop110; CHECK-P8-NEXT:    addi r1, r1, 32111; CHECK-P8-NEXT:    ld r0, 16(r1)112; CHECK-P8-NEXT:    mtlr r0113; CHECK-P8-NEXT:    blr114entry:115  %add = fadd fp128 %a, %b116  ret fp128 %add117}118 119; array of float128 types120; Function Attrs: norecurse nounwind readonly121define fp128 @fp128Array(ptr nocapture readonly %farray,122; CHECK-LABEL: fp128Array:123; CHECK:       # %bb.0: # %entry124; CHECK-NEXT:    sldi r4, r4, 4125; CHECK-NEXT:    lxv v2, 0(r3)126; CHECK-NEXT:    add r3, r3, r4127; CHECK-NEXT:    lxv v3, -16(r3)128; CHECK-NEXT:    xsaddqp v2, v2, v3129; CHECK-NEXT:    blr130;131; CHECK-P8-LABEL: fp128Array:132; CHECK-P8:       # %bb.0: # %entry133; CHECK-P8-NEXT:    mflr r0134; CHECK-P8-NEXT:    stdu r1, -32(r1)135; CHECK-P8-NEXT:    std r0, 48(r1)136; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32137; CHECK-P8-NEXT:    .cfi_offset lr, 16138; CHECK-P8-NEXT:    sldi r4, r4, 4139; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3140; CHECK-P8-NEXT:    add r3, r3, r4141; CHECK-P8-NEXT:    addi r3, r3, -16142; CHECK-P8-NEXT:    xxswapd v2, vs0143; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3144; CHECK-P8-NEXT:    xxswapd v3, vs0145; CHECK-P8-NEXT:    bl __addkf3146; CHECK-P8-NEXT:    nop147; CHECK-P8-NEXT:    addi r1, r1, 32148; CHECK-P8-NEXT:    ld r0, 16(r1)149; CHECK-P8-NEXT:    mtlr r0150; CHECK-P8-NEXT:    blr151                         i32 signext %loopcnt, ptr nocapture readnone %sum) {152entry:153  %0 = load fp128, ptr %farray, align 16154  %sub = add nsw i32 %loopcnt, -1155  %idxprom = sext i32 %sub to i64156  %arrayidx1 = getelementptr inbounds fp128, ptr %farray, i64 %idxprom157  %1 = load fp128, ptr %arrayidx1, align 16158  %add = fadd fp128 %0, %1159  ret fp128 %add160}161 162; Up to 12 qualified floating-point arguments can be passed in v2-v13.163; Function to test passing 13 float128 parameters.164; Function Attrs: norecurse nounwind readnone165define fp128 @maxVecParam(fp128 %p1, fp128 %p2, fp128 %p3, fp128 %p4, fp128 %p5,166; CHECK-LABEL: maxVecParam:167; CHECK:       # %bb.0: # %entry168; CHECK-NEXT:    xsaddqp v2, v2, v3169; CHECK-NEXT:    lxv v0, 224(r1)170; CHECK-NEXT:    xsaddqp v2, v2, v4171; CHECK-NEXT:    xsaddqp v2, v2, v5172; CHECK-NEXT:    xsaddqp v2, v2, v6173; CHECK-NEXT:    xsaddqp v2, v2, v7174; CHECK-NEXT:    xsaddqp v2, v2, v8175; CHECK-NEXT:    xsaddqp v2, v2, v9176; CHECK-NEXT:    xsaddqp v2, v2, v10177; CHECK-NEXT:    xsaddqp v2, v2, v11178; CHECK-NEXT:    xsaddqp v2, v2, v12179; CHECK-NEXT:    xsaddqp v2, v2, v13180; CHECK-NEXT:    xssubqp v2, v2, v0181; CHECK-NEXT:    blr182;183; CHECK-P8-LABEL: maxVecParam:184; CHECK-P8:       # %bb.0: # %entry185; CHECK-P8-NEXT:    mflr r0186; CHECK-P8-NEXT:    stdu r1, -224(r1)187; CHECK-P8-NEXT:    std r0, 240(r1)188; CHECK-P8-NEXT:    .cfi_def_cfa_offset 224189; CHECK-P8-NEXT:    .cfi_offset lr, 16190; CHECK-P8-NEXT:    .cfi_offset v21, -176191; CHECK-P8-NEXT:    .cfi_offset v22, -160192; CHECK-P8-NEXT:    .cfi_offset v23, -144193; CHECK-P8-NEXT:    .cfi_offset v24, -128194; CHECK-P8-NEXT:    .cfi_offset v25, -112195; CHECK-P8-NEXT:    .cfi_offset v26, -96196; CHECK-P8-NEXT:    .cfi_offset v27, -80197; CHECK-P8-NEXT:    .cfi_offset v28, -64198; CHECK-P8-NEXT:    .cfi_offset v29, -48199; CHECK-P8-NEXT:    .cfi_offset v30, -32200; CHECK-P8-NEXT:    .cfi_offset v31, -16201; CHECK-P8-NEXT:    li r3, 48202; CHECK-P8-NEXT:    stvx v21, r1, r3 # 16-byte Folded Spill203; CHECK-P8-NEXT:    li r3, 64204; CHECK-P8-NEXT:    stvx v22, r1, r3 # 16-byte Folded Spill205; CHECK-P8-NEXT:    li r3, 80206; CHECK-P8-NEXT:    vmr v22, v4207; CHECK-P8-NEXT:    stvx v23, r1, r3 # 16-byte Folded Spill208; CHECK-P8-NEXT:    li r3, 96209; CHECK-P8-NEXT:    vmr v23, v5210; CHECK-P8-NEXT:    stvx v24, r1, r3 # 16-byte Folded Spill211; CHECK-P8-NEXT:    li r3, 112212; CHECK-P8-NEXT:    vmr v24, v6213; CHECK-P8-NEXT:    stvx v25, r1, r3 # 16-byte Folded Spill214; CHECK-P8-NEXT:    li r3, 128215; CHECK-P8-NEXT:    vmr v25, v7216; CHECK-P8-NEXT:    stvx v26, r1, r3 # 16-byte Folded Spill217; CHECK-P8-NEXT:    li r3, 144218; CHECK-P8-NEXT:    vmr v26, v8219; CHECK-P8-NEXT:    stvx v27, r1, r3 # 16-byte Folded Spill220; CHECK-P8-NEXT:    li r3, 160221; CHECK-P8-NEXT:    vmr v27, v9222; CHECK-P8-NEXT:    stvx v28, r1, r3 # 16-byte Folded Spill223; CHECK-P8-NEXT:    li r3, 176224; CHECK-P8-NEXT:    vmr v28, v10225; CHECK-P8-NEXT:    stvx v29, r1, r3 # 16-byte Folded Spill226; CHECK-P8-NEXT:    li r3, 192227; CHECK-P8-NEXT:    vmr v29, v11228; CHECK-P8-NEXT:    stvx v30, r1, r3 # 16-byte Folded Spill229; CHECK-P8-NEXT:    li r3, 208230; CHECK-P8-NEXT:    vmr v30, v12231; CHECK-P8-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill232; CHECK-P8-NEXT:    addi r3, r1, 448233; CHECK-P8-NEXT:    vmr v31, v13234; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3235; CHECK-P8-NEXT:    xxswapd v21, vs0236; CHECK-P8-NEXT:    bl __addkf3237; CHECK-P8-NEXT:    nop238; CHECK-P8-NEXT:    vmr v3, v22239; CHECK-P8-NEXT:    bl __addkf3240; CHECK-P8-NEXT:    nop241; CHECK-P8-NEXT:    vmr v3, v23242; CHECK-P8-NEXT:    bl __addkf3243; CHECK-P8-NEXT:    nop244; CHECK-P8-NEXT:    vmr v3, v24245; CHECK-P8-NEXT:    bl __addkf3246; CHECK-P8-NEXT:    nop247; CHECK-P8-NEXT:    vmr v3, v25248; CHECK-P8-NEXT:    bl __addkf3249; CHECK-P8-NEXT:    nop250; CHECK-P8-NEXT:    vmr v3, v26251; CHECK-P8-NEXT:    bl __addkf3252; CHECK-P8-NEXT:    nop253; CHECK-P8-NEXT:    vmr v3, v27254; CHECK-P8-NEXT:    bl __addkf3255; CHECK-P8-NEXT:    nop256; CHECK-P8-NEXT:    vmr v3, v28257; CHECK-P8-NEXT:    bl __addkf3258; CHECK-P8-NEXT:    nop259; CHECK-P8-NEXT:    vmr v3, v29260; CHECK-P8-NEXT:    bl __addkf3261; CHECK-P8-NEXT:    nop262; CHECK-P8-NEXT:    vmr v3, v30263; CHECK-P8-NEXT:    bl __addkf3264; CHECK-P8-NEXT:    nop265; CHECK-P8-NEXT:    vmr v3, v31266; CHECK-P8-NEXT:    bl __addkf3267; CHECK-P8-NEXT:    nop268; CHECK-P8-NEXT:    vmr v3, v21269; CHECK-P8-NEXT:    bl __subkf3270; CHECK-P8-NEXT:    nop271; CHECK-P8-NEXT:    li r3, 208272; CHECK-P8-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload273; CHECK-P8-NEXT:    li r3, 192274; CHECK-P8-NEXT:    lvx v30, r1, r3 # 16-byte Folded Reload275; CHECK-P8-NEXT:    li r3, 176276; CHECK-P8-NEXT:    lvx v29, r1, r3 # 16-byte Folded Reload277; CHECK-P8-NEXT:    li r3, 160278; CHECK-P8-NEXT:    lvx v28, r1, r3 # 16-byte Folded Reload279; CHECK-P8-NEXT:    li r3, 144280; CHECK-P8-NEXT:    lvx v27, r1, r3 # 16-byte Folded Reload281; CHECK-P8-NEXT:    li r3, 128282; CHECK-P8-NEXT:    lvx v26, r1, r3 # 16-byte Folded Reload283; CHECK-P8-NEXT:    li r3, 112284; CHECK-P8-NEXT:    lvx v25, r1, r3 # 16-byte Folded Reload285; CHECK-P8-NEXT:    li r3, 96286; CHECK-P8-NEXT:    lvx v24, r1, r3 # 16-byte Folded Reload287; CHECK-P8-NEXT:    li r3, 80288; CHECK-P8-NEXT:    lvx v23, r1, r3 # 16-byte Folded Reload289; CHECK-P8-NEXT:    li r3, 64290; CHECK-P8-NEXT:    lvx v22, r1, r3 # 16-byte Folded Reload291; CHECK-P8-NEXT:    li r3, 48292; CHECK-P8-NEXT:    lvx v21, r1, r3 # 16-byte Folded Reload293; CHECK-P8-NEXT:    addi r1, r1, 224294; CHECK-P8-NEXT:    ld r0, 16(r1)295; CHECK-P8-NEXT:    mtlr r0296; CHECK-P8-NEXT:    blr297                          fp128 %p6, fp128 %p7, fp128 %p8, fp128 %p9, fp128 %p10,298                          fp128 %p11, fp128 %p12, fp128 %p13) {299entry:300  %add = fadd fp128 %p1, %p2301  %add1 = fadd fp128 %add, %p3302  %add2 = fadd fp128 %add1, %p4303  %add3 = fadd fp128 %add2, %p5304  %add4 = fadd fp128 %add3, %p6305  %add5 = fadd fp128 %add4, %p7306  %add6 = fadd fp128 %add5, %p8307  %add7 = fadd fp128 %add6, %p9308  %add8 = fadd fp128 %add7, %p10309  %add9 = fadd fp128 %add8, %p11310  %add10 = fadd fp128 %add9, %p12311  %sub = fsub fp128 %add10, %p13312  ret fp128 %sub313}314 315; Passing a mix of float128 and other type parameters.316; Function Attrs: norecurse nounwind readnone317define fp128 @mixParam_01(fp128 %a, i32 signext %i, fp128 %b) {318; CHECK-LABEL: mixParam_01:319; CHECK:       # %bb.0: # %entry320; CHECK-NEXT:    xsaddqp v2, v2, v3321; CHECK-NEXT:    mtvsrwa v3, r5322; CHECK-NEXT:    xscvsdqp v3, v3323; CHECK-NEXT:    xsaddqp v2, v2, v3324; CHECK-NEXT:    blr325;326; CHECK-P8-LABEL: mixParam_01:327; CHECK-P8:       # %bb.0: # %entry328; CHECK-P8-NEXT:    mflr r0329; CHECK-P8-NEXT:    stdu r1, -80(r1)330; CHECK-P8-NEXT:    std r0, 96(r1)331; CHECK-P8-NEXT:    .cfi_def_cfa_offset 80332; CHECK-P8-NEXT:    .cfi_offset lr, 16333; CHECK-P8-NEXT:    .cfi_offset r30, -16334; CHECK-P8-NEXT:    .cfi_offset v31, -32335; CHECK-P8-NEXT:    li r3, 48336; CHECK-P8-NEXT:    std r30, 64(r1) # 8-byte Folded Spill337; CHECK-P8-NEXT:    mr r30, r5338; CHECK-P8-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill339; CHECK-P8-NEXT:    bl __addkf3340; CHECK-P8-NEXT:    nop341; CHECK-P8-NEXT:    mr r3, r30342; CHECK-P8-NEXT:    vmr v31, v2343; CHECK-P8-NEXT:    bl __floatsikf344; CHECK-P8-NEXT:    nop345; CHECK-P8-NEXT:    vmr v3, v2346; CHECK-P8-NEXT:    vmr v2, v31347; CHECK-P8-NEXT:    bl __addkf3348; CHECK-P8-NEXT:    nop349; CHECK-P8-NEXT:    li r3, 48350; CHECK-P8-NEXT:    ld r30, 64(r1) # 8-byte Folded Reload351; CHECK-P8-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload352; CHECK-P8-NEXT:    addi r1, r1, 80353; CHECK-P8-NEXT:    ld r0, 16(r1)354; CHECK-P8-NEXT:    mtlr r0355; CHECK-P8-NEXT:    blr356entry:357  %add = fadd fp128 %a, %b358  %conv = sitofp i32 %i to fp128359  %add1 = fadd fp128 %add, %conv360  ret fp128 %add1361}362; Function Attrs: norecurse nounwind readnone363define fastcc fp128 @mixParam_01f(fp128 %a, i32 signext %i, fp128 %b) {364; CHECK-LABEL: mixParam_01f:365; CHECK:       # %bb.0: # %entry366; CHECK-NEXT:    xsaddqp v2, v2, v3367; CHECK-NEXT:    mtvsrwa v3, r3368; CHECK-NEXT:    xscvsdqp v3, v3369; CHECK-NEXT:    xsaddqp v2, v2, v3370; CHECK-NEXT:    blr371;372; CHECK-P8-LABEL: mixParam_01f:373; CHECK-P8:       # %bb.0: # %entry374; CHECK-P8-NEXT:    mflr r0375; CHECK-P8-NEXT:    stdu r1, -80(r1)376; CHECK-P8-NEXT:    std r0, 96(r1)377; CHECK-P8-NEXT:    .cfi_def_cfa_offset 80378; CHECK-P8-NEXT:    .cfi_offset lr, 16379; CHECK-P8-NEXT:    .cfi_offset r30, -16380; CHECK-P8-NEXT:    .cfi_offset v31, -32381; CHECK-P8-NEXT:    li r4, 48382; CHECK-P8-NEXT:    std r30, 64(r1) # 8-byte Folded Spill383; CHECK-P8-NEXT:    mr r30, r3384; CHECK-P8-NEXT:    stvx v31, r1, r4 # 16-byte Folded Spill385; CHECK-P8-NEXT:    bl __addkf3386; CHECK-P8-NEXT:    nop387; CHECK-P8-NEXT:    mr r3, r30388; CHECK-P8-NEXT:    vmr v31, v2389; CHECK-P8-NEXT:    bl __floatsikf390; CHECK-P8-NEXT:    nop391; CHECK-P8-NEXT:    vmr v3, v2392; CHECK-P8-NEXT:    vmr v2, v31393; CHECK-P8-NEXT:    bl __addkf3394; CHECK-P8-NEXT:    nop395; CHECK-P8-NEXT:    li r3, 48396; CHECK-P8-NEXT:    ld r30, 64(r1) # 8-byte Folded Reload397; CHECK-P8-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload398; CHECK-P8-NEXT:    addi r1, r1, 80399; CHECK-P8-NEXT:    ld r0, 16(r1)400; CHECK-P8-NEXT:    mtlr r0401; CHECK-P8-NEXT:    blr402entry:403  %add = fadd fp128 %a, %b404  %conv = sitofp i32 %i to fp128405  %add1 = fadd fp128 %add, %conv406  ret fp128 %add1407}408 409; Function Attrs: norecurse nounwind410define fp128 @mixParam_02(fp128 %p1, double %p2, ptr nocapture %p3,411; CHECK-LABEL: mixParam_02:412; CHECK:       # %bb.0: # %entry413; CHECK-NEXT:    lwz r3, 96(r1)414; CHECK-NEXT:    add r4, r7, r9415; CHECK-NEXT:    xscpsgndp v3, f1, f1416; CHECK-NEXT:    add r4, r4, r10417; CHECK-NEXT:    xscvdpqp v3, v3418; CHECK-NEXT:    add r3, r4, r3419; CHECK-NEXT:    clrldi r3, r3, 32420; CHECK-NEXT:    std r3, 0(r6)421; CHECK-NEXT:    lxv v4, 0(r8)422; CHECK-NEXT:    xsaddqp v2, v4, v2423; CHECK-NEXT:    xsaddqp v2, v2, v3424; CHECK-NEXT:    blr425;426; CHECK-P8-LABEL: mixParam_02:427; CHECK-P8:       # %bb.0: # %entry428; CHECK-P8-NEXT:    mflr r0429; CHECK-P8-NEXT:    stdu r1, -80(r1)430; CHECK-P8-NEXT:    std r0, 96(r1)431; CHECK-P8-NEXT:    .cfi_def_cfa_offset 80432; CHECK-P8-NEXT:    .cfi_offset lr, 16433; CHECK-P8-NEXT:    .cfi_offset f31, -8434; CHECK-P8-NEXT:    .cfi_offset v31, -32435; CHECK-P8-NEXT:    li r3, 48436; CHECK-P8-NEXT:    add r4, r7, r9437; CHECK-P8-NEXT:    vmr v3, v2438; CHECK-P8-NEXT:    stfd f31, 72(r1) # 8-byte Folded Spill439; CHECK-P8-NEXT:    fmr f31, f1440; CHECK-P8-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill441; CHECK-P8-NEXT:    lwz r3, 176(r1)442; CHECK-P8-NEXT:    add r4, r4, r10443; CHECK-P8-NEXT:    add r3, r4, r3444; CHECK-P8-NEXT:    clrldi r3, r3, 32445; CHECK-P8-NEXT:    std r3, 0(r6)446; CHECK-P8-NEXT:    lxvd2x vs0, 0, r8447; CHECK-P8-NEXT:    xxswapd v2, vs0448; CHECK-P8-NEXT:    bl __addkf3449; CHECK-P8-NEXT:    nop450; CHECK-P8-NEXT:    fmr f1, f31451; CHECK-P8-NEXT:    vmr v31, v2452; CHECK-P8-NEXT:    bl __extenddfkf2453; CHECK-P8-NEXT:    nop454; CHECK-P8-NEXT:    vmr v3, v2455; CHECK-P8-NEXT:    vmr v2, v31456; CHECK-P8-NEXT:    bl __addkf3457; CHECK-P8-NEXT:    nop458; CHECK-P8-NEXT:    li r3, 48459; CHECK-P8-NEXT:    lfd f31, 72(r1) # 8-byte Folded Reload460; CHECK-P8-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload461; CHECK-P8-NEXT:    addi r1, r1, 80462; CHECK-P8-NEXT:    ld r0, 16(r1)463; CHECK-P8-NEXT:    mtlr r0464; CHECK-P8-NEXT:    blr465                          i16 signext %p4, ptr nocapture readonly %p5,466                          i32 signext %p6, i8 zeroext %p7, i32 zeroext %p8) {467entry:468  %conv = sext i16 %p4 to i32469  %add = add nsw i32 %conv, %p6470  %conv1 = zext i8 %p7 to i32471  %add2 = add nsw i32 %add, %conv1472  %add3 = add i32 %add2, %p8473  %conv4 = zext i32 %add3 to i64474  store i64 %conv4, ptr %p3, align 8475  %0 = load fp128, ptr %p5, align 16476  %add5 = fadd fp128 %0, %p1477  %conv6 = fpext double %p2 to fp128478  %add7 = fadd fp128 %add5, %conv6479  ret fp128 %add7480}481 482; Function Attrs: norecurse nounwind483define fastcc fp128 @mixParam_02f(fp128 %p1, double %p2, ptr nocapture %p3,484; CHECK-LABEL: mixParam_02f:485; CHECK:       # %bb.0: # %entry486; CHECK-NEXT:    add r4, r4, r6487; CHECK-NEXT:    xscpsgndp v3, f1, f1488; CHECK-NEXT:    add r4, r4, r7489; CHECK-NEXT:    xscvdpqp v3, v3490; CHECK-NEXT:    add r4, r4, r8491; CHECK-NEXT:    clrldi r4, r4, 32492; CHECK-NEXT:    std r4, 0(r3)493; CHECK-NEXT:    lxv v4, 0(r5)494; CHECK-NEXT:    xsaddqp v2, v4, v2495; CHECK-NEXT:    xsaddqp v2, v2, v3496; CHECK-NEXT:    blr497;498; CHECK-P8-LABEL: mixParam_02f:499; CHECK-P8:       # %bb.0: # %entry500; CHECK-P8-NEXT:    mflr r0501; CHECK-P8-NEXT:    stdu r1, -80(r1)502; CHECK-P8-NEXT:    std r0, 96(r1)503; CHECK-P8-NEXT:    .cfi_def_cfa_offset 80504; CHECK-P8-NEXT:    .cfi_offset lr, 16505; CHECK-P8-NEXT:    .cfi_offset f31, -8506; CHECK-P8-NEXT:    .cfi_offset v31, -32507; CHECK-P8-NEXT:    add r4, r4, r6508; CHECK-P8-NEXT:    li r9, 48509; CHECK-P8-NEXT:    vmr v3, v2510; CHECK-P8-NEXT:    stfd f31, 72(r1) # 8-byte Folded Spill511; CHECK-P8-NEXT:    fmr f31, f1512; CHECK-P8-NEXT:    add r4, r4, r7513; CHECK-P8-NEXT:    stvx v31, r1, r9 # 16-byte Folded Spill514; CHECK-P8-NEXT:    add r4, r4, r8515; CHECK-P8-NEXT:    clrldi r4, r4, 32516; CHECK-P8-NEXT:    std r4, 0(r3)517; CHECK-P8-NEXT:    lxvd2x vs0, 0, r5518; CHECK-P8-NEXT:    xxswapd v2, vs0519; CHECK-P8-NEXT:    bl __addkf3520; CHECK-P8-NEXT:    nop521; CHECK-P8-NEXT:    fmr f1, f31522; CHECK-P8-NEXT:    vmr v31, v2523; CHECK-P8-NEXT:    bl __extenddfkf2524; CHECK-P8-NEXT:    nop525; CHECK-P8-NEXT:    vmr v3, v2526; CHECK-P8-NEXT:    vmr v2, v31527; CHECK-P8-NEXT:    bl __addkf3528; CHECK-P8-NEXT:    nop529; CHECK-P8-NEXT:    li r3, 48530; CHECK-P8-NEXT:    lfd f31, 72(r1) # 8-byte Folded Reload531; CHECK-P8-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload532; CHECK-P8-NEXT:    addi r1, r1, 80533; CHECK-P8-NEXT:    ld r0, 16(r1)534; CHECK-P8-NEXT:    mtlr r0535; CHECK-P8-NEXT:    blr536                                  i16 signext %p4, ptr nocapture readonly %p5,537                                  i32 signext %p6, i8 zeroext %p7, i32 zeroext %p8) {538entry:539  %conv = sext i16 %p4 to i32540  %add = add nsw i32 %conv, %p6541  %conv1 = zext i8 %p7 to i32542  %add2 = add nsw i32 %add, %conv1543  %add3 = add i32 %add2, %p8544  %conv4 = zext i32 %add3 to i64545  store i64 %conv4, ptr %p3, align 8546  %0 = load fp128, ptr %p5, align 16547  %add5 = fadd fp128 %0, %p1548  %conv6 = fpext double %p2 to fp128549  %add7 = fadd fp128 %add5, %conv6550  ret fp128 %add7551}552 553; Passing a mix of float128 and vector parameters.554; Function Attrs: norecurse nounwind555define void @mixParam_03(fp128 %f1, ptr nocapture %d1, <4 x i32> %vec1,556; CHECK-LABEL: mixParam_03:557; CHECK:       # %bb.0: # %entry558; CHECK-NEXT:    ld r3, 104(r1)559; CHECK-NEXT:    stxv v2, 0(r9)560; CHECK-NEXT:    stxv v3, 0(r3)561; CHECK-NEXT:    mtvsrwa v3, r10562; CHECK-NEXT:    lxv v2, 0(r9)563; CHECK-NEXT:    xscvsdqp v3, v3564; CHECK-NEXT:    xsaddqp v2, v2, v3565; CHECK-NEXT:    xscvqpdp v2, v2566; CHECK-NEXT:    stxsd v2, 0(r5)567; CHECK-NEXT:    blr568;569; CHECK-P8-LABEL: mixParam_03:570; CHECK-P8:       # %bb.0: # %entry571; CHECK-P8-NEXT:    mflr r0572; CHECK-P8-NEXT:    stdu r1, -80(r1)573; CHECK-P8-NEXT:    std r0, 96(r1)574; CHECK-P8-NEXT:    .cfi_def_cfa_offset 80575; CHECK-P8-NEXT:    .cfi_offset lr, 16576; CHECK-P8-NEXT:    .cfi_offset r30, -16577; CHECK-P8-NEXT:    .cfi_offset v31, -32578; CHECK-P8-NEXT:    ld r4, 184(r1)579; CHECK-P8-NEXT:    xxswapd vs0, v2580; CHECK-P8-NEXT:    xxswapd vs1, v3581; CHECK-P8-NEXT:    li r3, 48582; CHECK-P8-NEXT:    std r30, 64(r1) # 8-byte Folded Spill583; CHECK-P8-NEXT:    mr r30, r5584; CHECK-P8-NEXT:    stxvd2x vs0, 0, r9585; CHECK-P8-NEXT:    stvx v31, r1, r3 # 16-byte Folded Spill586; CHECK-P8-NEXT:    mr r3, r10587; CHECK-P8-NEXT:    stxvd2x vs1, 0, r4588; CHECK-P8-NEXT:    lxvd2x vs0, 0, r9589; CHECK-P8-NEXT:    xxswapd v31, vs0590; CHECK-P8-NEXT:    bl __floatsikf591; CHECK-P8-NEXT:    nop592; CHECK-P8-NEXT:    vmr v3, v2593; CHECK-P8-NEXT:    vmr v2, v31594; CHECK-P8-NEXT:    bl __addkf3595; CHECK-P8-NEXT:    nop596; CHECK-P8-NEXT:    bl __trunckfdf2597; CHECK-P8-NEXT:    nop598; CHECK-P8-NEXT:    li r3, 48599; CHECK-P8-NEXT:    stfd f1, 0(r30)600; CHECK-P8-NEXT:    ld r30, 64(r1) # 8-byte Folded Reload601; CHECK-P8-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload602; CHECK-P8-NEXT:    addi r1, r1, 80603; CHECK-P8-NEXT:    ld r0, 16(r1)604; CHECK-P8-NEXT:    mtlr r0605; CHECK-P8-NEXT:    blr606                         ptr nocapture %f2, i32 signext %i1, i8 zeroext %c1,607                         ptr nocapture %vec2) {608entry:609  store fp128 %f1, ptr %f2, align 16610  store <4 x i32> %vec1, ptr %vec2, align 16611  %0 = load fp128, ptr %f2, align 16612  %conv = sitofp i32 %i1 to fp128613  %add = fadd fp128 %0, %conv614  %conv1 = fptrunc fp128 %add to double615  store double %conv1, ptr %d1, align 8616  ret void617}618 619; Function Attrs: norecurse nounwind620define fastcc void @mixParam_03f(fp128 %f1, ptr nocapture %d1, <4 x i32> %vec1,621; CHECK-LABEL: mixParam_03f:622; CHECK:       # %bb.0: # %entry623; CHECK-NEXT:    stxv v2, 0(r4)624; CHECK-NEXT:    stxv v3, 0(r7)625; CHECK-NEXT:    lxv v2, 0(r4)626; CHECK-NEXT:    mtvsrwa v3, r5627; CHECK-NEXT:    xscvsdqp v3, v3628; CHECK-NEXT:    xsaddqp v2, v2, v3629; CHECK-NEXT:    xscvqpdp v2, v2630; CHECK-NEXT:    stxsd v2, 0(r3)631; CHECK-NEXT:    blr632;633; CHECK-P8-LABEL: mixParam_03f:634; CHECK-P8:       # %bb.0: # %entry635; CHECK-P8-NEXT:    mflr r0636; CHECK-P8-NEXT:    stdu r1, -80(r1)637; CHECK-P8-NEXT:    std r0, 96(r1)638; CHECK-P8-NEXT:    .cfi_def_cfa_offset 80639; CHECK-P8-NEXT:    .cfi_offset lr, 16640; CHECK-P8-NEXT:    .cfi_offset r30, -16641; CHECK-P8-NEXT:    .cfi_offset v31, -32642; CHECK-P8-NEXT:    xxswapd vs0, v2643; CHECK-P8-NEXT:    xxswapd vs1, v3644; CHECK-P8-NEXT:    std r30, 64(r1) # 8-byte Folded Spill645; CHECK-P8-NEXT:    li r6, 48646; CHECK-P8-NEXT:    mr r30, r3647; CHECK-P8-NEXT:    mr r3, r5648; CHECK-P8-NEXT:    stxvd2x vs0, 0, r4649; CHECK-P8-NEXT:    stxvd2x vs1, 0, r7650; CHECK-P8-NEXT:    stvx v31, r1, r6 # 16-byte Folded Spill651; CHECK-P8-NEXT:    lxvd2x vs0, 0, r4652; CHECK-P8-NEXT:    xxswapd v31, vs0653; CHECK-P8-NEXT:    bl __floatsikf654; CHECK-P8-NEXT:    nop655; CHECK-P8-NEXT:    vmr v3, v2656; CHECK-P8-NEXT:    vmr v2, v31657; CHECK-P8-NEXT:    bl __addkf3658; CHECK-P8-NEXT:    nop659; CHECK-P8-NEXT:    bl __trunckfdf2660; CHECK-P8-NEXT:    nop661; CHECK-P8-NEXT:    li r3, 48662; CHECK-P8-NEXT:    stfd f1, 0(r30)663; CHECK-P8-NEXT:    ld r30, 64(r1) # 8-byte Folded Reload664; CHECK-P8-NEXT:    lvx v31, r1, r3 # 16-byte Folded Reload665; CHECK-P8-NEXT:    addi r1, r1, 80666; CHECK-P8-NEXT:    ld r0, 16(r1)667; CHECK-P8-NEXT:    mtlr r0668; CHECK-P8-NEXT:    blr669                                 ptr nocapture %f2, i32 signext %i1, i8 zeroext %c1,670                                 ptr nocapture %vec2) {671entry:672  store fp128 %f1, ptr %f2, align 16673  store <4 x i32> %vec1, ptr %vec2, align 16674  %0 = load fp128, ptr %f2, align 16675  %conv = sitofp i32 %i1 to fp128676  %add = fadd fp128 %0, %conv677  %conv1 = fptrunc fp128 %add to double678  store double %conv1, ptr %d1, align 8679  ret void680}681 682; Function Attrs: noinline optnone683define signext i32 @noopt_call_crash() #0 {684; CHECK-LABEL: noopt_call_crash:685; CHECK:       # %bb.0: # %entry686; CHECK-NEXT:    mflr r0687; CHECK-NEXT:    stdu r1, -96(r1)688; CHECK-NEXT:    std r0, 112(r1)689; CHECK-NEXT:    .cfi_def_cfa_offset 96690; CHECK-NEXT:    .cfi_offset lr, 16691; CHECK-NEXT:    bl in692; CHECK-NEXT:    nop693; CHECK-NEXT:    bl out694; CHECK-NEXT:    nop695; CHECK-NEXT:    li r3, 0696; CHECK-NEXT:    addi r1, r1, 96697; CHECK-NEXT:    ld r0, 16(r1)698; CHECK-NEXT:    mtlr r0699; CHECK-NEXT:    blr700;701; CHECK-P8-LABEL: noopt_call_crash:702; CHECK-P8:       # %bb.0: # %entry703; CHECK-P8-NEXT:    mflr r0704; CHECK-P8-NEXT:    stdu r1, -96(r1)705; CHECK-P8-NEXT:    std r0, 112(r1)706; CHECK-P8-NEXT:    .cfi_def_cfa_offset 96707; CHECK-P8-NEXT:    .cfi_offset lr, 16708; CHECK-P8-NEXT:    bl in709; CHECK-P8-NEXT:    nop710; CHECK-P8-NEXT:    bl out711; CHECK-P8-NEXT:    nop712; CHECK-P8-NEXT:    li r3, 0713; CHECK-P8-NEXT:    addi r1, r1, 96714; CHECK-P8-NEXT:    ld r0, 16(r1)715; CHECK-P8-NEXT:    mtlr r0716; CHECK-P8-NEXT:    blr717entry:718  %call = call fp128 @in()719  call void @out(fp128 %call)720  ret i32 0721}722 723declare void @out(fp128)724declare fp128 @in()725 726attributes #0 = { noinline optnone }727