brintos

brintos / llvm-project-archived public Read only

0
0
Text · 65.4 KiB · f8b2861 Raw
2136 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -relocation-model=pic -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \3; RUN:   -ppc-vsr-nums-as-vr -verify-machineinstrs -ppc-asm-full-reg-names < %s \4; RUN:   | FileCheck %s5; RUN: llc -relocation-model=pic -mcpu=pwr8 -mtriple=powerpc64le-unknown-unknown \6; RUN:   -ppc-vsr-nums-as-vr -verify-machineinstrs -ppc-asm-full-reg-names < %s \7; RUN:   | FileCheck %s -check-prefix=CHECK-P88 9@mem = global [5 x i64] [i64 56, i64 63, i64 3, i64 5, i64 6], align 810@umem = global [5 x i64] [i64 560, i64 100, i64 34, i64 2, i64 5], align 811@swMem = global [5 x i32] [i32 5, i32 2, i32 3, i32 4, i32 0], align 412@uwMem = global [5 x i32] [i32 5, i32 2, i32 3, i32 4, i32 0], align 413@uhwMem = global [5 x i16] [i16 5, i16 2, i16 3, i16 4, i16 0], align 214@ubMem = global [5 x i8] c"\05\02\03\04\00", align 115 16; Function Attrs: norecurse nounwind17define void @sdwConv2qp(ptr nocapture %a, i64 %b) nounwind {18; CHECK-LABEL: sdwConv2qp:19; CHECK:       # %bb.0: # %entry20; CHECK-NEXT:    mtvsrd v2, r421; CHECK-NEXT:    xscvsdqp v2, v222; CHECK-NEXT:    stxv v2, 0(r3)23; CHECK-NEXT:    blr24;25; CHECK-P8-LABEL: sdwConv2qp:26; CHECK-P8:       # %bb.0: # %entry27; CHECK-P8-NEXT:    mflr r028; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill29; CHECK-P8-NEXT:    stdu r1, -48(r1)30; CHECK-P8-NEXT:    mr r30, r331; CHECK-P8-NEXT:    mr r3, r432; CHECK-P8-NEXT:    std r0, 64(r1)33; CHECK-P8-NEXT:    bl __floatdikf34; CHECK-P8-NEXT:    nop35; CHECK-P8-NEXT:    xxswapd vs0, v236; CHECK-P8-NEXT:    stxvd2x vs0, 0, r3037; CHECK-P8-NEXT:    addi r1, r1, 4838; CHECK-P8-NEXT:    ld r0, 16(r1)39; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload40; CHECK-P8-NEXT:    mtlr r041; CHECK-P8-NEXT:    blr42entry:43  %conv = sitofp i64 %b to fp12844  store fp128 %conv, ptr %a, align 1645  ret void46 47}48 49; Function Attrs: norecurse nounwind50define void @sdwConv2qp_01(ptr nocapture %a, i128 %b) nounwind {51; CHECK-LABEL: sdwConv2qp_01:52; CHECK:       # %bb.0: # %entry53; CHECK-NEXT:    mflr r054; CHECK-NEXT:    std r30, -16(r1) # 8-byte Folded Spill55; CHECK-NEXT:    stdu r1, -48(r1)56; CHECK-NEXT:    mr r30, r357; CHECK-NEXT:    mr r3, r458; CHECK-NEXT:    mr r4, r559; CHECK-NEXT:    std r0, 64(r1)60; CHECK-NEXT:    bl __floattikf61; CHECK-NEXT:    nop62; CHECK-NEXT:    stxv v2, 0(r30)63; CHECK-NEXT:    addi r1, r1, 4864; CHECK-NEXT:    ld r0, 16(r1)65; CHECK-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload66; CHECK-NEXT:    mtlr r067; CHECK-NEXT:    blr68;69; CHECK-P8-LABEL: sdwConv2qp_01:70; CHECK-P8:       # %bb.0: # %entry71; CHECK-P8-NEXT:    mflr r072; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill73; CHECK-P8-NEXT:    stdu r1, -48(r1)74; CHECK-P8-NEXT:    mr r30, r375; CHECK-P8-NEXT:    mr r3, r476; CHECK-P8-NEXT:    std r0, 64(r1)77; CHECK-P8-NEXT:    mr r4, r578; CHECK-P8-NEXT:    bl __floattikf79; CHECK-P8-NEXT:    nop80; CHECK-P8-NEXT:    xxswapd vs0, v281; CHECK-P8-NEXT:    stxvd2x vs0, 0, r3082; CHECK-P8-NEXT:    addi r1, r1, 4883; CHECK-P8-NEXT:    ld r0, 16(r1)84; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload85; CHECK-P8-NEXT:    mtlr r086; CHECK-P8-NEXT:    blr87entry:88  %conv = sitofp i128 %b to fp12889  store fp128 %conv, ptr %a, align 1690  ret void91 92}93 94; Function Attrs: norecurse nounwind95define void @sdwConv2qp_02(ptr nocapture %a) nounwind {96; CHECK-LABEL: sdwConv2qp_02:97; CHECK:       # %bb.0: # %entry98; CHECK-NEXT:    addis r4, r2, .LC0@toc@ha99; CHECK-NEXT:    ld r4, .LC0@toc@l(r4)100; CHECK-NEXT:    lxsd v2, 16(r4)101; CHECK-NEXT:    xscvsdqp v2, v2102; CHECK-NEXT:    stxv v2, 0(r3)103; CHECK-NEXT:    blr104;105; CHECK-P8-LABEL: sdwConv2qp_02:106; CHECK-P8:       # %bb.0: # %entry107; CHECK-P8-NEXT:    mflr r0108; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill109; CHECK-P8-NEXT:    stdu r1, -48(r1)110; CHECK-P8-NEXT:    mr r30, r3111; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha112; CHECK-P8-NEXT:    std r0, 64(r1)113; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)114; CHECK-P8-NEXT:    ld r3, 16(r3)115; CHECK-P8-NEXT:    bl __floatdikf116; CHECK-P8-NEXT:    nop117; CHECK-P8-NEXT:    xxswapd vs0, v2118; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30119; CHECK-P8-NEXT:    addi r1, r1, 48120; CHECK-P8-NEXT:    ld r0, 16(r1)121; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload122; CHECK-P8-NEXT:    mtlr r0123; CHECK-P8-NEXT:    blr124entry:125  %i = load i64, ptr getelementptr inbounds126                        ([5 x i64], ptr @mem, i64 0, i64 2), align 8127  %conv = sitofp i64 %i to fp128128  store fp128 %conv, ptr %a, align 16129  ret void130 131}132 133; Function Attrs: norecurse nounwind134define void @sdwConv2qp_03(ptr nocapture %a, ptr nocapture readonly %b) nounwind {135; CHECK-LABEL: sdwConv2qp_03:136; CHECK:       # %bb.0: # %entry137; CHECK-NEXT:    lxsd v2, 0(r4)138; CHECK-NEXT:    xscvsdqp v2, v2139; CHECK-NEXT:    stxv v2, 0(r3)140; CHECK-NEXT:    blr141;142; CHECK-P8-LABEL: sdwConv2qp_03:143; CHECK-P8:       # %bb.0: # %entry144; CHECK-P8-NEXT:    mflr r0145; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill146; CHECK-P8-NEXT:    stdu r1, -48(r1)147; CHECK-P8-NEXT:    std r0, 64(r1)148; CHECK-P8-NEXT:    mr r30, r3149; CHECK-P8-NEXT:    ld r3, 0(r4)150; CHECK-P8-NEXT:    bl __floatdikf151; CHECK-P8-NEXT:    nop152; CHECK-P8-NEXT:    xxswapd vs0, v2153; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30154; CHECK-P8-NEXT:    addi r1, r1, 48155; CHECK-P8-NEXT:    ld r0, 16(r1)156; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload157; CHECK-P8-NEXT:    mtlr r0158; CHECK-P8-NEXT:    blr159entry:160  %i = load i64, ptr %b, align 8161  %conv = sitofp i64 %i to fp128162  store fp128 %conv, ptr %a, align 16163  ret void164 165}166 167; Function Attrs: norecurse nounwind168define void @sdwConv2qp_04(ptr nocapture %a, i1 %b) nounwind {169; CHECK-LABEL: sdwConv2qp_04:170; CHECK:       # %bb.0: # %entry171; CHECK-NEXT:    andi. r4, r4, 1172; CHECK-NEXT:    li r4, 0173; CHECK-NEXT:    li r5, -1174; CHECK-NEXT:    iselgt r4, r5, r4175; CHECK-NEXT:    mtvsrwa v2, r4176; CHECK-NEXT:    xscvsdqp v2, v2177; CHECK-NEXT:    stxv v2, 0(r3)178; CHECK-NEXT:    blr179;180; CHECK-P8-LABEL: sdwConv2qp_04:181; CHECK-P8:       # %bb.0: # %entry182; CHECK-P8-NEXT:    mflr r0183; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill184; CHECK-P8-NEXT:    stdu r1, -48(r1)185; CHECK-P8-NEXT:    mr r30, r3186; CHECK-P8-NEXT:    andi. r3, r4, 1187; CHECK-P8-NEXT:    li r3, 0188; CHECK-P8-NEXT:    li r4, -1189; CHECK-P8-NEXT:    std r0, 64(r1)190; CHECK-P8-NEXT:    iselgt r3, r4, r3191; CHECK-P8-NEXT:    bl __floatsikf192; CHECK-P8-NEXT:    nop193; CHECK-P8-NEXT:    xxswapd vs0, v2194; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30195; CHECK-P8-NEXT:    addi r1, r1, 48196; CHECK-P8-NEXT:    ld r0, 16(r1)197; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload198; CHECK-P8-NEXT:    mtlr r0199; CHECK-P8-NEXT:    blr200entry:201  %conv = sitofp i1 %b to fp128202  store fp128 %conv, ptr %a, align 16203  ret void204 205}206 207; Function Attrs: norecurse nounwind208define void @udwConv2qp(ptr nocapture %a, i64 %b) nounwind {209; CHECK-LABEL: udwConv2qp:210; CHECK:       # %bb.0: # %entry211; CHECK-NEXT:    mtvsrd v2, r4212; CHECK-NEXT:    xscvudqp v2, v2213; CHECK-NEXT:    stxv v2, 0(r3)214; CHECK-NEXT:    blr215;216; CHECK-P8-LABEL: udwConv2qp:217; CHECK-P8:       # %bb.0: # %entry218; CHECK-P8-NEXT:    mflr r0219; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill220; CHECK-P8-NEXT:    stdu r1, -48(r1)221; CHECK-P8-NEXT:    mr r30, r3222; CHECK-P8-NEXT:    mr r3, r4223; CHECK-P8-NEXT:    std r0, 64(r1)224; CHECK-P8-NEXT:    bl __floatundikf225; CHECK-P8-NEXT:    nop226; CHECK-P8-NEXT:    xxswapd vs0, v2227; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30228; CHECK-P8-NEXT:    addi r1, r1, 48229; CHECK-P8-NEXT:    ld r0, 16(r1)230; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload231; CHECK-P8-NEXT:    mtlr r0232; CHECK-P8-NEXT:    blr233entry:234  %conv = uitofp i64 %b to fp128235  store fp128 %conv, ptr %a, align 16236  ret void237 238}239 240; Function Attrs: norecurse nounwind241define void @udwConv2qp_01(ptr nocapture %a, i128 %b) nounwind {242; CHECK-LABEL: udwConv2qp_01:243; CHECK:       # %bb.0: # %entry244; CHECK-NEXT:    mflr r0245; CHECK-NEXT:    std r30, -16(r1) # 8-byte Folded Spill246; CHECK-NEXT:    stdu r1, -48(r1)247; CHECK-NEXT:    mr r30, r3248; CHECK-NEXT:    mr r3, r4249; CHECK-NEXT:    mr r4, r5250; CHECK-NEXT:    std r0, 64(r1)251; CHECK-NEXT:    bl __floatuntikf252; CHECK-NEXT:    nop253; CHECK-NEXT:    stxv v2, 0(r30)254; CHECK-NEXT:    addi r1, r1, 48255; CHECK-NEXT:    ld r0, 16(r1)256; CHECK-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload257; CHECK-NEXT:    mtlr r0258; CHECK-NEXT:    blr259;260; CHECK-P8-LABEL: udwConv2qp_01:261; CHECK-P8:       # %bb.0: # %entry262; CHECK-P8-NEXT:    mflr r0263; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill264; CHECK-P8-NEXT:    stdu r1, -48(r1)265; CHECK-P8-NEXT:    mr r30, r3266; CHECK-P8-NEXT:    mr r3, r4267; CHECK-P8-NEXT:    std r0, 64(r1)268; CHECK-P8-NEXT:    mr r4, r5269; CHECK-P8-NEXT:    bl __floatuntikf270; CHECK-P8-NEXT:    nop271; CHECK-P8-NEXT:    xxswapd vs0, v2272; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30273; CHECK-P8-NEXT:    addi r1, r1, 48274; CHECK-P8-NEXT:    ld r0, 16(r1)275; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload276; CHECK-P8-NEXT:    mtlr r0277; CHECK-P8-NEXT:    blr278entry:279  %conv = uitofp i128 %b to fp128280  store fp128 %conv, ptr %a, align 16281  ret void282 283}284 285; Function Attrs: norecurse nounwind286define void @udwConv2qp_02(ptr nocapture %a) nounwind {287; CHECK-LABEL: udwConv2qp_02:288; CHECK:       # %bb.0: # %entry289; CHECK-NEXT:    addis r4, r2, .LC1@toc@ha290; CHECK-NEXT:    ld r4, .LC1@toc@l(r4)291; CHECK-NEXT:    lxsd v2, 32(r4)292; CHECK-NEXT:    xscvudqp v2, v2293; CHECK-NEXT:    stxv v2, 0(r3)294; CHECK-NEXT:    blr295;296; CHECK-P8-LABEL: udwConv2qp_02:297; CHECK-P8:       # %bb.0: # %entry298; CHECK-P8-NEXT:    mflr r0299; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill300; CHECK-P8-NEXT:    stdu r1, -48(r1)301; CHECK-P8-NEXT:    mr r30, r3302; CHECK-P8-NEXT:    addis r3, r2, .LC1@toc@ha303; CHECK-P8-NEXT:    std r0, 64(r1)304; CHECK-P8-NEXT:    ld r3, .LC1@toc@l(r3)305; CHECK-P8-NEXT:    ld r3, 32(r3)306; CHECK-P8-NEXT:    bl __floatundikf307; CHECK-P8-NEXT:    nop308; CHECK-P8-NEXT:    xxswapd vs0, v2309; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30310; CHECK-P8-NEXT:    addi r1, r1, 48311; CHECK-P8-NEXT:    ld r0, 16(r1)312; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload313; CHECK-P8-NEXT:    mtlr r0314; CHECK-P8-NEXT:    blr315entry:316  %i = load i64, ptr getelementptr inbounds317                        ([5 x i64], ptr @umem, i64 0, i64 4), align 8318  %conv = uitofp i64 %i to fp128319  store fp128 %conv, ptr %a, align 16320  ret void321 322}323 324; Function Attrs: norecurse nounwind325define void @udwConv2qp_03(ptr nocapture %a, ptr nocapture readonly %b) nounwind {326; CHECK-LABEL: udwConv2qp_03:327; CHECK:       # %bb.0: # %entry328; CHECK-NEXT:    lxsd v2, 0(r4)329; CHECK-NEXT:    xscvudqp v2, v2330; CHECK-NEXT:    stxv v2, 0(r3)331; CHECK-NEXT:    blr332;333; CHECK-P8-LABEL: udwConv2qp_03:334; CHECK-P8:       # %bb.0: # %entry335; CHECK-P8-NEXT:    mflr r0336; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill337; CHECK-P8-NEXT:    stdu r1, -48(r1)338; CHECK-P8-NEXT:    std r0, 64(r1)339; CHECK-P8-NEXT:    mr r30, r3340; CHECK-P8-NEXT:    ld r3, 0(r4)341; CHECK-P8-NEXT:    bl __floatundikf342; CHECK-P8-NEXT:    nop343; CHECK-P8-NEXT:    xxswapd vs0, v2344; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30345; CHECK-P8-NEXT:    addi r1, r1, 48346; CHECK-P8-NEXT:    ld r0, 16(r1)347; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload348; CHECK-P8-NEXT:    mtlr r0349; CHECK-P8-NEXT:    blr350entry:351  %i = load i64, ptr %b, align 8352  %conv = uitofp i64 %i to fp128353  store fp128 %conv, ptr %a, align 16354  ret void355 356}357 358; Function Attrs: norecurse nounwind359define void @udwConv2qp_04(ptr nocapture %a, i1 %b) nounwind {360; CHECK-LABEL: udwConv2qp_04:361; CHECK:       # %bb.0: # %entry362; CHECK-NEXT:    clrlwi r4, r4, 31363; CHECK-NEXT:    mtvsrwa v2, r4364; CHECK-NEXT:    xscvsdqp v2, v2365; CHECK-NEXT:    stxv v2, 0(r3)366; CHECK-NEXT:    blr367;368; CHECK-P8-LABEL: udwConv2qp_04:369; CHECK-P8:       # %bb.0: # %entry370; CHECK-P8-NEXT:    mflr r0371; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill372; CHECK-P8-NEXT:    stdu r1, -48(r1)373; CHECK-P8-NEXT:    mr r30, r3374; CHECK-P8-NEXT:    clrldi r3, r4, 63375; CHECK-P8-NEXT:    std r0, 64(r1)376; CHECK-P8-NEXT:    bl __floatsikf377; CHECK-P8-NEXT:    nop378; CHECK-P8-NEXT:    xxswapd vs0, v2379; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30380; CHECK-P8-NEXT:    addi r1, r1, 48381; CHECK-P8-NEXT:    ld r0, 16(r1)382; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload383; CHECK-P8-NEXT:    mtlr r0384; CHECK-P8-NEXT:    blr385entry:386  %conv = uitofp i1 %b to fp128387  store fp128 %conv, ptr %a, align 16388  ret void389 390}391 392; Function Attrs: norecurse nounwind393define ptr @sdwConv2qp_testXForm(ptr returned %sink,394; CHECK-LABEL: sdwConv2qp_testXForm:395; CHECK:       # %bb.0: # %entry396; CHECK-NEXT:    lis r5, 1397; CHECK-NEXT:    ori r5, r5, 7797398; CHECK-NEXT:    lxsdx v2, r4, r5399; CHECK-NEXT:    xscvsdqp v2, v2400; CHECK-NEXT:    stxv v2, 0(r3)401; CHECK-NEXT:    blr402;403; CHECK-P8-LABEL: sdwConv2qp_testXForm:404; CHECK-P8:       # %bb.0: # %entry405; CHECK-P8-NEXT:    mflr r0406; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill407; CHECK-P8-NEXT:    stdu r1, -48(r1)408; CHECK-P8-NEXT:    mr r30, r3409; CHECK-P8-NEXT:    lis r3, 1410; CHECK-P8-NEXT:    std r0, 64(r1)411; CHECK-P8-NEXT:    ori r3, r3, 7797412; CHECK-P8-NEXT:    ldx r3, r4, r3413; CHECK-P8-NEXT:    bl __floatdikf414; CHECK-P8-NEXT:    nop415; CHECK-P8-NEXT:    xxswapd vs0, v2416; CHECK-P8-NEXT:    mr r3, r30417; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30418; CHECK-P8-NEXT:    addi r1, r1, 48419; CHECK-P8-NEXT:    ld r0, 16(r1)420; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload421; CHECK-P8-NEXT:    mtlr r0422; CHECK-P8-NEXT:    blr423                                 ptr nocapture readonly %a) nounwind {424entry:425  %add.ptr = getelementptr inbounds i8, ptr %a, i64 73333426  %i = load i64, ptr %add.ptr, align 8427  %conv = sitofp i64 %i to fp128428  store fp128 %conv, ptr %sink, align 16429  ret ptr %sink430 431}432 433; Function Attrs: norecurse nounwind434define ptr @udwConv2qp_testXForm(ptr returned %sink,435; CHECK-LABEL: udwConv2qp_testXForm:436; CHECK:       # %bb.0: # %entry437; CHECK-NEXT:    lis r5, 1438; CHECK-NEXT:    ori r5, r5, 7797439; CHECK-NEXT:    lxsdx v2, r4, r5440; CHECK-NEXT:    xscvudqp v2, v2441; CHECK-NEXT:    stxv v2, 0(r3)442; CHECK-NEXT:    blr443;444; CHECK-P8-LABEL: udwConv2qp_testXForm:445; CHECK-P8:       # %bb.0: # %entry446; CHECK-P8-NEXT:    mflr r0447; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill448; CHECK-P8-NEXT:    stdu r1, -48(r1)449; CHECK-P8-NEXT:    mr r30, r3450; CHECK-P8-NEXT:    lis r3, 1451; CHECK-P8-NEXT:    std r0, 64(r1)452; CHECK-P8-NEXT:    ori r3, r3, 7797453; CHECK-P8-NEXT:    ldx r3, r4, r3454; CHECK-P8-NEXT:    bl __floatundikf455; CHECK-P8-NEXT:    nop456; CHECK-P8-NEXT:    xxswapd vs0, v2457; CHECK-P8-NEXT:    mr r3, r30458; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30459; CHECK-P8-NEXT:    addi r1, r1, 48460; CHECK-P8-NEXT:    ld r0, 16(r1)461; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload462; CHECK-P8-NEXT:    mtlr r0463; CHECK-P8-NEXT:    blr464                                 ptr nocapture readonly %a) nounwind {465entry:466  %add.ptr = getelementptr inbounds i8, ptr %a, i64 73333467  %i = load i64, ptr %add.ptr, align 8468  %conv = uitofp i64 %i to fp128469  store fp128 %conv, ptr %sink, align 16470  ret ptr %sink471 472}473 474; Function Attrs: norecurse nounwind475define void @swConv2qp(ptr nocapture %a, i32 signext %b) nounwind {476; CHECK-LABEL: swConv2qp:477; CHECK:       # %bb.0: # %entry478; CHECK-NEXT:    mtvsrwa v2, r4479; CHECK-NEXT:    xscvsdqp v2, v2480; CHECK-NEXT:    stxv v2, 0(r3)481; CHECK-NEXT:    blr482;483; CHECK-P8-LABEL: swConv2qp:484; CHECK-P8:       # %bb.0: # %entry485; CHECK-P8-NEXT:    mflr r0486; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill487; CHECK-P8-NEXT:    stdu r1, -48(r1)488; CHECK-P8-NEXT:    mr r30, r3489; CHECK-P8-NEXT:    mr r3, r4490; CHECK-P8-NEXT:    std r0, 64(r1)491; CHECK-P8-NEXT:    bl __floatsikf492; CHECK-P8-NEXT:    nop493; CHECK-P8-NEXT:    xxswapd vs0, v2494; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30495; CHECK-P8-NEXT:    addi r1, r1, 48496; CHECK-P8-NEXT:    ld r0, 16(r1)497; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload498; CHECK-P8-NEXT:    mtlr r0499; CHECK-P8-NEXT:    blr500entry:501  %conv = sitofp i32 %b to fp128502  store fp128 %conv, ptr %a, align 16503  ret void504 505}506 507; Function Attrs: norecurse nounwind508define void @swConv2qp_02(ptr nocapture %a, ptr nocapture readonly %b) nounwind {509; CHECK-LABEL: swConv2qp_02:510; CHECK:       # %bb.0: # %entry511; CHECK-NEXT:    lxsiwax v2, 0, r4512; CHECK-NEXT:    xscvsdqp v2, v2513; CHECK-NEXT:    stxv v2, 0(r3)514; CHECK-NEXT:    blr515;516; CHECK-P8-LABEL: swConv2qp_02:517; CHECK-P8:       # %bb.0: # %entry518; CHECK-P8-NEXT:    mflr r0519; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill520; CHECK-P8-NEXT:    stdu r1, -48(r1)521; CHECK-P8-NEXT:    std r0, 64(r1)522; CHECK-P8-NEXT:    mr r30, r3523; CHECK-P8-NEXT:    lwa r3, 0(r4)524; CHECK-P8-NEXT:    bl __floatsikf525; CHECK-P8-NEXT:    nop526; CHECK-P8-NEXT:    xxswapd vs0, v2527; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30528; CHECK-P8-NEXT:    addi r1, r1, 48529; CHECK-P8-NEXT:    ld r0, 16(r1)530; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload531; CHECK-P8-NEXT:    mtlr r0532; CHECK-P8-NEXT:    blr533entry:534  %i = load i32, ptr %b, align 4535  %conv = sitofp i32 %i to fp128536  store fp128 %conv, ptr %a, align 16537  ret void538 539}540 541; Function Attrs: norecurse nounwind542define void @swConv2qp_03(ptr nocapture %a) nounwind {543; CHECK-LABEL: swConv2qp_03:544; CHECK:       # %bb.0: # %entry545; CHECK-NEXT:    addis r4, r2, .LC2@toc@ha546; CHECK-NEXT:    ld r4, .LC2@toc@l(r4)547; CHECK-NEXT:    addi r4, r4, 12548; CHECK-NEXT:    lxsiwax v2, 0, r4549; CHECK-NEXT:    xscvsdqp v2, v2550; CHECK-NEXT:    stxv v2, 0(r3)551; CHECK-NEXT:    blr552;553; CHECK-P8-LABEL: swConv2qp_03:554; CHECK-P8:       # %bb.0: # %entry555; CHECK-P8-NEXT:    mflr r0556; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill557; CHECK-P8-NEXT:    stdu r1, -48(r1)558; CHECK-P8-NEXT:    mr r30, r3559; CHECK-P8-NEXT:    addis r3, r2, .LC2@toc@ha560; CHECK-P8-NEXT:    std r0, 64(r1)561; CHECK-P8-NEXT:    ld r3, .LC2@toc@l(r3)562; CHECK-P8-NEXT:    lwa r3, 12(r3)563; CHECK-P8-NEXT:    bl __floatsikf564; CHECK-P8-NEXT:    nop565; CHECK-P8-NEXT:    xxswapd vs0, v2566; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30567; CHECK-P8-NEXT:    addi r1, r1, 48568; CHECK-P8-NEXT:    ld r0, 16(r1)569; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload570; CHECK-P8-NEXT:    mtlr r0571; CHECK-P8-NEXT:    blr572entry:573  %i = load i32, ptr getelementptr inbounds574                        ([5 x i32], ptr @swMem, i64 0, i64 3), align 4575  %conv = sitofp i32 %i to fp128576  store fp128 %conv, ptr %a, align 16577  ret void578 579}580 581; Function Attrs: norecurse nounwind582define void @uwConv2qp(ptr nocapture %a, i32 zeroext %b) nounwind {583; CHECK-LABEL: uwConv2qp:584; CHECK:       # %bb.0: # %entry585; CHECK-NEXT:    mtvsrwz v2, r4586; CHECK-NEXT:    xscvudqp v2, v2587; CHECK-NEXT:    stxv v2, 0(r3)588; CHECK-NEXT:    blr589;590; CHECK-P8-LABEL: uwConv2qp:591; CHECK-P8:       # %bb.0: # %entry592; CHECK-P8-NEXT:    mflr r0593; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill594; CHECK-P8-NEXT:    stdu r1, -48(r1)595; CHECK-P8-NEXT:    mr r30, r3596; CHECK-P8-NEXT:    mr r3, r4597; CHECK-P8-NEXT:    std r0, 64(r1)598; CHECK-P8-NEXT:    bl __floatunsikf599; CHECK-P8-NEXT:    nop600; CHECK-P8-NEXT:    xxswapd vs0, v2601; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30602; CHECK-P8-NEXT:    addi r1, r1, 48603; CHECK-P8-NEXT:    ld r0, 16(r1)604; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload605; CHECK-P8-NEXT:    mtlr r0606; CHECK-P8-NEXT:    blr607entry:608  %conv = uitofp i32 %b to fp128609  store fp128 %conv, ptr %a, align 16610  ret void611 612}613 614; Function Attrs: norecurse nounwind615define void @uwConv2qp_02(ptr nocapture %a, ptr nocapture readonly %b) nounwind {616; CHECK-LABEL: uwConv2qp_02:617; CHECK:       # %bb.0: # %entry618; CHECK-NEXT:    lxsiwzx v2, 0, r4619; CHECK-NEXT:    xscvudqp v2, v2620; CHECK-NEXT:    stxv v2, 0(r3)621; CHECK-NEXT:    blr622;623; CHECK-P8-LABEL: uwConv2qp_02:624; CHECK-P8:       # %bb.0: # %entry625; CHECK-P8-NEXT:    mflr r0626; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill627; CHECK-P8-NEXT:    stdu r1, -48(r1)628; CHECK-P8-NEXT:    std r0, 64(r1)629; CHECK-P8-NEXT:    mr r30, r3630; CHECK-P8-NEXT:    lwz r3, 0(r4)631; CHECK-P8-NEXT:    bl __floatunsikf632; CHECK-P8-NEXT:    nop633; CHECK-P8-NEXT:    xxswapd vs0, v2634; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30635; CHECK-P8-NEXT:    addi r1, r1, 48636; CHECK-P8-NEXT:    ld r0, 16(r1)637; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload638; CHECK-P8-NEXT:    mtlr r0639; CHECK-P8-NEXT:    blr640entry:641  %i = load i32, ptr %b, align 4642  %conv = uitofp i32 %i to fp128643  store fp128 %conv, ptr %a, align 16644  ret void645 646}647 648; Function Attrs: norecurse nounwind649define void @uwConv2qp_03(ptr nocapture %a) nounwind {650; CHECK-LABEL: uwConv2qp_03:651; CHECK:       # %bb.0: # %entry652; CHECK-NEXT:    addis r4, r2, .LC3@toc@ha653; CHECK-NEXT:    ld r4, .LC3@toc@l(r4)654; CHECK-NEXT:    addi r4, r4, 12655; CHECK-NEXT:    lxsiwzx v2, 0, r4656; CHECK-NEXT:    xscvudqp v2, v2657; CHECK-NEXT:    stxv v2, 0(r3)658; CHECK-NEXT:    blr659;660; CHECK-P8-LABEL: uwConv2qp_03:661; CHECK-P8:       # %bb.0: # %entry662; CHECK-P8-NEXT:    mflr r0663; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill664; CHECK-P8-NEXT:    stdu r1, -48(r1)665; CHECK-P8-NEXT:    mr r30, r3666; CHECK-P8-NEXT:    addis r3, r2, .LC3@toc@ha667; CHECK-P8-NEXT:    std r0, 64(r1)668; CHECK-P8-NEXT:    ld r3, .LC3@toc@l(r3)669; CHECK-P8-NEXT:    lwz r3, 12(r3)670; CHECK-P8-NEXT:    bl __floatunsikf671; CHECK-P8-NEXT:    nop672; CHECK-P8-NEXT:    xxswapd vs0, v2673; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30674; CHECK-P8-NEXT:    addi r1, r1, 48675; CHECK-P8-NEXT:    ld r0, 16(r1)676; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload677; CHECK-P8-NEXT:    mtlr r0678; CHECK-P8-NEXT:    blr679entry:680  %i = load i32, ptr getelementptr inbounds681                        ([5 x i32], ptr @uwMem, i64 0, i64 3), align 4682  %conv = uitofp i32 %i to fp128683  store fp128 %conv, ptr %a, align 16684  ret void685 686}687 688; Function Attrs: norecurse nounwind689define void @uwConv2qp_04(ptr nocapture %a,690; CHECK-LABEL: uwConv2qp_04:691; CHECK:       # %bb.0: # %entry692; CHECK-NEXT:    lwz r5, 0(r5)693; CHECK-NEXT:    add r4, r5, r4694; CHECK-NEXT:    mtvsrwz v2, r4695; CHECK-NEXT:    xscvudqp v2, v2696; CHECK-NEXT:    stxv v2, 0(r3)697; CHECK-NEXT:    blr698;699; CHECK-P8-LABEL: uwConv2qp_04:700; CHECK-P8:       # %bb.0: # %entry701; CHECK-P8-NEXT:    mflr r0702; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill703; CHECK-P8-NEXT:    stdu r1, -48(r1)704; CHECK-P8-NEXT:    std r0, 64(r1)705; CHECK-P8-NEXT:    mr r30, r3706; CHECK-P8-NEXT:    lwz r3, 0(r5)707; CHECK-P8-NEXT:    add r3, r3, r4708; CHECK-P8-NEXT:    clrldi r3, r3, 32709; CHECK-P8-NEXT:    bl __floatunsikf710; CHECK-P8-NEXT:    nop711; CHECK-P8-NEXT:    xxswapd vs0, v2712; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30713; CHECK-P8-NEXT:    addi r1, r1, 48714; CHECK-P8-NEXT:    ld r0, 16(r1)715; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload716; CHECK-P8-NEXT:    mtlr r0717; CHECK-P8-NEXT:    blr718                          i32 zeroext %b, ptr nocapture readonly %c) nounwind {719entry:720  %i = load i32, ptr %c, align 4721  %add = add i32 %i, %b722  %conv = uitofp i32 %add to fp128723  store fp128 %conv, ptr %a, align 16724  ret void725 726}727 728; Function Attrs: norecurse nounwind729define void @uhwConv2qp(ptr nocapture %a, i16 zeroext %b) nounwind {730; CHECK-LABEL: uhwConv2qp:731; CHECK:       # %bb.0: # %entry732; CHECK-NEXT:    mtvsrwz v2, r4733; CHECK-NEXT:    xscvudqp v2, v2734; CHECK-NEXT:    stxv v2, 0(r3)735; CHECK-NEXT:    blr736;737; CHECK-P8-LABEL: uhwConv2qp:738; CHECK-P8:       # %bb.0: # %entry739; CHECK-P8-NEXT:    mflr r0740; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill741; CHECK-P8-NEXT:    stdu r1, -48(r1)742; CHECK-P8-NEXT:    mr r30, r3743; CHECK-P8-NEXT:    mr r3, r4744; CHECK-P8-NEXT:    std r0, 64(r1)745; CHECK-P8-NEXT:    bl __floatunsikf746; CHECK-P8-NEXT:    nop747; CHECK-P8-NEXT:    xxswapd vs0, v2748; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30749; CHECK-P8-NEXT:    addi r1, r1, 48750; CHECK-P8-NEXT:    ld r0, 16(r1)751; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload752; CHECK-P8-NEXT:    mtlr r0753; CHECK-P8-NEXT:    blr754entry:755  %conv = uitofp i16 %b to fp128756  store fp128 %conv, ptr %a, align 16757  ret void758 759 760}761 762; Function Attrs: norecurse nounwind763define void @uhwConv2qp_02(ptr nocapture %a, ptr nocapture readonly %b) nounwind {764; CHECK-LABEL: uhwConv2qp_02:765; CHECK:       # %bb.0: # %entry766; CHECK-NEXT:    lxsihzx v2, 0, r4767; CHECK-NEXT:    xscvudqp v2, v2768; CHECK-NEXT:    stxv v2, 0(r3)769; CHECK-NEXT:    blr770;771; CHECK-P8-LABEL: uhwConv2qp_02:772; CHECK-P8:       # %bb.0: # %entry773; CHECK-P8-NEXT:    mflr r0774; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill775; CHECK-P8-NEXT:    stdu r1, -48(r1)776; CHECK-P8-NEXT:    std r0, 64(r1)777; CHECK-P8-NEXT:    mr r30, r3778; CHECK-P8-NEXT:    lhz r3, 0(r4)779; CHECK-P8-NEXT:    bl __floatunsikf780; CHECK-P8-NEXT:    nop781; CHECK-P8-NEXT:    xxswapd vs0, v2782; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30783; CHECK-P8-NEXT:    addi r1, r1, 48784; CHECK-P8-NEXT:    ld r0, 16(r1)785; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload786; CHECK-P8-NEXT:    mtlr r0787; CHECK-P8-NEXT:    blr788entry:789  %i = load i16, ptr %b, align 2790  %conv = uitofp i16 %i to fp128791  store fp128 %conv, ptr %a, align 16792  ret void793 794}795 796; Function Attrs: norecurse nounwind797define void @uhwConv2qp_03(ptr nocapture %a) nounwind {798; CHECK-LABEL: uhwConv2qp_03:799; CHECK:       # %bb.0: # %entry800; CHECK-NEXT:    addis r4, r2, .LC4@toc@ha801; CHECK-NEXT:    ld r4, .LC4@toc@l(r4)802; CHECK-NEXT:    addi r4, r4, 6803; CHECK-NEXT:    lxsihzx v2, 0, r4804; CHECK-NEXT:    xscvudqp v2, v2805; CHECK-NEXT:    stxv v2, 0(r3)806; CHECK-NEXT:    blr807;808; CHECK-P8-LABEL: uhwConv2qp_03:809; CHECK-P8:       # %bb.0: # %entry810; CHECK-P8-NEXT:    mflr r0811; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill812; CHECK-P8-NEXT:    stdu r1, -48(r1)813; CHECK-P8-NEXT:    mr r30, r3814; CHECK-P8-NEXT:    addis r3, r2, .LC4@toc@ha815; CHECK-P8-NEXT:    std r0, 64(r1)816; CHECK-P8-NEXT:    ld r3, .LC4@toc@l(r3)817; CHECK-P8-NEXT:    lhz r3, 6(r3)818; CHECK-P8-NEXT:    bl __floatunsikf819; CHECK-P8-NEXT:    nop820; CHECK-P8-NEXT:    xxswapd vs0, v2821; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30822; CHECK-P8-NEXT:    addi r1, r1, 48823; CHECK-P8-NEXT:    ld r0, 16(r1)824; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload825; CHECK-P8-NEXT:    mtlr r0826; CHECK-P8-NEXT:    blr827entry:828  %i = load i16, ptr getelementptr inbounds829                        ([5 x i16], ptr @uhwMem, i64 0, i64 3), align 2830  %conv = uitofp i16 %i to fp128831  store fp128 %conv, ptr %a, align 16832  ret void833 834}835 836; Function Attrs: norecurse nounwind837define void @uhwConv2qp_04(ptr nocapture %a, i16 zeroext %b,838; CHECK-LABEL: uhwConv2qp_04:839; CHECK:       # %bb.0: # %entry840; CHECK-NEXT:    lhz r5, 0(r5)841; CHECK-NEXT:    add r4, r5, r4842; CHECK-NEXT:    mtvsrwa v2, r4843; CHECK-NEXT:    xscvsdqp v2, v2844; CHECK-NEXT:    stxv v2, 0(r3)845; CHECK-NEXT:    blr846;847; CHECK-P8-LABEL: uhwConv2qp_04:848; CHECK-P8:       # %bb.0: # %entry849; CHECK-P8-NEXT:    mflr r0850; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill851; CHECK-P8-NEXT:    stdu r1, -48(r1)852; CHECK-P8-NEXT:    std r0, 64(r1)853; CHECK-P8-NEXT:    mr r30, r3854; CHECK-P8-NEXT:    lhz r3, 0(r5)855; CHECK-P8-NEXT:    add r3, r3, r4856; CHECK-P8-NEXT:    clrldi r3, r3, 32857; CHECK-P8-NEXT:    bl __floatsikf858; CHECK-P8-NEXT:    nop859; CHECK-P8-NEXT:    xxswapd vs0, v2860; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30861; CHECK-P8-NEXT:    addi r1, r1, 48862; CHECK-P8-NEXT:    ld r0, 16(r1)863; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload864; CHECK-P8-NEXT:    mtlr r0865; CHECK-P8-NEXT:    blr866                           ptr nocapture readonly %c) nounwind {867entry:868  %conv = zext i16 %b to i32869  %i = load i16, ptr %c, align 2870  %conv1 = zext i16 %i to i32871  %add = add nuw nsw i32 %conv1, %conv872  %conv2 = sitofp i32 %add to fp128873  store fp128 %conv2, ptr %a, align 16874  ret void875 876}877 878; Function Attrs: norecurse nounwind879define void @ubConv2qp(ptr nocapture %a, i8 zeroext %b) nounwind {880; CHECK-LABEL: ubConv2qp:881; CHECK:       # %bb.0: # %entry882; CHECK-NEXT:    mtvsrwz v2, r4883; CHECK-NEXT:    xscvudqp v2, v2884; CHECK-NEXT:    stxv v2, 0(r3)885; CHECK-NEXT:    blr886;887; CHECK-P8-LABEL: ubConv2qp:888; CHECK-P8:       # %bb.0: # %entry889; CHECK-P8-NEXT:    mflr r0890; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill891; CHECK-P8-NEXT:    stdu r1, -48(r1)892; CHECK-P8-NEXT:    mr r30, r3893; CHECK-P8-NEXT:    mr r3, r4894; CHECK-P8-NEXT:    std r0, 64(r1)895; CHECK-P8-NEXT:    bl __floatunsikf896; CHECK-P8-NEXT:    nop897; CHECK-P8-NEXT:    xxswapd vs0, v2898; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30899; CHECK-P8-NEXT:    addi r1, r1, 48900; CHECK-P8-NEXT:    ld r0, 16(r1)901; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload902; CHECK-P8-NEXT:    mtlr r0903; CHECK-P8-NEXT:    blr904entry:905  %conv = uitofp i8 %b to fp128906  store fp128 %conv, ptr %a, align 16907  ret void908 909}910 911; Function Attrs: norecurse nounwind912define void @ubConv2qp_02(ptr nocapture %a, ptr nocapture readonly %b) nounwind {913; CHECK-LABEL: ubConv2qp_02:914; CHECK:       # %bb.0: # %entry915; CHECK-NEXT:    lxsibzx v2, 0, r4916; CHECK-NEXT:    xscvudqp v2, v2917; CHECK-NEXT:    stxv v2, 0(r3)918; CHECK-NEXT:    blr919;920; CHECK-P8-LABEL: ubConv2qp_02:921; CHECK-P8:       # %bb.0: # %entry922; CHECK-P8-NEXT:    mflr r0923; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill924; CHECK-P8-NEXT:    stdu r1, -48(r1)925; CHECK-P8-NEXT:    std r0, 64(r1)926; CHECK-P8-NEXT:    mr r30, r3927; CHECK-P8-NEXT:    lbz r3, 0(r4)928; CHECK-P8-NEXT:    bl __floatunsikf929; CHECK-P8-NEXT:    nop930; CHECK-P8-NEXT:    xxswapd vs0, v2931; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30932; CHECK-P8-NEXT:    addi r1, r1, 48933; CHECK-P8-NEXT:    ld r0, 16(r1)934; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload935; CHECK-P8-NEXT:    mtlr r0936; CHECK-P8-NEXT:    blr937entry:938  %i = load i8, ptr %b, align 1939  %conv = uitofp i8 %i to fp128940  store fp128 %conv, ptr %a, align 16941  ret void942 943}944 945; Function Attrs: norecurse nounwind946define void @ubConv2qp_03(ptr nocapture %a) nounwind {947; CHECK-LABEL: ubConv2qp_03:948; CHECK:       # %bb.0: # %entry949; CHECK-NEXT:    addis r4, r2, .LC5@toc@ha950; CHECK-NEXT:    ld r4, .LC5@toc@l(r4)951; CHECK-NEXT:    addi r4, r4, 2952; CHECK-NEXT:    lxsibzx v2, 0, r4953; CHECK-NEXT:    xscvudqp v2, v2954; CHECK-NEXT:    stxv v2, 0(r3)955; CHECK-NEXT:    blr956;957; CHECK-P8-LABEL: ubConv2qp_03:958; CHECK-P8:       # %bb.0: # %entry959; CHECK-P8-NEXT:    mflr r0960; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill961; CHECK-P8-NEXT:    stdu r1, -48(r1)962; CHECK-P8-NEXT:    mr r30, r3963; CHECK-P8-NEXT:    addis r3, r2, .LC5@toc@ha964; CHECK-P8-NEXT:    std r0, 64(r1)965; CHECK-P8-NEXT:    ld r3, .LC5@toc@l(r3)966; CHECK-P8-NEXT:    lbz r3, 2(r3)967; CHECK-P8-NEXT:    bl __floatunsikf968; CHECK-P8-NEXT:    nop969; CHECK-P8-NEXT:    xxswapd vs0, v2970; CHECK-P8-NEXT:    stxvd2x vs0, 0, r30971; CHECK-P8-NEXT:    addi r1, r1, 48972; CHECK-P8-NEXT:    ld r0, 16(r1)973; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload974; CHECK-P8-NEXT:    mtlr r0975; CHECK-P8-NEXT:    blr976entry:977  %i = load i8, ptr getelementptr inbounds978                      ([5 x i8], ptr @ubMem, i64 0, i64 2), align 1979  %conv = uitofp i8 %i to fp128980  store fp128 %conv, ptr %a, align 16981  ret void982 983}984 985; Function Attrs: norecurse nounwind986define void @ubConv2qp_04(ptr nocapture %a, i8 zeroext %b,987; CHECK-LABEL: ubConv2qp_04:988; CHECK:       # %bb.0: # %entry989; CHECK-NEXT:    lbz r5, 0(r5)990; CHECK-NEXT:    add r4, r5, r4991; CHECK-NEXT:    mtvsrwa v2, r4992; CHECK-NEXT:    xscvsdqp v2, v2993; CHECK-NEXT:    stxv v2, 0(r3)994; CHECK-NEXT:    blr995;996; CHECK-P8-LABEL: ubConv2qp_04:997; CHECK-P8:       # %bb.0: # %entry998; CHECK-P8-NEXT:    mflr r0999; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1000; CHECK-P8-NEXT:    stdu r1, -48(r1)1001; CHECK-P8-NEXT:    std r0, 64(r1)1002; CHECK-P8-NEXT:    mr r30, r31003; CHECK-P8-NEXT:    lbz r3, 0(r5)1004; CHECK-P8-NEXT:    add r3, r3, r41005; CHECK-P8-NEXT:    clrldi r3, r3, 321006; CHECK-P8-NEXT:    bl __floatsikf1007; CHECK-P8-NEXT:    nop1008; CHECK-P8-NEXT:    xxswapd vs0, v21009; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301010; CHECK-P8-NEXT:    addi r1, r1, 481011; CHECK-P8-NEXT:    ld r0, 16(r1)1012; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1013; CHECK-P8-NEXT:    mtlr r01014; CHECK-P8-NEXT:    blr1015                          ptr nocapture readonly %c) nounwind {1016entry:1017  %conv = zext i8 %b to i321018  %i = load i8, ptr %c, align 11019  %conv1 = zext i8 %i to i321020  %add = add nuw nsw i32 %conv1, %conv1021  %conv2 = sitofp i32 %add to fp1281022  store fp128 %conv2, ptr %a, align 161023  ret void1024 1025}1026 1027;  Convert QP to DP1028 1029@f128Array = global [4 x fp128]1030                      [fp128 0xL00000000000000004004C00000000000,1031                       fp128 0xLF000000000000000400808AB851EB851,1032                       fp128 0xL5000000000000000400E0C26324C8366,1033                       fp128 0xL8000000000000000400A24E2E147AE14], align 161034@f128global = global fp128 0xL300000000000000040089CA8F5C28F5C, align 161035 1036; Function Attrs: norecurse nounwind readonly1037define double @qpConv2dp(ptr nocapture readonly %a) nounwind {1038; CHECK-LABEL: qpConv2dp:1039; CHECK:       # %bb.0: # %entry1040; CHECK-NEXT:    lxv v2, 0(r3)1041; CHECK-NEXT:    xscvqpdp v2, v21042; CHECK-NEXT:    xscpsgndp f1, v2, v21043; CHECK-NEXT:    blr1044;1045; CHECK-P8-LABEL: qpConv2dp:1046; CHECK-P8:       # %bb.0: # %entry1047; CHECK-P8-NEXT:    mflr r01048; CHECK-P8-NEXT:    stdu r1, -32(r1)1049; CHECK-P8-NEXT:    std r0, 48(r1)1050; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31051; CHECK-P8-NEXT:    xxswapd v2, vs01052; CHECK-P8-NEXT:    bl __trunckfdf21053; CHECK-P8-NEXT:    nop1054; CHECK-P8-NEXT:    addi r1, r1, 321055; CHECK-P8-NEXT:    ld r0, 16(r1)1056; CHECK-P8-NEXT:    mtlr r01057; CHECK-P8-NEXT:    blr1058entry:1059  %i = load fp128, ptr %a, align 161060  %conv = fptrunc fp128 %i to double1061  ret double %conv1062}1063 1064; Function Attrs: norecurse nounwind1065define void @qpConv2dp_02(ptr nocapture %res) nounwind {1066; CHECK-LABEL: qpConv2dp_02:1067; CHECK:       # %bb.0: # %entry1068; CHECK-NEXT:    addis r4, r2, .LC6@toc@ha1069; CHECK-NEXT:    ld r4, .LC6@toc@l(r4)1070; CHECK-NEXT:    lxv v2, 0(r4)1071; CHECK-NEXT:    xscvqpdp v2, v21072; CHECK-NEXT:    stxsd v2, 0(r3)1073; CHECK-NEXT:    blr1074;1075; CHECK-P8-LABEL: qpConv2dp_02:1076; CHECK-P8:       # %bb.0: # %entry1077; CHECK-P8-NEXT:    mflr r01078; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1079; CHECK-P8-NEXT:    stdu r1, -48(r1)1080; CHECK-P8-NEXT:    mr r30, r31081; CHECK-P8-NEXT:    addis r3, r2, .LC6@toc@ha1082; CHECK-P8-NEXT:    std r0, 64(r1)1083; CHECK-P8-NEXT:    ld r3, .LC6@toc@l(r3)1084; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31085; CHECK-P8-NEXT:    xxswapd v2, vs01086; CHECK-P8-NEXT:    bl __trunckfdf21087; CHECK-P8-NEXT:    nop1088; CHECK-P8-NEXT:    stfd f1, 0(r30)1089; CHECK-P8-NEXT:    addi r1, r1, 481090; CHECK-P8-NEXT:    ld r0, 16(r1)1091; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1092; CHECK-P8-NEXT:    mtlr r01093; CHECK-P8-NEXT:    blr1094entry:1095  %i = load fp128, ptr @f128global, align 161096  %conv = fptrunc fp128 %i to double1097  store double %conv, ptr %res, align 81098  ret void1099}1100 1101; Function Attrs: norecurse nounwind1102define void @qpConv2dp_03(ptr nocapture %res, i32 signext %idx) nounwind {1103; CHECK-LABEL: qpConv2dp_03:1104; CHECK:       # %bb.0: # %entry1105; CHECK-NEXT:    addis r5, r2, .LC7@toc@ha1106; CHECK-NEXT:    sldi r4, r4, 31107; CHECK-NEXT:    ld r5, .LC7@toc@l(r5)1108; CHECK-NEXT:    lxv v2, 0(r5)1109; CHECK-NEXT:    xscvqpdp v2, v21110; CHECK-NEXT:    stxsdx v2, r3, r41111; CHECK-NEXT:    blr1112;1113; CHECK-P8-LABEL: qpConv2dp_03:1114; CHECK-P8:       # %bb.0: # %entry1115; CHECK-P8-NEXT:    mflr r01116; CHECK-P8-NEXT:    std r29, -24(r1) # 8-byte Folded Spill1117; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1118; CHECK-P8-NEXT:    stdu r1, -64(r1)1119; CHECK-P8-NEXT:    mr r29, r31120; CHECK-P8-NEXT:    addis r3, r2, .LC7@toc@ha1121; CHECK-P8-NEXT:    std r0, 80(r1)1122; CHECK-P8-NEXT:    mr r30, r41123; CHECK-P8-NEXT:    ld r3, .LC7@toc@l(r3)1124; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31125; CHECK-P8-NEXT:    xxswapd v2, vs01126; CHECK-P8-NEXT:    bl __trunckfdf21127; CHECK-P8-NEXT:    nop1128; CHECK-P8-NEXT:    sldi r3, r30, 31129; CHECK-P8-NEXT:    stfdx f1, r29, r31130; CHECK-P8-NEXT:    addi r1, r1, 641131; CHECK-P8-NEXT:    ld r0, 16(r1)1132; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1133; CHECK-P8-NEXT:    ld r29, -24(r1) # 8-byte Folded Reload1134; CHECK-P8-NEXT:    mtlr r01135; CHECK-P8-NEXT:    blr1136entry:1137  %i = load fp128, ptr @f128Array, align 161138  %conv = fptrunc fp128 %i to double1139  %idxprom = sext i32 %idx to i641140  %arrayidx = getelementptr inbounds double, ptr %res, i64 %idxprom1141  store double %conv, ptr %arrayidx, align 81142  ret void1143}1144 1145; Function Attrs: norecurse nounwind1146define void @qpConv2dp_04(ptr nocapture readonly %a, ptr nocapture readonly %b,1147; CHECK-LABEL: qpConv2dp_04:1148; CHECK:       # %bb.0: # %entry1149; CHECK-NEXT:    lxv v2, 0(r3)1150; CHECK-NEXT:    lxv v3, 0(r4)1151; CHECK-NEXT:    xsaddqp v2, v2, v31152; CHECK-NEXT:    xscvqpdp v2, v21153; CHECK-NEXT:    stxsd v2, 0(r5)1154; CHECK-NEXT:    blr1155;1156; CHECK-P8-LABEL: qpConv2dp_04:1157; CHECK-P8:       # %bb.0: # %entry1158; CHECK-P8-NEXT:    mflr r01159; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1160; CHECK-P8-NEXT:    stdu r1, -48(r1)1161; CHECK-P8-NEXT:    std r0, 64(r1)1162; CHECK-P8-NEXT:    mr r30, r51163; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31164; CHECK-P8-NEXT:    xxswapd v2, vs01165; CHECK-P8-NEXT:    lxvd2x vs0, 0, r41166; CHECK-P8-NEXT:    xxswapd v3, vs01167; CHECK-P8-NEXT:    bl __addkf31168; CHECK-P8-NEXT:    nop1169; CHECK-P8-NEXT:    bl __trunckfdf21170; CHECK-P8-NEXT:    nop1171; CHECK-P8-NEXT:    stfd f1, 0(r30)1172; CHECK-P8-NEXT:    addi r1, r1, 481173; CHECK-P8-NEXT:    ld r0, 16(r1)1174; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1175; CHECK-P8-NEXT:    mtlr r01176; CHECK-P8-NEXT:    blr1177                          ptr nocapture %res) nounwind {1178entry:1179  %i = load fp128, ptr %a, align 161180  %1 = load fp128, ptr %b, align 161181  %add = fadd fp128 %i, %11182  %conv = fptrunc fp128 %add to double1183  store double %conv, ptr %res, align 81184  ret void1185}1186 1187;  Convert QP to SP1188 1189; Function Attrs: norecurse nounwind readonly1190define float @qpConv2sp(ptr nocapture readonly %a) nounwind {1191; CHECK-LABEL: qpConv2sp:1192; CHECK:       # %bb.0: # %entry1193; CHECK-NEXT:    lxv v2, 0(r3)1194; CHECK-NEXT:    xscvqpdpo v2, v21195; CHECK-NEXT:    xsrsp f1, v21196; CHECK-NEXT:    blr1197;1198; CHECK-P8-LABEL: qpConv2sp:1199; CHECK-P8:       # %bb.0: # %entry1200; CHECK-P8-NEXT:    mflr r01201; CHECK-P8-NEXT:    stdu r1, -32(r1)1202; CHECK-P8-NEXT:    std r0, 48(r1)1203; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31204; CHECK-P8-NEXT:    xxswapd v2, vs01205; CHECK-P8-NEXT:    bl __trunckfsf21206; CHECK-P8-NEXT:    nop1207; CHECK-P8-NEXT:    addi r1, r1, 321208; CHECK-P8-NEXT:    ld r0, 16(r1)1209; CHECK-P8-NEXT:    mtlr r01210; CHECK-P8-NEXT:    blr1211entry:1212  %i = load fp128, ptr %a, align 161213  %conv = fptrunc fp128 %i to float1214  ret float %conv1215}1216 1217; Function Attrs: norecurse nounwind1218define void @qpConv2sp_02(ptr nocapture %res) nounwind {1219; CHECK-LABEL: qpConv2sp_02:1220; CHECK:       # %bb.0: # %entry1221; CHECK-NEXT:    addis r4, r2, .LC6@toc@ha1222; CHECK-NEXT:    ld r4, .LC6@toc@l(r4)1223; CHECK-NEXT:    lxv v2, 0(r4)1224; CHECK-NEXT:    xscvqpdpo v2, v21225; CHECK-NEXT:    xsrsp f0, v21226; CHECK-NEXT:    stfs f0, 0(r3)1227; CHECK-NEXT:    blr1228;1229; CHECK-P8-LABEL: qpConv2sp_02:1230; CHECK-P8:       # %bb.0: # %entry1231; CHECK-P8-NEXT:    mflr r01232; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1233; CHECK-P8-NEXT:    stdu r1, -48(r1)1234; CHECK-P8-NEXT:    mr r30, r31235; CHECK-P8-NEXT:    addis r3, r2, .LC6@toc@ha1236; CHECK-P8-NEXT:    std r0, 64(r1)1237; CHECK-P8-NEXT:    ld r3, .LC6@toc@l(r3)1238; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31239; CHECK-P8-NEXT:    xxswapd v2, vs01240; CHECK-P8-NEXT:    bl __trunckfsf21241; CHECK-P8-NEXT:    nop1242; CHECK-P8-NEXT:    stfs f1, 0(r30)1243; CHECK-P8-NEXT:    addi r1, r1, 481244; CHECK-P8-NEXT:    ld r0, 16(r1)1245; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1246; CHECK-P8-NEXT:    mtlr r01247; CHECK-P8-NEXT:    blr1248entry:1249  %i = load fp128, ptr @f128global, align 161250  %conv = fptrunc fp128 %i to float1251  store float %conv, ptr %res, align 41252  ret void1253}1254 1255; Function Attrs: norecurse nounwind1256define void @qpConv2sp_03(ptr nocapture %res, i32 signext %idx) nounwind {1257; CHECK-LABEL: qpConv2sp_03:1258; CHECK:       # %bb.0: # %entry1259; CHECK-NEXT:    addis r5, r2, .LC7@toc@ha1260; CHECK-NEXT:    sldi r4, r4, 21261; CHECK-NEXT:    ld r5, .LC7@toc@l(r5)1262; CHECK-NEXT:    lxv v2, 48(r5)1263; CHECK-NEXT:    xscvqpdpo v2, v21264; CHECK-NEXT:    xsrsp f0, v21265; CHECK-NEXT:    stfsx f0, r3, r41266; CHECK-NEXT:    blr1267;1268; CHECK-P8-LABEL: qpConv2sp_03:1269; CHECK-P8:       # %bb.0: # %entry1270; CHECK-P8-NEXT:    mflr r01271; CHECK-P8-NEXT:    std r29, -24(r1) # 8-byte Folded Spill1272; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1273; CHECK-P8-NEXT:    stdu r1, -64(r1)1274; CHECK-P8-NEXT:    mr r29, r31275; CHECK-P8-NEXT:    addis r3, r2, .LC7@toc@ha1276; CHECK-P8-NEXT:    std r0, 80(r1)1277; CHECK-P8-NEXT:    mr r30, r41278; CHECK-P8-NEXT:    ld r3, .LC7@toc@l(r3)1279; CHECK-P8-NEXT:    addi r3, r3, 481280; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31281; CHECK-P8-NEXT:    xxswapd v2, vs01282; CHECK-P8-NEXT:    bl __trunckfsf21283; CHECK-P8-NEXT:    nop1284; CHECK-P8-NEXT:    sldi r3, r30, 21285; CHECK-P8-NEXT:    stfsx f1, r29, r31286; CHECK-P8-NEXT:    addi r1, r1, 641287; CHECK-P8-NEXT:    ld r0, 16(r1)1288; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1289; CHECK-P8-NEXT:    ld r29, -24(r1) # 8-byte Folded Reload1290; CHECK-P8-NEXT:    mtlr r01291; CHECK-P8-NEXT:    blr1292entry:1293  %i = load fp128, ptr getelementptr inbounds ([4 x fp128], ptr @f128Array, i64 0, i64 3), align 161294  %conv = fptrunc fp128 %i to float1295  %idxprom = sext i32 %idx to i641296  %arrayidx = getelementptr inbounds float, ptr %res, i64 %idxprom1297  store float %conv, ptr %arrayidx, align 41298  ret void1299}1300 1301; Function Attrs: norecurse nounwind1302define void @qpConv2sp_04(ptr nocapture readonly %a, ptr nocapture readonly %b,1303; CHECK-LABEL: qpConv2sp_04:1304; CHECK:       # %bb.0: # %entry1305; CHECK-NEXT:    lxv v2, 0(r3)1306; CHECK-NEXT:    lxv v3, 0(r4)1307; CHECK-NEXT:    xsaddqp v2, v2, v31308; CHECK-NEXT:    xscvqpdpo v2, v21309; CHECK-NEXT:    xsrsp f0, v21310; CHECK-NEXT:    stfs f0, 0(r5)1311; CHECK-NEXT:    blr1312;1313; CHECK-P8-LABEL: qpConv2sp_04:1314; CHECK-P8:       # %bb.0: # %entry1315; CHECK-P8-NEXT:    mflr r01316; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1317; CHECK-P8-NEXT:    stdu r1, -48(r1)1318; CHECK-P8-NEXT:    std r0, 64(r1)1319; CHECK-P8-NEXT:    mr r30, r51320; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31321; CHECK-P8-NEXT:    xxswapd v2, vs01322; CHECK-P8-NEXT:    lxvd2x vs0, 0, r41323; CHECK-P8-NEXT:    xxswapd v3, vs01324; CHECK-P8-NEXT:    bl __addkf31325; CHECK-P8-NEXT:    nop1326; CHECK-P8-NEXT:    bl __trunckfsf21327; CHECK-P8-NEXT:    nop1328; CHECK-P8-NEXT:    stfs f1, 0(r30)1329; CHECK-P8-NEXT:    addi r1, r1, 481330; CHECK-P8-NEXT:    ld r0, 16(r1)1331; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1332; CHECK-P8-NEXT:    mtlr r01333; CHECK-P8-NEXT:    blr1334                          ptr nocapture %res) nounwind {1335entry:1336  %i = load fp128, ptr %a, align 161337  %1 = load fp128, ptr %b, align 161338  %add = fadd fp128 %i, %11339  %conv = fptrunc fp128 %add to float1340  store float %conv, ptr %res, align 41341  ret void1342}1343 1344define half @trunc(fp128 %a) nounwind {1345; CHECK-LABEL: trunc:1346; CHECK:       # %bb.0: # %entry1347; CHECK-NEXT:    mflr r01348; CHECK-NEXT:    stdu r1, -32(r1)1349; CHECK-NEXT:    std r0, 48(r1)1350; CHECK-NEXT:    bl __trunckfhf21351; CHECK-NEXT:    nop1352; CHECK-NEXT:    clrlwi r3, r3, 161353; CHECK-NEXT:    mtfprwz f0, r31354; CHECK-NEXT:    xscvhpdp f1, f01355; CHECK-NEXT:    addi r1, r1, 321356; CHECK-NEXT:    ld r0, 16(r1)1357; CHECK-NEXT:    mtlr r01358; CHECK-NEXT:    blr1359;1360; CHECK-P8-LABEL: trunc:1361; CHECK-P8:       # %bb.0: # %entry1362; CHECK-P8-NEXT:    mflr r01363; CHECK-P8-NEXT:    stdu r1, -32(r1)1364; CHECK-P8-NEXT:    std r0, 48(r1)1365; CHECK-P8-NEXT:    bl __trunckfhf21366; CHECK-P8-NEXT:    nop1367; CHECK-P8-NEXT:    clrldi r3, r3, 481368; CHECK-P8-NEXT:    bl __extendhfsf21369; CHECK-P8-NEXT:    nop1370; CHECK-P8-NEXT:    addi r1, r1, 321371; CHECK-P8-NEXT:    ld r0, 16(r1)1372; CHECK-P8-NEXT:    mtlr r01373; CHECK-P8-NEXT:    blr1374entry:1375  %i = fptrunc fp128 %a to half1376  ret half %i1377}1378 1379define fp128 @ext(half %a) nounwind {1380; CHECK-LABEL: ext:1381; CHECK:       # %bb.0: # %entry1382; CHECK-NEXT:    xscpsgndp v2, f1, f11383; CHECK-NEXT:    xscvdpqp v2, v21384; CHECK-NEXT:    blr1385;1386; CHECK-P8-LABEL: ext:1387; CHECK-P8:       # %bb.0: # %entry1388; CHECK-P8-NEXT:    mflr r01389; CHECK-P8-NEXT:    stdu r1, -32(r1)1390; CHECK-P8-NEXT:    std r0, 48(r1)1391; CHECK-P8-NEXT:    bl __extendsfkf21392; CHECK-P8-NEXT:    nop1393; CHECK-P8-NEXT:    addi r1, r1, 321394; CHECK-P8-NEXT:    ld r0, 16(r1)1395; CHECK-P8-NEXT:    mtlr r01396; CHECK-P8-NEXT:    blr1397entry:1398  %i = fpext half %a to fp1281399  ret fp128 %i1400}1401 1402@f128Glob = common global fp128 0xL00000000000000000000000000000000, align 161403 1404; Function Attrs: norecurse nounwind readnone1405define fp128 @dpConv2qp(double %a) nounwind {1406; CHECK-LABEL: dpConv2qp:1407; CHECK:       # %bb.0: # %entry1408; CHECK-NEXT:    xscpsgndp v2, f1, f11409; CHECK-NEXT:    xscvdpqp v2, v21410; CHECK-NEXT:    blr1411;1412; CHECK-P8-LABEL: dpConv2qp:1413; CHECK-P8:       # %bb.0: # %entry1414; CHECK-P8-NEXT:    mflr r01415; CHECK-P8-NEXT:    stdu r1, -32(r1)1416; CHECK-P8-NEXT:    std r0, 48(r1)1417; CHECK-P8-NEXT:    bl __extenddfkf21418; CHECK-P8-NEXT:    nop1419; CHECK-P8-NEXT:    addi r1, r1, 321420; CHECK-P8-NEXT:    ld r0, 16(r1)1421; CHECK-P8-NEXT:    mtlr r01422; CHECK-P8-NEXT:    blr1423entry:1424  %conv = fpext double %a to fp1281425  ret fp128 %conv1426}1427 1428; Function Attrs: norecurse nounwind1429define void @dpConv2qp_02(ptr nocapture readonly %a) nounwind {1430; CHECK-LABEL: dpConv2qp_02:1431; CHECK:       # %bb.0: # %entry1432; CHECK-NEXT:    lxsd v2, 0(r3)1433; CHECK-NEXT:    addis r3, r2, .LC8@toc@ha1434; CHECK-NEXT:    ld r3, .LC8@toc@l(r3)1435; CHECK-NEXT:    xscvdpqp v2, v21436; CHECK-NEXT:    stxv v2, 0(r3)1437; CHECK-NEXT:    blr1438;1439; CHECK-P8-LABEL: dpConv2qp_02:1440; CHECK-P8:       # %bb.0: # %entry1441; CHECK-P8-NEXT:    mflr r01442; CHECK-P8-NEXT:    stdu r1, -32(r1)1443; CHECK-P8-NEXT:    std r0, 48(r1)1444; CHECK-P8-NEXT:    lfd f1, 0(r3)1445; CHECK-P8-NEXT:    bl __extenddfkf21446; CHECK-P8-NEXT:    nop1447; CHECK-P8-NEXT:    addis r3, r2, .LC8@toc@ha1448; CHECK-P8-NEXT:    xxswapd vs0, v21449; CHECK-P8-NEXT:    ld r3, .LC8@toc@l(r3)1450; CHECK-P8-NEXT:    stxvd2x vs0, 0, r31451; CHECK-P8-NEXT:    addi r1, r1, 321452; CHECK-P8-NEXT:    ld r0, 16(r1)1453; CHECK-P8-NEXT:    mtlr r01454; CHECK-P8-NEXT:    blr1455entry:1456  %i = load double, ptr %a, align 81457  %conv = fpext double %i to fp1281458  store fp128 %conv, ptr @f128Glob, align 161459  ret void1460}1461 1462; Function Attrs: norecurse nounwind1463define void @dpConv2qp_02b(ptr nocapture readonly %a, i32 signext %idx) nounwind {1464; CHECK-LABEL: dpConv2qp_02b:1465; CHECK:       # %bb.0: # %entry1466; CHECK-NEXT:    sldi r4, r4, 31467; CHECK-NEXT:    lxsdx v2, r3, r41468; CHECK-NEXT:    addis r3, r2, .LC8@toc@ha1469; CHECK-NEXT:    ld r3, .LC8@toc@l(r3)1470; CHECK-NEXT:    xscvdpqp v2, v21471; CHECK-NEXT:    stxv v2, 0(r3)1472; CHECK-NEXT:    blr1473;1474; CHECK-P8-LABEL: dpConv2qp_02b:1475; CHECK-P8:       # %bb.0: # %entry1476; CHECK-P8-NEXT:    mflr r01477; CHECK-P8-NEXT:    stdu r1, -32(r1)1478; CHECK-P8-NEXT:    sldi r4, r4, 31479; CHECK-P8-NEXT:    std r0, 48(r1)1480; CHECK-P8-NEXT:    lfdx f1, r3, r41481; CHECK-P8-NEXT:    bl __extenddfkf21482; CHECK-P8-NEXT:    nop1483; CHECK-P8-NEXT:    addis r3, r2, .LC8@toc@ha1484; CHECK-P8-NEXT:    xxswapd vs0, v21485; CHECK-P8-NEXT:    ld r3, .LC8@toc@l(r3)1486; CHECK-P8-NEXT:    stxvd2x vs0, 0, r31487; CHECK-P8-NEXT:    addi r1, r1, 321488; CHECK-P8-NEXT:    ld r0, 16(r1)1489; CHECK-P8-NEXT:    mtlr r01490; CHECK-P8-NEXT:    blr1491entry:1492  %idxprom = sext i32 %idx to i641493  %arrayidx = getelementptr inbounds double, ptr %a, i64 %idxprom1494  %i = load double, ptr %arrayidx, align 81495  %conv = fpext double %i to fp1281496  store fp128 %conv, ptr @f128Glob, align 161497  ret void1498}1499 1500; Function Attrs: norecurse nounwind1501define void @dpConv2qp_03(ptr nocapture %res, i32 signext %idx, double %a) nounwind {1502; CHECK-LABEL: dpConv2qp_03:1503; CHECK:       # %bb.0: # %entry1504; CHECK-NEXT:    xscpsgndp v2, f1, f11505; CHECK-NEXT:    sldi r4, r4, 41506; CHECK-NEXT:    xscvdpqp v2, v21507; CHECK-NEXT:    stxvx v2, r3, r41508; CHECK-NEXT:    blr1509;1510; CHECK-P8-LABEL: dpConv2qp_03:1511; CHECK-P8:       # %bb.0: # %entry1512; CHECK-P8-NEXT:    mflr r01513; CHECK-P8-NEXT:    std r29, -24(r1) # 8-byte Folded Spill1514; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1515; CHECK-P8-NEXT:    stdu r1, -64(r1)1516; CHECK-P8-NEXT:    std r0, 80(r1)1517; CHECK-P8-NEXT:    mr r30, r41518; CHECK-P8-NEXT:    mr r29, r31519; CHECK-P8-NEXT:    bl __extenddfkf21520; CHECK-P8-NEXT:    nop1521; CHECK-P8-NEXT:    xxswapd vs0, v21522; CHECK-P8-NEXT:    sldi r3, r30, 41523; CHECK-P8-NEXT:    stxvd2x vs0, r29, r31524; CHECK-P8-NEXT:    addi r1, r1, 641525; CHECK-P8-NEXT:    ld r0, 16(r1)1526; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1527; CHECK-P8-NEXT:    ld r29, -24(r1) # 8-byte Folded Reload1528; CHECK-P8-NEXT:    mtlr r01529; CHECK-P8-NEXT:    blr1530entry:1531  %conv = fpext double %a to fp1281532  %idxprom = sext i32 %idx to i641533  %arrayidx = getelementptr inbounds fp128, ptr %res, i64 %idxprom1534  store fp128 %conv, ptr %arrayidx, align 161535  ret void1536}1537 1538; Function Attrs: norecurse nounwind1539define void @dpConv2qp_04(double %a, ptr nocapture %res) nounwind {1540; CHECK-LABEL: dpConv2qp_04:1541; CHECK:       # %bb.0: # %entry1542; CHECK-NEXT:    xscpsgndp v2, f1, f11543; CHECK-NEXT:    xscvdpqp v2, v21544; CHECK-NEXT:    stxv v2, 0(r4)1545; CHECK-NEXT:    blr1546;1547; CHECK-P8-LABEL: dpConv2qp_04:1548; CHECK-P8:       # %bb.0: # %entry1549; CHECK-P8-NEXT:    mflr r01550; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1551; CHECK-P8-NEXT:    stdu r1, -48(r1)1552; CHECK-P8-NEXT:    std r0, 64(r1)1553; CHECK-P8-NEXT:    mr r30, r41554; CHECK-P8-NEXT:    bl __extenddfkf21555; CHECK-P8-NEXT:    nop1556; CHECK-P8-NEXT:    xxswapd vs0, v21557; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301558; CHECK-P8-NEXT:    addi r1, r1, 481559; CHECK-P8-NEXT:    ld r0, 16(r1)1560; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1561; CHECK-P8-NEXT:    mtlr r01562; CHECK-P8-NEXT:    blr1563entry:1564  %conv = fpext double %a to fp1281565  store fp128 %conv, ptr %res, align 161566  ret void1567}1568 1569; Function Attrs: norecurse nounwind readnone1570define fp128 @spConv2qp(float %a) nounwind {1571; CHECK-LABEL: spConv2qp:1572; CHECK:       # %bb.0: # %entry1573; CHECK-NEXT:    xscpsgndp v2, f1, f11574; CHECK-NEXT:    xscvdpqp v2, v21575; CHECK-NEXT:    blr1576;1577; CHECK-P8-LABEL: spConv2qp:1578; CHECK-P8:       # %bb.0: # %entry1579; CHECK-P8-NEXT:    mflr r01580; CHECK-P8-NEXT:    stdu r1, -32(r1)1581; CHECK-P8-NEXT:    std r0, 48(r1)1582; CHECK-P8-NEXT:    bl __extendsfkf21583; CHECK-P8-NEXT:    nop1584; CHECK-P8-NEXT:    addi r1, r1, 321585; CHECK-P8-NEXT:    ld r0, 16(r1)1586; CHECK-P8-NEXT:    mtlr r01587; CHECK-P8-NEXT:    blr1588entry:1589  %conv = fpext float %a to fp1281590  ret fp128 %conv1591}1592 1593; Function Attrs: norecurse nounwind1594define void @spConv2qp_02(ptr nocapture readonly %a) nounwind {1595; CHECK-LABEL: spConv2qp_02:1596; CHECK:       # %bb.0: # %entry1597; CHECK-NEXT:    lxssp v2, 0(r3)1598; CHECK-NEXT:    addis r3, r2, .LC8@toc@ha1599; CHECK-NEXT:    ld r3, .LC8@toc@l(r3)1600; CHECK-NEXT:    xscvdpqp v2, v21601; CHECK-NEXT:    stxv v2, 0(r3)1602; CHECK-NEXT:    blr1603;1604; CHECK-P8-LABEL: spConv2qp_02:1605; CHECK-P8:       # %bb.0: # %entry1606; CHECK-P8-NEXT:    mflr r01607; CHECK-P8-NEXT:    stdu r1, -32(r1)1608; CHECK-P8-NEXT:    std r0, 48(r1)1609; CHECK-P8-NEXT:    lfs f1, 0(r3)1610; CHECK-P8-NEXT:    bl __extendsfkf21611; CHECK-P8-NEXT:    nop1612; CHECK-P8-NEXT:    addis r3, r2, .LC8@toc@ha1613; CHECK-P8-NEXT:    xxswapd vs0, v21614; CHECK-P8-NEXT:    ld r3, .LC8@toc@l(r3)1615; CHECK-P8-NEXT:    stxvd2x vs0, 0, r31616; CHECK-P8-NEXT:    addi r1, r1, 321617; CHECK-P8-NEXT:    ld r0, 16(r1)1618; CHECK-P8-NEXT:    mtlr r01619; CHECK-P8-NEXT:    blr1620entry:1621  %i = load float, ptr %a, align 41622  %conv = fpext float %i to fp1281623  store fp128 %conv, ptr @f128Glob, align 161624  ret void1625}1626 1627; Function Attrs: norecurse nounwind1628define void @spConv2qp_02b(ptr nocapture readonly %a, i32 signext %idx) nounwind {1629; CHECK-LABEL: spConv2qp_02b:1630; CHECK:       # %bb.0: # %entry1631; CHECK-NEXT:    sldi r4, r4, 21632; CHECK-NEXT:    lxsspx v2, r3, r41633; CHECK-NEXT:    addis r3, r2, .LC8@toc@ha1634; CHECK-NEXT:    ld r3, .LC8@toc@l(r3)1635; CHECK-NEXT:    xscvdpqp v2, v21636; CHECK-NEXT:    stxv v2, 0(r3)1637; CHECK-NEXT:    blr1638;1639; CHECK-P8-LABEL: spConv2qp_02b:1640; CHECK-P8:       # %bb.0: # %entry1641; CHECK-P8-NEXT:    mflr r01642; CHECK-P8-NEXT:    stdu r1, -32(r1)1643; CHECK-P8-NEXT:    sldi r4, r4, 21644; CHECK-P8-NEXT:    std r0, 48(r1)1645; CHECK-P8-NEXT:    lfsx f1, r3, r41646; CHECK-P8-NEXT:    bl __extendsfkf21647; CHECK-P8-NEXT:    nop1648; CHECK-P8-NEXT:    addis r3, r2, .LC8@toc@ha1649; CHECK-P8-NEXT:    xxswapd vs0, v21650; CHECK-P8-NEXT:    ld r3, .LC8@toc@l(r3)1651; CHECK-P8-NEXT:    stxvd2x vs0, 0, r31652; CHECK-P8-NEXT:    addi r1, r1, 321653; CHECK-P8-NEXT:    ld r0, 16(r1)1654; CHECK-P8-NEXT:    mtlr r01655; CHECK-P8-NEXT:    blr1656entry:1657  %idxprom = sext i32 %idx to i641658  %arrayidx = getelementptr inbounds float, ptr %a, i64 %idxprom1659  %i = load float, ptr %arrayidx, align 41660  %conv = fpext float %i to fp1281661  store fp128 %conv, ptr @f128Glob, align 161662  ret void1663}1664 1665; Function Attrs: norecurse nounwind1666define void @spConv2qp_03(ptr nocapture %res, i32 signext %idx, float %a) nounwind {1667; CHECK-LABEL: spConv2qp_03:1668; CHECK:       # %bb.0: # %entry1669; CHECK-NEXT:    xscpsgndp v2, f1, f11670; CHECK-NEXT:    sldi r4, r4, 41671; CHECK-NEXT:    xscvdpqp v2, v21672; CHECK-NEXT:    stxvx v2, r3, r41673; CHECK-NEXT:    blr1674;1675; CHECK-P8-LABEL: spConv2qp_03:1676; CHECK-P8:       # %bb.0: # %entry1677; CHECK-P8-NEXT:    mflr r01678; CHECK-P8-NEXT:    std r29, -24(r1) # 8-byte Folded Spill1679; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1680; CHECK-P8-NEXT:    stdu r1, -64(r1)1681; CHECK-P8-NEXT:    std r0, 80(r1)1682; CHECK-P8-NEXT:    mr r30, r41683; CHECK-P8-NEXT:    mr r29, r31684; CHECK-P8-NEXT:    bl __extendsfkf21685; CHECK-P8-NEXT:    nop1686; CHECK-P8-NEXT:    xxswapd vs0, v21687; CHECK-P8-NEXT:    sldi r3, r30, 41688; CHECK-P8-NEXT:    stxvd2x vs0, r29, r31689; CHECK-P8-NEXT:    addi r1, r1, 641690; CHECK-P8-NEXT:    ld r0, 16(r1)1691; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1692; CHECK-P8-NEXT:    ld r29, -24(r1) # 8-byte Folded Reload1693; CHECK-P8-NEXT:    mtlr r01694; CHECK-P8-NEXT:    blr1695entry:1696  %conv = fpext float %a to fp1281697  %idxprom = sext i32 %idx to i641698  %arrayidx = getelementptr inbounds fp128, ptr %res, i64 %idxprom1699  store fp128 %conv, ptr %arrayidx, align 161700  ret void1701}1702 1703; Function Attrs: norecurse nounwind1704define void @spConv2qp_04(float %a, ptr nocapture %res) nounwind {1705; CHECK-LABEL: spConv2qp_04:1706; CHECK:       # %bb.0: # %entry1707; CHECK-NEXT:    xscpsgndp v2, f1, f11708; CHECK-NEXT:    xscvdpqp v2, v21709; CHECK-NEXT:    stxv v2, 0(r4)1710; CHECK-NEXT:    blr1711;1712; CHECK-P8-LABEL: spConv2qp_04:1713; CHECK-P8:       # %bb.0: # %entry1714; CHECK-P8-NEXT:    mflr r01715; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1716; CHECK-P8-NEXT:    stdu r1, -48(r1)1717; CHECK-P8-NEXT:    std r0, 64(r1)1718; CHECK-P8-NEXT:    mr r30, r41719; CHECK-P8-NEXT:    bl __extendsfkf21720; CHECK-P8-NEXT:    nop1721; CHECK-P8-NEXT:    xxswapd vs0, v21722; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301723; CHECK-P8-NEXT:    addi r1, r1, 481724; CHECK-P8-NEXT:    ld r0, 16(r1)1725; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1726; CHECK-P8-NEXT:    mtlr r01727; CHECK-P8-NEXT:    blr1728entry:1729  %conv = fpext float %a to fp1281730  store fp128 %conv, ptr %res, align 161731  ret void1732}1733 1734 1735; Function Attrs: norecurse nounwind1736define void @cvdp2sw2qp(double %val, ptr nocapture %res) nounwind {1737; CHECK-LABEL: cvdp2sw2qp:1738; CHECK:       # %bb.0: # %entry1739; CHECK-NEXT:    xscvdpsxws v2, f11740; CHECK-NEXT:    vextsw2d v2, v21741; CHECK-NEXT:    xscvsdqp v2, v21742; CHECK-NEXT:    stxv v2, 0(r4)1743; CHECK-NEXT:    blr1744;1745; CHECK-P8-LABEL: cvdp2sw2qp:1746; CHECK-P8:       # %bb.0: # %entry1747; CHECK-P8-NEXT:    mflr r01748; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1749; CHECK-P8-NEXT:    stdu r1, -48(r1)1750; CHECK-P8-NEXT:    xscvdpsxws f0, f11751; CHECK-P8-NEXT:    std r0, 64(r1)1752; CHECK-P8-NEXT:    mr r30, r41753; CHECK-P8-NEXT:    mffprwz r3, f01754; CHECK-P8-NEXT:    extsw r3, r31755; CHECK-P8-NEXT:    bl __floatsikf1756; CHECK-P8-NEXT:    nop1757; CHECK-P8-NEXT:    xxswapd vs0, v21758; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301759; CHECK-P8-NEXT:    addi r1, r1, 481760; CHECK-P8-NEXT:    ld r0, 16(r1)1761; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1762; CHECK-P8-NEXT:    mtlr r01763; CHECK-P8-NEXT:    blr1764entry:1765  %conv = fptosi double %val to i321766  %conv1 = sitofp i32 %conv to fp1281767  store fp128 %conv1, ptr %res, align 161768  ret void1769}1770 1771; Function Attrs: norecurse nounwind1772define void @cvdp2sdw2qp(double %val, ptr nocapture %res) nounwind {1773; CHECK-LABEL: cvdp2sdw2qp:1774; CHECK:       # %bb.0: # %entry1775; CHECK-NEXT:    xscvdpsxds v2, f11776; CHECK-NEXT:    xscvsdqp v2, v21777; CHECK-NEXT:    stxv v2, 0(r4)1778; CHECK-NEXT:    blr1779;1780; CHECK-P8-LABEL: cvdp2sdw2qp:1781; CHECK-P8:       # %bb.0: # %entry1782; CHECK-P8-NEXT:    mflr r01783; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1784; CHECK-P8-NEXT:    stdu r1, -48(r1)1785; CHECK-P8-NEXT:    xscvdpsxds f0, f11786; CHECK-P8-NEXT:    std r0, 64(r1)1787; CHECK-P8-NEXT:    mr r30, r41788; CHECK-P8-NEXT:    mffprd r3, f01789; CHECK-P8-NEXT:    bl __floatdikf1790; CHECK-P8-NEXT:    nop1791; CHECK-P8-NEXT:    xxswapd vs0, v21792; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301793; CHECK-P8-NEXT:    addi r1, r1, 481794; CHECK-P8-NEXT:    ld r0, 16(r1)1795; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1796; CHECK-P8-NEXT:    mtlr r01797; CHECK-P8-NEXT:    blr1798entry:1799  %conv = fptosi double %val to i641800  %conv1 = sitofp i64 %conv to fp1281801  store fp128 %conv1, ptr %res, align 161802  ret void1803}1804 1805; Function Attrs: norecurse nounwind1806define void @cvsp2sw2qp(float %val, ptr nocapture %res) nounwind {1807; CHECK-LABEL: cvsp2sw2qp:1808; CHECK:       # %bb.0: # %entry1809; CHECK-NEXT:    xscvdpsxws v2, f11810; CHECK-NEXT:    vextsw2d v2, v21811; CHECK-NEXT:    xscvsdqp v2, v21812; CHECK-NEXT:    stxv v2, 0(r4)1813; CHECK-NEXT:    blr1814;1815; CHECK-P8-LABEL: cvsp2sw2qp:1816; CHECK-P8:       # %bb.0: # %entry1817; CHECK-P8-NEXT:    mflr r01818; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1819; CHECK-P8-NEXT:    stdu r1, -48(r1)1820; CHECK-P8-NEXT:    xscvdpsxws f0, f11821; CHECK-P8-NEXT:    std r0, 64(r1)1822; CHECK-P8-NEXT:    mr r30, r41823; CHECK-P8-NEXT:    mffprwz r3, f01824; CHECK-P8-NEXT:    extsw r3, r31825; CHECK-P8-NEXT:    bl __floatsikf1826; CHECK-P8-NEXT:    nop1827; CHECK-P8-NEXT:    xxswapd vs0, v21828; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301829; CHECK-P8-NEXT:    addi r1, r1, 481830; CHECK-P8-NEXT:    ld r0, 16(r1)1831; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1832; CHECK-P8-NEXT:    mtlr r01833; CHECK-P8-NEXT:    blr1834entry:1835  %conv = fptosi float %val to i321836  %conv1 = sitofp i32 %conv to fp1281837  store fp128 %conv1, ptr %res, align 161838  ret void1839}1840 1841; Function Attrs: norecurse nounwind1842define void @cvsp2sdw2qp(float %val, ptr nocapture %res) nounwind {1843; CHECK-LABEL: cvsp2sdw2qp:1844; CHECK:       # %bb.0: # %entry1845; CHECK-NEXT:    xscvdpsxds v2, f11846; CHECK-NEXT:    xscvsdqp v2, v21847; CHECK-NEXT:    stxv v2, 0(r4)1848; CHECK-NEXT:    blr1849;1850; CHECK-P8-LABEL: cvsp2sdw2qp:1851; CHECK-P8:       # %bb.0: # %entry1852; CHECK-P8-NEXT:    mflr r01853; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1854; CHECK-P8-NEXT:    stdu r1, -48(r1)1855; CHECK-P8-NEXT:    xscvdpsxds f0, f11856; CHECK-P8-NEXT:    std r0, 64(r1)1857; CHECK-P8-NEXT:    mr r30, r41858; CHECK-P8-NEXT:    mffprd r3, f01859; CHECK-P8-NEXT:    bl __floatdikf1860; CHECK-P8-NEXT:    nop1861; CHECK-P8-NEXT:    xxswapd vs0, v21862; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301863; CHECK-P8-NEXT:    addi r1, r1, 481864; CHECK-P8-NEXT:    ld r0, 16(r1)1865; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1866; CHECK-P8-NEXT:    mtlr r01867; CHECK-P8-NEXT:    blr1868entry:1869  %conv = fptosi float %val to i641870  %conv1 = sitofp i64 %conv to fp1281871  store fp128 %conv1, ptr %res, align 161872  ret void1873}1874 1875; Function Attrs: norecurse nounwind1876define void @cvdp2uw2qp(double %val, ptr nocapture %res) nounwind {1877; CHECK-LABEL: cvdp2uw2qp:1878; CHECK:       # %bb.0: # %entry1879; CHECK-NEXT:    xscvdpuxws f0, f11880; CHECK-NEXT:    xxextractuw v2, vs0, 81881; CHECK-NEXT:    xscvudqp v2, v21882; CHECK-NEXT:    stxv v2, 0(r4)1883; CHECK-NEXT:    blr1884;1885; CHECK-P8-LABEL: cvdp2uw2qp:1886; CHECK-P8:       # %bb.0: # %entry1887; CHECK-P8-NEXT:    mflr r01888; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1889; CHECK-P8-NEXT:    stdu r1, -48(r1)1890; CHECK-P8-NEXT:    xscvdpuxws f0, f11891; CHECK-P8-NEXT:    std r0, 64(r1)1892; CHECK-P8-NEXT:    mr r30, r41893; CHECK-P8-NEXT:    mffprwz r3, f01894; CHECK-P8-NEXT:    bl __floatunsikf1895; CHECK-P8-NEXT:    nop1896; CHECK-P8-NEXT:    xxswapd vs0, v21897; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301898; CHECK-P8-NEXT:    addi r1, r1, 481899; CHECK-P8-NEXT:    ld r0, 16(r1)1900; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1901; CHECK-P8-NEXT:    mtlr r01902; CHECK-P8-NEXT:    blr1903entry:1904  %conv = fptoui double %val to i321905  %conv1 = uitofp i32 %conv to fp1281906  store fp128 %conv1, ptr %res, align 161907  ret void1908}1909 1910; Function Attrs: norecurse nounwind1911define void @cvdp2udw2qp(double %val, ptr nocapture %res) nounwind {1912; CHECK-LABEL: cvdp2udw2qp:1913; CHECK:       # %bb.0: # %entry1914; CHECK-NEXT:    xscvdpuxds v2, f11915; CHECK-NEXT:    xscvudqp v2, v21916; CHECK-NEXT:    stxv v2, 0(r4)1917; CHECK-NEXT:    blr1918;1919; CHECK-P8-LABEL: cvdp2udw2qp:1920; CHECK-P8:       # %bb.0: # %entry1921; CHECK-P8-NEXT:    mflr r01922; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1923; CHECK-P8-NEXT:    stdu r1, -48(r1)1924; CHECK-P8-NEXT:    xscvdpuxds f0, f11925; CHECK-P8-NEXT:    std r0, 64(r1)1926; CHECK-P8-NEXT:    mr r30, r41927; CHECK-P8-NEXT:    mffprd r3, f01928; CHECK-P8-NEXT:    bl __floatundikf1929; CHECK-P8-NEXT:    nop1930; CHECK-P8-NEXT:    xxswapd vs0, v21931; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301932; CHECK-P8-NEXT:    addi r1, r1, 481933; CHECK-P8-NEXT:    ld r0, 16(r1)1934; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1935; CHECK-P8-NEXT:    mtlr r01936; CHECK-P8-NEXT:    blr1937entry:1938  %conv = fptoui double %val to i641939  %conv1 = uitofp i64 %conv to fp1281940  store fp128 %conv1, ptr %res, align 161941  ret void1942}1943 1944; Function Attrs: norecurse nounwind1945define void @cvsp2uw2qp(float %val, ptr nocapture %res) nounwind {1946; CHECK-LABEL: cvsp2uw2qp:1947; CHECK:       # %bb.0: # %entry1948; CHECK-NEXT:    xscvdpuxws f0, f11949; CHECK-NEXT:    xxextractuw v2, vs0, 81950; CHECK-NEXT:    xscvudqp v2, v21951; CHECK-NEXT:    stxv v2, 0(r4)1952; CHECK-NEXT:    blr1953;1954; CHECK-P8-LABEL: cvsp2uw2qp:1955; CHECK-P8:       # %bb.0: # %entry1956; CHECK-P8-NEXT:    mflr r01957; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1958; CHECK-P8-NEXT:    stdu r1, -48(r1)1959; CHECK-P8-NEXT:    xscvdpuxws f0, f11960; CHECK-P8-NEXT:    std r0, 64(r1)1961; CHECK-P8-NEXT:    mr r30, r41962; CHECK-P8-NEXT:    mffprwz r3, f01963; CHECK-P8-NEXT:    bl __floatunsikf1964; CHECK-P8-NEXT:    nop1965; CHECK-P8-NEXT:    xxswapd vs0, v21966; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301967; CHECK-P8-NEXT:    addi r1, r1, 481968; CHECK-P8-NEXT:    ld r0, 16(r1)1969; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1970; CHECK-P8-NEXT:    mtlr r01971; CHECK-P8-NEXT:    blr1972entry:1973  %conv = fptoui float %val to i321974  %conv1 = uitofp i32 %conv to fp1281975  store fp128 %conv1, ptr %res, align 161976  ret void1977}1978 1979; Function Attrs: norecurse nounwind1980define void @cvsp2udw2qp(float %val, ptr nocapture %res) nounwind {1981; CHECK-LABEL: cvsp2udw2qp:1982; CHECK:       # %bb.0: # %entry1983; CHECK-NEXT:    xscvdpuxds v2, f11984; CHECK-NEXT:    xscvudqp v2, v21985; CHECK-NEXT:    stxv v2, 0(r4)1986; CHECK-NEXT:    blr1987;1988; CHECK-P8-LABEL: cvsp2udw2qp:1989; CHECK-P8:       # %bb.0: # %entry1990; CHECK-P8-NEXT:    mflr r01991; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1992; CHECK-P8-NEXT:    stdu r1, -48(r1)1993; CHECK-P8-NEXT:    xscvdpuxds f0, f11994; CHECK-P8-NEXT:    std r0, 64(r1)1995; CHECK-P8-NEXT:    mr r30, r41996; CHECK-P8-NEXT:    mffprd r3, f01997; CHECK-P8-NEXT:    bl __floatundikf1998; CHECK-P8-NEXT:    nop1999; CHECK-P8-NEXT:    xxswapd vs0, v22000; CHECK-P8-NEXT:    stxvd2x vs0, 0, r302001; CHECK-P8-NEXT:    addi r1, r1, 482002; CHECK-P8-NEXT:    ld r0, 16(r1)2003; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload2004; CHECK-P8-NEXT:    mtlr r02005; CHECK-P8-NEXT:    blr2006entry:2007  %conv = fptoui float %val to i642008  %conv1 = uitofp i64 %conv to fp1282009  store fp128 %conv1, ptr %res, align 162010  ret void2011}2012 2013; Function Attrs: norecurse nounwind readonly2014define i128 @qpConv2i128(ptr nocapture readonly %a) nounwind {2015; CHECK-LABEL: qpConv2i128:2016; CHECK:       # %bb.0: # %entry2017; CHECK-NEXT:    mflr r02018; CHECK-NEXT:    stdu r1, -32(r1)2019; CHECK-NEXT:    std r0, 48(r1)2020; CHECK-NEXT:    lxv v2, 0(r3)2021; CHECK-NEXT:    bl __fixkfti2022; CHECK-NEXT:    nop2023; CHECK-NEXT:    addi r1, r1, 322024; CHECK-NEXT:    ld r0, 16(r1)2025; CHECK-NEXT:    mtlr r02026; CHECK-NEXT:    blr2027;2028; CHECK-P8-LABEL: qpConv2i128:2029; CHECK-P8:       # %bb.0: # %entry2030; CHECK-P8-NEXT:    mflr r02031; CHECK-P8-NEXT:    stdu r1, -32(r1)2032; CHECK-P8-NEXT:    std r0, 48(r1)2033; CHECK-P8-NEXT:    lxvd2x vs0, 0, r32034; CHECK-P8-NEXT:    xxswapd v2, vs02035; CHECK-P8-NEXT:    bl __fixkfti2036; CHECK-P8-NEXT:    nop2037; CHECK-P8-NEXT:    addi r1, r1, 322038; CHECK-P8-NEXT:    ld r0, 16(r1)2039; CHECK-P8-NEXT:    mtlr r02040; CHECK-P8-NEXT:    blr2041entry:2042  %i = load fp128, ptr %a, align 162043  %conv = fptosi fp128 %i to i1282044  ret i128 %conv2045}2046 2047; Function Attrs: norecurse nounwind readonly2048define i128 @qpConv2ui128(ptr nocapture readonly %a) nounwind {2049; CHECK-LABEL: qpConv2ui128:2050; CHECK:       # %bb.0: # %entry2051; CHECK-NEXT:    mflr r02052; CHECK-NEXT:    stdu r1, -32(r1)2053; CHECK-NEXT:    std r0, 48(r1)2054; CHECK-NEXT:    lxv v2, 0(r3)2055; CHECK-NEXT:    bl __fixunskfti2056; CHECK-NEXT:    nop2057; CHECK-NEXT:    addi r1, r1, 322058; CHECK-NEXT:    ld r0, 16(r1)2059; CHECK-NEXT:    mtlr r02060; CHECK-NEXT:    blr2061;2062; CHECK-P8-LABEL: qpConv2ui128:2063; CHECK-P8:       # %bb.0: # %entry2064; CHECK-P8-NEXT:    mflr r02065; CHECK-P8-NEXT:    stdu r1, -32(r1)2066; CHECK-P8-NEXT:    std r0, 48(r1)2067; CHECK-P8-NEXT:    lxvd2x vs0, 0, r32068; CHECK-P8-NEXT:    xxswapd v2, vs02069; CHECK-P8-NEXT:    bl __fixunskfti2070; CHECK-P8-NEXT:    nop2071; CHECK-P8-NEXT:    addi r1, r1, 322072; CHECK-P8-NEXT:    ld r0, 16(r1)2073; CHECK-P8-NEXT:    mtlr r02074; CHECK-P8-NEXT:    blr2075entry:2076  %i = load fp128, ptr %a, align 162077  %conv = fptoui fp128 %i to i1282078  ret i128 %conv2079}2080 2081; Function Attrs: norecurse nounwind readonly2082define i1 @qpConv2ui1(ptr nocapture readonly %a) nounwind {2083; CHECK-LABEL: qpConv2ui1:2084; CHECK:       # %bb.0: # %entry2085; CHECK-NEXT:    lxv v2, 0(r3)2086; CHECK-NEXT:    xscvqpswz v2, v22087; CHECK-NEXT:    mfvsrwz r3, v22088; CHECK-NEXT:    blr2089;2090; CHECK-P8-LABEL: qpConv2ui1:2091; CHECK-P8:       # %bb.0: # %entry2092; CHECK-P8-NEXT:    mflr r02093; CHECK-P8-NEXT:    stdu r1, -32(r1)2094; CHECK-P8-NEXT:    std r0, 48(r1)2095; CHECK-P8-NEXT:    lxvd2x vs0, 0, r32096; CHECK-P8-NEXT:    xxswapd v2, vs02097; CHECK-P8-NEXT:    bl __fixkfsi2098; CHECK-P8-NEXT:    nop2099; CHECK-P8-NEXT:    addi r1, r1, 322100; CHECK-P8-NEXT:    ld r0, 16(r1)2101; CHECK-P8-NEXT:    mtlr r02102; CHECK-P8-NEXT:    blr2103entry:2104  %i = load fp128, ptr %a, align 162105  %conv = fptoui fp128 %i to i12106  ret i1 %conv2107}2108 2109; Function Attrs: norecurse nounwind readonly2110define i1 @qpConv2si1(ptr nocapture readonly %a) nounwind {2111; CHECK-LABEL: qpConv2si1:2112; CHECK:       # %bb.0: # %entry2113; CHECK-NEXT:    lxv v2, 0(r3)2114; CHECK-NEXT:    xscvqpswz v2, v22115; CHECK-NEXT:    mfvsrwz r3, v22116; CHECK-NEXT:    blr2117;2118; CHECK-P8-LABEL: qpConv2si1:2119; CHECK-P8:       # %bb.0: # %entry2120; CHECK-P8-NEXT:    mflr r02121; CHECK-P8-NEXT:    stdu r1, -32(r1)2122; CHECK-P8-NEXT:    std r0, 48(r1)2123; CHECK-P8-NEXT:    lxvd2x vs0, 0, r32124; CHECK-P8-NEXT:    xxswapd v2, vs02125; CHECK-P8-NEXT:    bl __fixkfsi2126; CHECK-P8-NEXT:    nop2127; CHECK-P8-NEXT:    addi r1, r1, 322128; CHECK-P8-NEXT:    ld r0, 16(r1)2129; CHECK-P8-NEXT:    mtlr r02130; CHECK-P8-NEXT:    blr2131entry:2132  %i = load fp128, ptr %a, align 162133  %conv = fptosi fp128 %i to i12134  ret i1 %conv2135}2136