brintos

brintos / llvm-project-archived public Read only

0
0
Text · 49.0 KiB · ca8911e Raw
1542 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:   -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s \4; RUN:   | FileCheck %s5; RUN: llc -relocation-model=pic -mcpu=pwr8 -mtriple=powerpc64le-unknown-unknown \6; RUN:   -verify-machineinstrs -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names < %s \7; RUN:   | FileCheck %s -check-prefix=CHECK-P88 9@f128Array = global [4 x fp128] [fp128 0xL00000000000000004004C00000000000,10                                 fp128 0xLF000000000000000400808AB851EB851,11                                 fp128 0xL5000000000000000400E0C26324C8366,12                                 fp128 0xL8000000000000000400A24E2E147AE14],13                                align 1614 15; Function Attrs: norecurse nounwind readonly16define i64 @qpConv2sdw(ptr nocapture readonly %a) {17; CHECK-LABEL: qpConv2sdw:18; CHECK:       # %bb.0: # %entry19; CHECK-NEXT:    lxv v2, 0(r3)20; CHECK-NEXT:    xscvqpsdz v2, v221; CHECK-NEXT:    mfvsrd r3, v222; CHECK-NEXT:    blr23;24; CHECK-P8-LABEL: qpConv2sdw:25; CHECK-P8:       # %bb.0: # %entry26; CHECK-P8-NEXT:    mflr r027; CHECK-P8-NEXT:    stdu r1, -32(r1)28; CHECK-P8-NEXT:    std r0, 48(r1)29; CHECK-P8-NEXT:    .cfi_def_cfa_offset 3230; CHECK-P8-NEXT:    .cfi_offset lr, 1631; CHECK-P8-NEXT:    lxvd2x vs0, 0, r332; CHECK-P8-NEXT:    xxswapd v2, vs033; CHECK-P8-NEXT:    bl __fixkfdi34; CHECK-P8-NEXT:    nop35; CHECK-P8-NEXT:    addi r1, r1, 3236; CHECK-P8-NEXT:    ld r0, 16(r1)37; CHECK-P8-NEXT:    mtlr r038; CHECK-P8-NEXT:    blr39entry:40  %0 = load fp128, ptr %a, align 1641  %conv = fptosi fp128 %0 to i6442  ret i64 %conv43 44}45 46; Function Attrs: norecurse nounwind47define void @qpConv2sdw_02(ptr nocapture %res) local_unnamed_addr #1 {48; CHECK-LABEL: qpConv2sdw_02:49; CHECK:       # %bb.0: # %entry50; CHECK-NEXT:    addis r4, r2, .LC0@toc@ha51; CHECK-NEXT:    ld r4, .LC0@toc@l(r4)52; CHECK-NEXT:    lxv v2, 32(r4)53; CHECK-NEXT:    xscvqpsdz v2, v254; CHECK-NEXT:    stxsd v2, 0(r3)55; CHECK-NEXT:    blr56;57; CHECK-P8-LABEL: qpConv2sdw_02:58; CHECK-P8:       # %bb.0: # %entry59; CHECK-P8-NEXT:    mflr r060; CHECK-P8-NEXT:    .cfi_def_cfa_offset 4861; CHECK-P8-NEXT:    .cfi_offset lr, 1662; CHECK-P8-NEXT:    .cfi_offset r30, -1663; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill64; CHECK-P8-NEXT:    stdu r1, -48(r1)65; CHECK-P8-NEXT:    mr r30, r366; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha67; CHECK-P8-NEXT:    std r0, 64(r1)68; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)69; CHECK-P8-NEXT:    addi r3, r3, 3270; CHECK-P8-NEXT:    lxvd2x vs0, 0, r371; CHECK-P8-NEXT:    xxswapd v2, vs072; CHECK-P8-NEXT:    bl __fixkfdi73; CHECK-P8-NEXT:    nop74; CHECK-P8-NEXT:    std r3, 0(r30)75; CHECK-P8-NEXT:    addi r1, r1, 4876; CHECK-P8-NEXT:    ld r0, 16(r1)77; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload78; CHECK-P8-NEXT:    mtlr r079; CHECK-P8-NEXT:    blr80entry:81  %0 = load fp128, ptr getelementptr inbounds82                            ([4 x fp128], ptr @f128Array, i64 0,83                             i64 2), align 1684  %conv = fptosi fp128 %0 to i6485  store i64 %conv, ptr %res, align 886  ret void87 88}89 90; Function Attrs: norecurse nounwind readonly91define i64 @qpConv2sdw_03(ptr nocapture readonly %a) {92; CHECK-LABEL: qpConv2sdw_03:93; CHECK:       # %bb.0: # %entry94; CHECK-NEXT:    lxv v2, 0(r3)95; CHECK-NEXT:    addis r3, r2, .LC0@toc@ha96; CHECK-NEXT:    ld r3, .LC0@toc@l(r3)97; CHECK-NEXT:    lxv v3, 16(r3)98; CHECK-NEXT:    xsaddqp v2, v2, v399; CHECK-NEXT:    xscvqpsdz v2, v2100; CHECK-NEXT:    mfvsrd r3, v2101; CHECK-NEXT:    blr102;103; CHECK-P8-LABEL: qpConv2sdw_03:104; CHECK-P8:       # %bb.0: # %entry105; CHECK-P8-NEXT:    mflr r0106; CHECK-P8-NEXT:    stdu r1, -32(r1)107; CHECK-P8-NEXT:    std r0, 48(r1)108; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32109; CHECK-P8-NEXT:    .cfi_offset lr, 16110; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3111; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha112; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)113; CHECK-P8-NEXT:    addi r3, r3, 16114; CHECK-P8-NEXT:    xxswapd v2, vs0115; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3116; CHECK-P8-NEXT:    xxswapd v3, vs0117; CHECK-P8-NEXT:    bl __addkf3118; CHECK-P8-NEXT:    nop119; CHECK-P8-NEXT:    bl __fixkfdi120; CHECK-P8-NEXT:    nop121; CHECK-P8-NEXT:    addi r1, r1, 32122; CHECK-P8-NEXT:    ld r0, 16(r1)123; CHECK-P8-NEXT:    mtlr r0124; CHECK-P8-NEXT:    blr125entry:126  %0 = load fp128, ptr %a, align 16127  %1 = load fp128, ptr getelementptr inbounds128                            ([4 x fp128], ptr @f128Array, i64 0,129                             i64 1), align 16130  %add = fadd fp128 %0, %1131  %conv = fptosi fp128 %add to i64132  ret i64 %conv133 134}135 136; Function Attrs: norecurse nounwind137define void @qpConv2sdw_04(ptr nocapture readonly %a,138; CHECK-LABEL: qpConv2sdw_04:139; CHECK:       # %bb.0: # %entry140; CHECK-NEXT:    lxv v2, 0(r3)141; CHECK-NEXT:    lxv v3, 0(r4)142; CHECK-NEXT:    xsaddqp v2, v2, v3143; CHECK-NEXT:    xscvqpsdz v2, v2144; CHECK-NEXT:    stxsd v2, 0(r5)145; CHECK-NEXT:    blr146;147; CHECK-P8-LABEL: qpConv2sdw_04:148; CHECK-P8:       # %bb.0: # %entry149; CHECK-P8-NEXT:    mflr r0150; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48151; CHECK-P8-NEXT:    .cfi_offset lr, 16152; CHECK-P8-NEXT:    .cfi_offset r30, -16153; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill154; CHECK-P8-NEXT:    stdu r1, -48(r1)155; CHECK-P8-NEXT:    std r0, 64(r1)156; CHECK-P8-NEXT:    mr r30, r5157; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3158; CHECK-P8-NEXT:    xxswapd v2, vs0159; CHECK-P8-NEXT:    lxvd2x vs0, 0, r4160; CHECK-P8-NEXT:    xxswapd v3, vs0161; CHECK-P8-NEXT:    bl __addkf3162; CHECK-P8-NEXT:    nop163; CHECK-P8-NEXT:    bl __fixkfdi164; CHECK-P8-NEXT:    nop165; CHECK-P8-NEXT:    std r3, 0(r30)166; CHECK-P8-NEXT:    addi r1, r1, 48167; CHECK-P8-NEXT:    ld r0, 16(r1)168; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload169; CHECK-P8-NEXT:    mtlr r0170; CHECK-P8-NEXT:    blr171                           ptr nocapture readonly %b, ptr nocapture %res) {172entry:173  %0 = load fp128, ptr %a, align 16174  %1 = load fp128, ptr %b, align 16175  %add = fadd fp128 %0, %1176  %conv = fptosi fp128 %add to i64177  store i64 %conv, ptr %res, align 8178  ret void179 180}181 182; Function Attrs: norecurse nounwind183define void @qpConv2sdw_testXForm(ptr nocapture %res, i32 signext %idx) {184; CHECK-LABEL: qpConv2sdw_testXForm:185; CHECK:       # %bb.0: # %entry186; CHECK-NEXT:    addis r5, r2, .LC0@toc@ha187; CHECK-NEXT:    sldi r4, r4, 3188; CHECK-NEXT:    ld r5, .LC0@toc@l(r5)189; CHECK-NEXT:    lxv v2, 32(r5)190; CHECK-NEXT:    xscvqpsdz v2, v2191; CHECK-NEXT:    stxsdx v2, r3, r4192; CHECK-NEXT:    blr193;194; CHECK-P8-LABEL: qpConv2sdw_testXForm:195; CHECK-P8:       # %bb.0: # %entry196; CHECK-P8-NEXT:    mflr r0197; CHECK-P8-NEXT:    .cfi_def_cfa_offset 64198; CHECK-P8-NEXT:    .cfi_offset lr, 16199; CHECK-P8-NEXT:    .cfi_offset r29, -24200; CHECK-P8-NEXT:    .cfi_offset r30, -16201; CHECK-P8-NEXT:    std r29, -24(r1) # 8-byte Folded Spill202; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill203; CHECK-P8-NEXT:    stdu r1, -64(r1)204; CHECK-P8-NEXT:    mr r29, r3205; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha206; CHECK-P8-NEXT:    std r0, 80(r1)207; CHECK-P8-NEXT:    mr r30, r4208; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)209; CHECK-P8-NEXT:    addi r3, r3, 32210; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3211; CHECK-P8-NEXT:    xxswapd v2, vs0212; CHECK-P8-NEXT:    bl __fixkfdi213; CHECK-P8-NEXT:    nop214; CHECK-P8-NEXT:    sldi r4, r30, 3215; CHECK-P8-NEXT:    stdx r3, r29, r4216; CHECK-P8-NEXT:    addi r1, r1, 64217; CHECK-P8-NEXT:    ld r0, 16(r1)218; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload219; CHECK-P8-NEXT:    ld r29, -24(r1) # 8-byte Folded Reload220; CHECK-P8-NEXT:    mtlr r0221; CHECK-P8-NEXT:    blr222entry:223  %0 = load fp128, ptr getelementptr inbounds224                            ([4 x fp128], ptr @f128Array,225                             i64 0, i64 2), align 16226  %conv = fptosi fp128 %0 to i64227  %idxprom = sext i32 %idx to i64228  %arrayidx = getelementptr inbounds i64, ptr %res, i64 %idxprom229  store i64 %conv, ptr %arrayidx, align 8230  ret void231 232}233 234; Function Attrs: norecurse nounwind readonly235define i64 @qpConv2udw(ptr nocapture readonly %a) {236; CHECK-LABEL: qpConv2udw:237; CHECK:       # %bb.0: # %entry238; CHECK-NEXT:    lxv v2, 0(r3)239; CHECK-NEXT:    xscvqpudz v2, v2240; CHECK-NEXT:    mfvsrd r3, v2241; CHECK-NEXT:    blr242;243; CHECK-P8-LABEL: qpConv2udw:244; CHECK-P8:       # %bb.0: # %entry245; CHECK-P8-NEXT:    mflr r0246; CHECK-P8-NEXT:    stdu r1, -32(r1)247; CHECK-P8-NEXT:    std r0, 48(r1)248; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32249; CHECK-P8-NEXT:    .cfi_offset lr, 16250; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3251; CHECK-P8-NEXT:    xxswapd v2, vs0252; CHECK-P8-NEXT:    bl __fixunskfdi253; CHECK-P8-NEXT:    nop254; CHECK-P8-NEXT:    addi r1, r1, 32255; CHECK-P8-NEXT:    ld r0, 16(r1)256; CHECK-P8-NEXT:    mtlr r0257; CHECK-P8-NEXT:    blr258entry:259  %0 = load fp128, ptr %a, align 16260  %conv = fptoui fp128 %0 to i64261  ret i64 %conv262 263}264 265; Function Attrs: norecurse nounwind266define void @qpConv2udw_02(ptr nocapture %res) {267; CHECK-LABEL: qpConv2udw_02:268; CHECK:       # %bb.0: # %entry269; CHECK-NEXT:    addis r4, r2, .LC0@toc@ha270; CHECK-NEXT:    ld r4, .LC0@toc@l(r4)271; CHECK-NEXT:    lxv v2, 32(r4)272; CHECK-NEXT:    xscvqpudz v2, v2273; CHECK-NEXT:    stxsd v2, 0(r3)274; CHECK-NEXT:    blr275;276; CHECK-P8-LABEL: qpConv2udw_02:277; CHECK-P8:       # %bb.0: # %entry278; CHECK-P8-NEXT:    mflr r0279; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48280; CHECK-P8-NEXT:    .cfi_offset lr, 16281; CHECK-P8-NEXT:    .cfi_offset r30, -16282; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill283; CHECK-P8-NEXT:    stdu r1, -48(r1)284; CHECK-P8-NEXT:    mr r30, r3285; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha286; CHECK-P8-NEXT:    std r0, 64(r1)287; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)288; CHECK-P8-NEXT:    addi r3, r3, 32289; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3290; CHECK-P8-NEXT:    xxswapd v2, vs0291; CHECK-P8-NEXT:    bl __fixunskfdi292; CHECK-P8-NEXT:    nop293; CHECK-P8-NEXT:    std r3, 0(r30)294; CHECK-P8-NEXT:    addi r1, r1, 48295; CHECK-P8-NEXT:    ld r0, 16(r1)296; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload297; CHECK-P8-NEXT:    mtlr r0298; CHECK-P8-NEXT:    blr299entry:300  %0 = load fp128, ptr getelementptr inbounds301                            ([4 x fp128], ptr @f128Array, i64 0,302                             i64 2), align 16303  %conv = fptoui fp128 %0 to i64304  store i64 %conv, ptr %res, align 8305  ret void306 307}308 309; Function Attrs: norecurse nounwind readonly310define i64 @qpConv2udw_03(ptr nocapture readonly %a) {311; CHECK-LABEL: qpConv2udw_03:312; CHECK:       # %bb.0: # %entry313; CHECK-NEXT:    lxv v2, 0(r3)314; CHECK-NEXT:    addis r3, r2, .LC0@toc@ha315; CHECK-NEXT:    ld r3, .LC0@toc@l(r3)316; CHECK-NEXT:    lxv v3, 16(r3)317; CHECK-NEXT:    xsaddqp v2, v2, v3318; CHECK-NEXT:    xscvqpudz v2, v2319; CHECK-NEXT:    mfvsrd r3, v2320; CHECK-NEXT:    blr321;322; CHECK-P8-LABEL: qpConv2udw_03:323; CHECK-P8:       # %bb.0: # %entry324; CHECK-P8-NEXT:    mflr r0325; CHECK-P8-NEXT:    stdu r1, -32(r1)326; CHECK-P8-NEXT:    std r0, 48(r1)327; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32328; CHECK-P8-NEXT:    .cfi_offset lr, 16329; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3330; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha331; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)332; CHECK-P8-NEXT:    addi r3, r3, 16333; CHECK-P8-NEXT:    xxswapd v2, vs0334; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3335; CHECK-P8-NEXT:    xxswapd v3, vs0336; CHECK-P8-NEXT:    bl __addkf3337; CHECK-P8-NEXT:    nop338; CHECK-P8-NEXT:    bl __fixunskfdi339; CHECK-P8-NEXT:    nop340; CHECK-P8-NEXT:    addi r1, r1, 32341; CHECK-P8-NEXT:    ld r0, 16(r1)342; CHECK-P8-NEXT:    mtlr r0343; CHECK-P8-NEXT:    blr344entry:345  %0 = load fp128, ptr %a, align 16346  %1 = load fp128, ptr getelementptr inbounds347                            ([4 x fp128], ptr @f128Array, i64 0,348                             i64 1), align 16349  %add = fadd fp128 %0, %1350  %conv = fptoui fp128 %add to i64351  ret i64 %conv352 353}354 355; Function Attrs: norecurse nounwind356define void @qpConv2udw_04(ptr nocapture readonly %a,357; CHECK-LABEL: qpConv2udw_04:358; CHECK:       # %bb.0: # %entry359; CHECK-NEXT:    lxv v2, 0(r3)360; CHECK-NEXT:    lxv v3, 0(r4)361; CHECK-NEXT:    xsaddqp v2, v2, v3362; CHECK-NEXT:    xscvqpudz v2, v2363; CHECK-NEXT:    stxsd v2, 0(r5)364; CHECK-NEXT:    blr365;366; CHECK-P8-LABEL: qpConv2udw_04:367; CHECK-P8:       # %bb.0: # %entry368; CHECK-P8-NEXT:    mflr r0369; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48370; CHECK-P8-NEXT:    .cfi_offset lr, 16371; CHECK-P8-NEXT:    .cfi_offset r30, -16372; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill373; CHECK-P8-NEXT:    stdu r1, -48(r1)374; CHECK-P8-NEXT:    std r0, 64(r1)375; CHECK-P8-NEXT:    mr r30, r5376; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3377; CHECK-P8-NEXT:    xxswapd v2, vs0378; CHECK-P8-NEXT:    lxvd2x vs0, 0, r4379; CHECK-P8-NEXT:    xxswapd v3, vs0380; CHECK-P8-NEXT:    bl __addkf3381; CHECK-P8-NEXT:    nop382; CHECK-P8-NEXT:    bl __fixunskfdi383; CHECK-P8-NEXT:    nop384; CHECK-P8-NEXT:    std r3, 0(r30)385; CHECK-P8-NEXT:    addi r1, r1, 48386; CHECK-P8-NEXT:    ld r0, 16(r1)387; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload388; CHECK-P8-NEXT:    mtlr r0389; CHECK-P8-NEXT:    blr390                           ptr nocapture readonly %b, ptr nocapture %res) {391entry:392  %0 = load fp128, ptr %a, align 16393  %1 = load fp128, ptr %b, align 16394  %add = fadd fp128 %0, %1395  %conv = fptoui fp128 %add to i64396  store i64 %conv, ptr %res, align 8397  ret void398 399}400 401; Function Attrs: norecurse nounwind402define void @qpConv2udw_testXForm(ptr nocapture %res, i32 signext %idx) {403; CHECK-LABEL: qpConv2udw_testXForm:404; CHECK:       # %bb.0: # %entry405; CHECK-NEXT:    addis r5, r2, .LC0@toc@ha406; CHECK-NEXT:    sldi r4, r4, 3407; CHECK-NEXT:    ld r5, .LC0@toc@l(r5)408; CHECK-NEXT:    lxv v2, 0(r5)409; CHECK-NEXT:    xscvqpudz v2, v2410; CHECK-NEXT:    stxsdx v2, r3, r4411; CHECK-NEXT:    blr412;413; CHECK-P8-LABEL: qpConv2udw_testXForm:414; CHECK-P8:       # %bb.0: # %entry415; CHECK-P8-NEXT:    mflr r0416; CHECK-P8-NEXT:    .cfi_def_cfa_offset 64417; CHECK-P8-NEXT:    .cfi_offset lr, 16418; CHECK-P8-NEXT:    .cfi_offset r29, -24419; CHECK-P8-NEXT:    .cfi_offset r30, -16420; CHECK-P8-NEXT:    std r29, -24(r1) # 8-byte Folded Spill421; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill422; CHECK-P8-NEXT:    stdu r1, -64(r1)423; CHECK-P8-NEXT:    mr r29, r3424; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha425; CHECK-P8-NEXT:    std r0, 80(r1)426; CHECK-P8-NEXT:    mr r30, r4427; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)428; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3429; CHECK-P8-NEXT:    xxswapd v2, vs0430; CHECK-P8-NEXT:    bl __fixunskfdi431; CHECK-P8-NEXT:    nop432; CHECK-P8-NEXT:    sldi r4, r30, 3433; CHECK-P8-NEXT:    stdx r3, r29, r4434; CHECK-P8-NEXT:    addi r1, r1, 64435; CHECK-P8-NEXT:    ld r0, 16(r1)436; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload437; CHECK-P8-NEXT:    ld r29, -24(r1) # 8-byte Folded Reload438; CHECK-P8-NEXT:    mtlr r0439; CHECK-P8-NEXT:    blr440entry:441  %0 = load fp128, ptr @f128Array, align 16442  %conv = fptoui fp128 %0 to i64443  %idxprom = sext i32 %idx to i64444  %arrayidx = getelementptr inbounds i64, ptr %res, i64 %idxprom445  store i64 %conv, ptr %arrayidx, align 8446  ret void447 448}449 450; Function Attrs: norecurse nounwind readonly451define signext i32 @qpConv2sw(ptr nocapture readonly %a)  {452; CHECK-LABEL: qpConv2sw:453; CHECK:       # %bb.0: # %entry454; CHECK-NEXT:    lxv v2, 0(r3)455; CHECK-NEXT:    xscvqpswz v2, v2456; CHECK-NEXT:    mfvsrwz r3, v2457; CHECK-NEXT:    extsw r3, r3458; CHECK-NEXT:    blr459;460; CHECK-P8-LABEL: qpConv2sw:461; CHECK-P8:       # %bb.0: # %entry462; CHECK-P8-NEXT:    mflr r0463; CHECK-P8-NEXT:    stdu r1, -32(r1)464; CHECK-P8-NEXT:    std r0, 48(r1)465; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32466; CHECK-P8-NEXT:    .cfi_offset lr, 16467; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3468; CHECK-P8-NEXT:    xxswapd v2, vs0469; CHECK-P8-NEXT:    bl __fixkfsi470; CHECK-P8-NEXT:    nop471; CHECK-P8-NEXT:    extsw r3, r3472; CHECK-P8-NEXT:    addi r1, r1, 32473; CHECK-P8-NEXT:    ld r0, 16(r1)474; CHECK-P8-NEXT:    mtlr r0475; CHECK-P8-NEXT:    blr476entry:477  %0 = load fp128, ptr %a, align 16478  %conv = fptosi fp128 %0 to i32479  ret i32 %conv480 481}482 483; Function Attrs: norecurse nounwind484define void @qpConv2sw_02(ptr nocapture %res) {485; CHECK-LABEL: qpConv2sw_02:486; CHECK:       # %bb.0: # %entry487; CHECK-NEXT:    addis r4, r2, .LC0@toc@ha488; CHECK-NEXT:    ld r4, .LC0@toc@l(r4)489; CHECK-NEXT:    lxv v2, 32(r4)490; CHECK-NEXT:    xscvqpswz v2, v2491; CHECK-NEXT:    stxsiwx v2, 0, r3492; CHECK-NEXT:    blr493;494; CHECK-P8-LABEL: qpConv2sw_02:495; CHECK-P8:       # %bb.0: # %entry496; CHECK-P8-NEXT:    mflr r0497; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48498; CHECK-P8-NEXT:    .cfi_offset lr, 16499; CHECK-P8-NEXT:    .cfi_offset r30, -16500; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill501; CHECK-P8-NEXT:    stdu r1, -48(r1)502; CHECK-P8-NEXT:    mr r30, r3503; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha504; CHECK-P8-NEXT:    std r0, 64(r1)505; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)506; CHECK-P8-NEXT:    addi r3, r3, 32507; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3508; CHECK-P8-NEXT:    xxswapd v2, vs0509; CHECK-P8-NEXT:    bl __fixkfsi510; CHECK-P8-NEXT:    nop511; CHECK-P8-NEXT:    stw r3, 0(r30)512; CHECK-P8-NEXT:    addi r1, r1, 48513; CHECK-P8-NEXT:    ld r0, 16(r1)514; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload515; CHECK-P8-NEXT:    mtlr r0516; CHECK-P8-NEXT:    blr517entry:518  %0 = load fp128, ptr getelementptr inbounds519                            ([4 x fp128], ptr @f128Array, i64 0,520                             i64 2), align 16521  %conv = fptosi fp128 %0 to i32522  store i32 %conv, ptr %res, align 4523  ret void524 525}526 527; Function Attrs: norecurse nounwind readonly528define signext i32 @qpConv2sw_03(ptr nocapture readonly %a)  {529; CHECK-LABEL: qpConv2sw_03:530; CHECK:       # %bb.0: # %entry531; CHECK-NEXT:    lxv v2, 0(r3)532; CHECK-NEXT:    addis r3, r2, .LC0@toc@ha533; CHECK-NEXT:    ld r3, .LC0@toc@l(r3)534; CHECK-NEXT:    lxv v3, 16(r3)535; CHECK-NEXT:    xsaddqp v2, v2, v3536; CHECK-NEXT:    xscvqpswz v2, v2537; CHECK-NEXT:    mfvsrwz r3, v2538; CHECK-NEXT:    extsw r3, r3539; CHECK-NEXT:    blr540;541; CHECK-P8-LABEL: qpConv2sw_03:542; CHECK-P8:       # %bb.0: # %entry543; CHECK-P8-NEXT:    mflr r0544; CHECK-P8-NEXT:    stdu r1, -32(r1)545; CHECK-P8-NEXT:    std r0, 48(r1)546; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32547; CHECK-P8-NEXT:    .cfi_offset lr, 16548; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3549; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha550; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)551; CHECK-P8-NEXT:    addi r3, r3, 16552; CHECK-P8-NEXT:    xxswapd v2, vs0553; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3554; CHECK-P8-NEXT:    xxswapd v3, vs0555; CHECK-P8-NEXT:    bl __addkf3556; CHECK-P8-NEXT:    nop557; CHECK-P8-NEXT:    bl __fixkfsi558; CHECK-P8-NEXT:    nop559; CHECK-P8-NEXT:    extsw r3, r3560; CHECK-P8-NEXT:    addi r1, r1, 32561; CHECK-P8-NEXT:    ld r0, 16(r1)562; CHECK-P8-NEXT:    mtlr r0563; CHECK-P8-NEXT:    blr564entry:565  %0 = load fp128, ptr %a, align 16566  %1 = load fp128, ptr getelementptr inbounds567                            ([4 x fp128], ptr @f128Array, i64 0,568                             i64 1), align 16569  %add = fadd fp128 %0, %1570  %conv = fptosi fp128 %add to i32571  ret i32 %conv572 573}574 575; Function Attrs: norecurse nounwind576define void @qpConv2sw_04(ptr nocapture readonly %a,577; CHECK-LABEL: qpConv2sw_04:578; CHECK:       # %bb.0: # %entry579; CHECK-NEXT:    lxv v2, 0(r3)580; CHECK-NEXT:    lxv v3, 0(r4)581; CHECK-NEXT:    xsaddqp v2, v2, v3582; CHECK-NEXT:    xscvqpswz v2, v2583; CHECK-NEXT:    stxsiwx v2, 0, r5584; CHECK-NEXT:    blr585;586; CHECK-P8-LABEL: qpConv2sw_04:587; CHECK-P8:       # %bb.0: # %entry588; CHECK-P8-NEXT:    mflr r0589; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48590; CHECK-P8-NEXT:    .cfi_offset lr, 16591; CHECK-P8-NEXT:    .cfi_offset r30, -16592; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill593; CHECK-P8-NEXT:    stdu r1, -48(r1)594; CHECK-P8-NEXT:    std r0, 64(r1)595; CHECK-P8-NEXT:    mr r30, r5596; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3597; CHECK-P8-NEXT:    xxswapd v2, vs0598; CHECK-P8-NEXT:    lxvd2x vs0, 0, r4599; CHECK-P8-NEXT:    xxswapd v3, vs0600; CHECK-P8-NEXT:    bl __addkf3601; CHECK-P8-NEXT:    nop602; CHECK-P8-NEXT:    bl __fixkfsi603; CHECK-P8-NEXT:    nop604; CHECK-P8-NEXT:    stw r3, 0(r30)605; CHECK-P8-NEXT:    addi r1, r1, 48606; CHECK-P8-NEXT:    ld r0, 16(r1)607; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload608; CHECK-P8-NEXT:    mtlr r0609; CHECK-P8-NEXT:    blr610                          ptr nocapture readonly %b, ptr nocapture %res) {611entry:612  %0 = load fp128, ptr %a, align 16613  %1 = load fp128, ptr %b, align 16614  %add = fadd fp128 %0, %1615  %conv = fptosi fp128 %add to i32616  store i32 %conv, ptr %res, align 4617  ret void618 619}620 621; Function Attrs: norecurse nounwind readonly622define zeroext i32 @qpConv2uw(ptr nocapture readonly %a)  {623; CHECK-LABEL: qpConv2uw:624; CHECK:       # %bb.0: # %entry625; CHECK-NEXT:    lxv v2, 0(r3)626; CHECK-NEXT:    xscvqpuwz v2, v2627; CHECK-NEXT:    mfvsrwz r3, v2628; CHECK-NEXT:    blr629;630; CHECK-P8-LABEL: qpConv2uw:631; CHECK-P8:       # %bb.0: # %entry632; CHECK-P8-NEXT:    mflr r0633; CHECK-P8-NEXT:    stdu r1, -32(r1)634; CHECK-P8-NEXT:    std r0, 48(r1)635; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32636; CHECK-P8-NEXT:    .cfi_offset lr, 16637; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3638; CHECK-P8-NEXT:    xxswapd v2, vs0639; CHECK-P8-NEXT:    bl __fixunskfsi640; CHECK-P8-NEXT:    nop641; CHECK-P8-NEXT:    addi r1, r1, 32642; CHECK-P8-NEXT:    ld r0, 16(r1)643; CHECK-P8-NEXT:    mtlr r0644; CHECK-P8-NEXT:    blr645entry:646  %0 = load fp128, ptr %a, align 16647  %conv = fptoui fp128 %0 to i32648  ret i32 %conv649 650}651 652; Function Attrs: norecurse nounwind653define void @qpConv2uw_02(ptr nocapture %res) {654; CHECK-LABEL: qpConv2uw_02:655; CHECK:       # %bb.0: # %entry656; CHECK-NEXT:    addis r4, r2, .LC0@toc@ha657; CHECK-NEXT:    ld r4, .LC0@toc@l(r4)658; CHECK-NEXT:    lxv v2, 32(r4)659; CHECK-NEXT:    xscvqpuwz v2, v2660; CHECK-NEXT:    stxsiwx v2, 0, r3661; CHECK-NEXT:    blr662;663; CHECK-P8-LABEL: qpConv2uw_02:664; CHECK-P8:       # %bb.0: # %entry665; CHECK-P8-NEXT:    mflr r0666; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48667; CHECK-P8-NEXT:    .cfi_offset lr, 16668; CHECK-P8-NEXT:    .cfi_offset r30, -16669; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill670; CHECK-P8-NEXT:    stdu r1, -48(r1)671; CHECK-P8-NEXT:    mr r30, r3672; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha673; CHECK-P8-NEXT:    std r0, 64(r1)674; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)675; CHECK-P8-NEXT:    addi r3, r3, 32676; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3677; CHECK-P8-NEXT:    xxswapd v2, vs0678; CHECK-P8-NEXT:    bl __fixunskfsi679; CHECK-P8-NEXT:    nop680; CHECK-P8-NEXT:    stw r3, 0(r30)681; CHECK-P8-NEXT:    addi r1, r1, 48682; CHECK-P8-NEXT:    ld r0, 16(r1)683; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload684; CHECK-P8-NEXT:    mtlr r0685; CHECK-P8-NEXT:    blr686entry:687  %0 = load fp128, ptr getelementptr inbounds688                            ([4 x fp128], ptr @f128Array, i64 0,689                             i64 2), align 16690  %conv = fptoui fp128 %0 to i32691  store i32 %conv, ptr %res, align 4692  ret void693 694}695 696; Function Attrs: norecurse nounwind readonly697define zeroext i32 @qpConv2uw_03(ptr nocapture readonly %a)  {698; CHECK-LABEL: qpConv2uw_03:699; CHECK:       # %bb.0: # %entry700; CHECK-NEXT:    lxv v2, 0(r3)701; CHECK-NEXT:    addis r3, r2, .LC0@toc@ha702; CHECK-NEXT:    ld r3, .LC0@toc@l(r3)703; CHECK-NEXT:    lxv v3, 16(r3)704; CHECK-NEXT:    xsaddqp v2, v2, v3705; CHECK-NEXT:    xscvqpuwz v2, v2706; CHECK-NEXT:    mfvsrwz r3, v2707; CHECK-NEXT:    blr708;709; CHECK-P8-LABEL: qpConv2uw_03:710; CHECK-P8:       # %bb.0: # %entry711; CHECK-P8-NEXT:    mflr r0712; CHECK-P8-NEXT:    stdu r1, -32(r1)713; CHECK-P8-NEXT:    std r0, 48(r1)714; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32715; CHECK-P8-NEXT:    .cfi_offset lr, 16716; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3717; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha718; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)719; CHECK-P8-NEXT:    addi r3, r3, 16720; CHECK-P8-NEXT:    xxswapd v2, vs0721; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3722; CHECK-P8-NEXT:    xxswapd v3, vs0723; CHECK-P8-NEXT:    bl __addkf3724; CHECK-P8-NEXT:    nop725; CHECK-P8-NEXT:    bl __fixunskfsi726; CHECK-P8-NEXT:    nop727; CHECK-P8-NEXT:    addi r1, r1, 32728; CHECK-P8-NEXT:    ld r0, 16(r1)729; CHECK-P8-NEXT:    mtlr r0730; CHECK-P8-NEXT:    blr731entry:732  %0 = load fp128, ptr %a, align 16733  %1 = load fp128, ptr getelementptr inbounds734                            ([4 x fp128], ptr @f128Array, i64 0,735                             i64 1), align 16736  %add = fadd fp128 %0, %1737  %conv = fptoui fp128 %add to i32738  ret i32 %conv739 740}741 742; Function Attrs: norecurse nounwind743define void @qpConv2uw_04(ptr nocapture readonly %a,744; CHECK-LABEL: qpConv2uw_04:745; CHECK:       # %bb.0: # %entry746; CHECK-NEXT:    lxv v2, 0(r3)747; CHECK-NEXT:    lxv v3, 0(r4)748; CHECK-NEXT:    xsaddqp v2, v2, v3749; CHECK-NEXT:    xscvqpuwz v2, v2750; CHECK-NEXT:    stxsiwx v2, 0, r5751; CHECK-NEXT:    blr752;753; CHECK-P8-LABEL: qpConv2uw_04:754; CHECK-P8:       # %bb.0: # %entry755; CHECK-P8-NEXT:    mflr r0756; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48757; CHECK-P8-NEXT:    .cfi_offset lr, 16758; CHECK-P8-NEXT:    .cfi_offset r30, -16759; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill760; CHECK-P8-NEXT:    stdu r1, -48(r1)761; CHECK-P8-NEXT:    std r0, 64(r1)762; CHECK-P8-NEXT:    mr r30, r5763; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3764; CHECK-P8-NEXT:    xxswapd v2, vs0765; CHECK-P8-NEXT:    lxvd2x vs0, 0, r4766; CHECK-P8-NEXT:    xxswapd v3, vs0767; CHECK-P8-NEXT:    bl __addkf3768; CHECK-P8-NEXT:    nop769; CHECK-P8-NEXT:    bl __fixunskfsi770; CHECK-P8-NEXT:    nop771; CHECK-P8-NEXT:    stw r3, 0(r30)772; CHECK-P8-NEXT:    addi r1, r1, 48773; CHECK-P8-NEXT:    ld r0, 16(r1)774; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload775; CHECK-P8-NEXT:    mtlr r0776; CHECK-P8-NEXT:    blr777                          ptr nocapture readonly %b, ptr nocapture %res) {778entry:779  %0 = load fp128, ptr %a, align 16780  %1 = load fp128, ptr %b, align 16781  %add = fadd fp128 %0, %1782  %conv = fptoui fp128 %add to i32783  store i32 %conv, ptr %res, align 4784  ret void785 786}787 788 789; Function Attrs: norecurse nounwind readonly790define signext i16 @qpConv2shw(ptr nocapture readonly %a) {791; CHECK-LABEL: qpConv2shw:792; CHECK:       # %bb.0: # %entry793; CHECK-NEXT:    lxv v2, 0(r3)794; CHECK-NEXT:    xscvqpswz v2, v2795; CHECK-NEXT:    mfvsrwz r3, v2796; CHECK-NEXT:    extsw r3, r3797; CHECK-NEXT:    blr798;799; CHECK-P8-LABEL: qpConv2shw:800; CHECK-P8:       # %bb.0: # %entry801; CHECK-P8-NEXT:    mflr r0802; CHECK-P8-NEXT:    stdu r1, -32(r1)803; CHECK-P8-NEXT:    std r0, 48(r1)804; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32805; CHECK-P8-NEXT:    .cfi_offset lr, 16806; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3807; CHECK-P8-NEXT:    xxswapd v2, vs0808; CHECK-P8-NEXT:    bl __fixkfsi809; CHECK-P8-NEXT:    nop810; CHECK-P8-NEXT:    extsw r3, r3811; CHECK-P8-NEXT:    addi r1, r1, 32812; CHECK-P8-NEXT:    ld r0, 16(r1)813; CHECK-P8-NEXT:    mtlr r0814; CHECK-P8-NEXT:    blr815entry:816  %0 = load fp128, ptr %a, align 16817  %conv = fptosi fp128 %0 to i16818  ret i16 %conv819}820 821; Function Attrs: norecurse nounwind822define void @qpConv2shw_02(ptr nocapture %res) {823; CHECK-LABEL: qpConv2shw_02:824; CHECK:       # %bb.0: # %entry825; CHECK-NEXT:    addis r4, r2, .LC0@toc@ha826; CHECK-NEXT:    ld r4, .LC0@toc@l(r4)827; CHECK-NEXT:    lxv v2, 32(r4)828; CHECK-NEXT:    xscvqpsdz v2, v2829; CHECK-NEXT:    stxsihx v2, 0, r3830; CHECK-NEXT:    blr831;832; CHECK-P8-LABEL: qpConv2shw_02:833; CHECK-P8:       # %bb.0: # %entry834; CHECK-P8-NEXT:    mflr r0835; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48836; CHECK-P8-NEXT:    .cfi_offset lr, 16837; CHECK-P8-NEXT:    .cfi_offset r30, -16838; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill839; CHECK-P8-NEXT:    stdu r1, -48(r1)840; CHECK-P8-NEXT:    mr r30, r3841; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha842; CHECK-P8-NEXT:    std r0, 64(r1)843; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)844; CHECK-P8-NEXT:    addi r3, r3, 32845; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3846; CHECK-P8-NEXT:    xxswapd v2, vs0847; CHECK-P8-NEXT:    bl __fixkfsi848; CHECK-P8-NEXT:    nop849; CHECK-P8-NEXT:    sth r3, 0(r30)850; CHECK-P8-NEXT:    addi r1, r1, 48851; CHECK-P8-NEXT:    ld r0, 16(r1)852; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload853; CHECK-P8-NEXT:    mtlr r0854; CHECK-P8-NEXT:    blr855entry:856  %0 = load fp128, ptr getelementptr inbounds857                            ([4 x fp128], ptr @f128Array,858                             i64 0, i64 2), align 16859  %conv = fptosi fp128 %0 to i16860  store i16 %conv, ptr %res, align 2861  ret void862}863 864; Function Attrs: norecurse nounwind readonly865define signext i16 @qpConv2shw_03(ptr nocapture readonly %a) {866; CHECK-LABEL: qpConv2shw_03:867; CHECK:       # %bb.0: # %entry868; CHECK-NEXT:    lxv v2, 0(r3)869; CHECK-NEXT:    addis r3, r2, .LC0@toc@ha870; CHECK-NEXT:    ld r3, .LC0@toc@l(r3)871; CHECK-NEXT:    lxv v3, 16(r3)872; CHECK-NEXT:    xsaddqp v2, v2, v3873; CHECK-NEXT:    xscvqpswz v2, v2874; CHECK-NEXT:    mfvsrwz r3, v2875; CHECK-NEXT:    extsw r3, r3876; CHECK-NEXT:    blr877;878; CHECK-P8-LABEL: qpConv2shw_03:879; CHECK-P8:       # %bb.0: # %entry880; CHECK-P8-NEXT:    mflr r0881; CHECK-P8-NEXT:    stdu r1, -32(r1)882; CHECK-P8-NEXT:    std r0, 48(r1)883; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32884; CHECK-P8-NEXT:    .cfi_offset lr, 16885; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3886; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha887; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)888; CHECK-P8-NEXT:    addi r3, r3, 16889; CHECK-P8-NEXT:    xxswapd v2, vs0890; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3891; CHECK-P8-NEXT:    xxswapd v3, vs0892; CHECK-P8-NEXT:    bl __addkf3893; CHECK-P8-NEXT:    nop894; CHECK-P8-NEXT:    bl __fixkfsi895; CHECK-P8-NEXT:    nop896; CHECK-P8-NEXT:    extsw r3, r3897; CHECK-P8-NEXT:    addi r1, r1, 32898; CHECK-P8-NEXT:    ld r0, 16(r1)899; CHECK-P8-NEXT:    mtlr r0900; CHECK-P8-NEXT:    blr901entry:902  %0 = load fp128, ptr %a, align 16903  %1 = load fp128, ptr getelementptr inbounds904                            ([4 x fp128], ptr @f128Array,905                             i64 0, i64 1), align 16906  %add = fadd fp128 %0, %1907  %conv = fptosi fp128 %add to i16908  ret i16 %conv909}910 911; Function Attrs: norecurse nounwind912define void @qpConv2shw_04(ptr nocapture readonly %a,913; CHECK-LABEL: qpConv2shw_04:914; CHECK:       # %bb.0: # %entry915; CHECK-NEXT:    lxv v2, 0(r3)916; CHECK-NEXT:    lxv v3, 0(r4)917; CHECK-NEXT:    xsaddqp v2, v2, v3918; CHECK-NEXT:    xscvqpsdz v2, v2919; CHECK-NEXT:    stxsihx v2, 0, r5920; CHECK-NEXT:    blr921;922; CHECK-P8-LABEL: qpConv2shw_04:923; CHECK-P8:       # %bb.0: # %entry924; CHECK-P8-NEXT:    mflr r0925; CHECK-P8-NEXT:    .cfi_def_cfa_offset 48926; CHECK-P8-NEXT:    .cfi_offset lr, 16927; CHECK-P8-NEXT:    .cfi_offset r30, -16928; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill929; CHECK-P8-NEXT:    stdu r1, -48(r1)930; CHECK-P8-NEXT:    std r0, 64(r1)931; CHECK-P8-NEXT:    mr r30, r5932; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3933; CHECK-P8-NEXT:    xxswapd v2, vs0934; CHECK-P8-NEXT:    lxvd2x vs0, 0, r4935; CHECK-P8-NEXT:    xxswapd v3, vs0936; CHECK-P8-NEXT:    bl __addkf3937; CHECK-P8-NEXT:    nop938; CHECK-P8-NEXT:    bl __fixkfsi939; CHECK-P8-NEXT:    nop940; CHECK-P8-NEXT:    sth r3, 0(r30)941; CHECK-P8-NEXT:    addi r1, r1, 48942; CHECK-P8-NEXT:    ld r0, 16(r1)943; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload944; CHECK-P8-NEXT:    mtlr r0945; CHECK-P8-NEXT:    blr946                           ptr nocapture readonly %b, ptr nocapture %res) {947entry:948  %0 = load fp128, ptr %a, align 16949  %1 = load fp128, ptr %b, align 16950  %add = fadd fp128 %0, %1951  %conv = fptosi fp128 %add to i16952  store i16 %conv, ptr %res, align 2953  ret void954}955 956; Function Attrs: norecurse nounwind readonly957define zeroext i16 @qpConv2uhw(ptr nocapture readonly %a) {958; CHECK-LABEL: qpConv2uhw:959; CHECK:       # %bb.0: # %entry960; CHECK-NEXT:    lxv v2, 0(r3)961; CHECK-NEXT:    xscvqpswz v2, v2962; CHECK-NEXT:    mfvsrwz r3, v2963; CHECK-NEXT:    blr964;965; CHECK-P8-LABEL: qpConv2uhw:966; CHECK-P8:       # %bb.0: # %entry967; CHECK-P8-NEXT:    mflr r0968; CHECK-P8-NEXT:    stdu r1, -32(r1)969; CHECK-P8-NEXT:    std r0, 48(r1)970; CHECK-P8-NEXT:    .cfi_def_cfa_offset 32971; CHECK-P8-NEXT:    .cfi_offset lr, 16972; CHECK-P8-NEXT:    lxvd2x vs0, 0, r3973; CHECK-P8-NEXT:    xxswapd v2, vs0974; CHECK-P8-NEXT:    bl __fixkfsi975; CHECK-P8-NEXT:    nop976; CHECK-P8-NEXT:    addi r1, r1, 32977; CHECK-P8-NEXT:    ld r0, 16(r1)978; CHECK-P8-NEXT:    mtlr r0979; CHECK-P8-NEXT:    blr980entry:981  %0 = load fp128, ptr %a, align 16982  %conv = fptoui fp128 %0 to i16983  ret i16 %conv984}985 986; Function Attrs: norecurse nounwind987define void @qpConv2uhw_02(ptr nocapture %res) {988; CHECK-LABEL: qpConv2uhw_02:989; CHECK:       # %bb.0: # %entry990; CHECK-NEXT:    addis r4, r2, .LC0@toc@ha991; CHECK-NEXT:    ld r4, .LC0@toc@l(r4)992; CHECK-NEXT:    lxv v2, 32(r4)993; CHECK-NEXT:    xscvqpudz v2, v2994; CHECK-NEXT:    stxsihx v2, 0, r3995; CHECK-NEXT:    blr996;997; CHECK-P8-LABEL: qpConv2uhw_02:998; CHECK-P8:       # %bb.0: # %entry999; CHECK-P8-NEXT:    mflr r01000; CHECK-P8-NEXT:    .cfi_def_cfa_offset 481001; CHECK-P8-NEXT:    .cfi_offset lr, 161002; CHECK-P8-NEXT:    .cfi_offset r30, -161003; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1004; CHECK-P8-NEXT:    stdu r1, -48(r1)1005; CHECK-P8-NEXT:    mr r30, r31006; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha1007; CHECK-P8-NEXT:    std r0, 64(r1)1008; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)1009; CHECK-P8-NEXT:    addi r3, r3, 321010; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31011; CHECK-P8-NEXT:    xxswapd v2, vs01012; CHECK-P8-NEXT:    bl __fixkfsi1013; CHECK-P8-NEXT:    nop1014; CHECK-P8-NEXT:    sth r3, 0(r30)1015; CHECK-P8-NEXT:    addi r1, r1, 481016; CHECK-P8-NEXT:    ld r0, 16(r1)1017; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1018; CHECK-P8-NEXT:    mtlr r01019; CHECK-P8-NEXT:    blr1020entry:1021  %0 = load fp128, ptr getelementptr inbounds1022                            ([4 x fp128], ptr @f128Array,1023                             i64 0, i64 2), align 161024  %conv = fptoui fp128 %0 to i161025  store i16 %conv, ptr %res, align 21026  ret void1027}1028 1029; Function Attrs: norecurse nounwind readonly1030define zeroext i16 @qpConv2uhw_03(ptr nocapture readonly %a) {1031; CHECK-LABEL: qpConv2uhw_03:1032; CHECK:       # %bb.0: # %entry1033; CHECK-NEXT:    lxv v2, 0(r3)1034; CHECK-NEXT:    addis r3, r2, .LC0@toc@ha1035; CHECK-NEXT:    ld r3, .LC0@toc@l(r3)1036; CHECK-NEXT:    lxv v3, 16(r3)1037; CHECK-NEXT:    xsaddqp v2, v2, v31038; CHECK-NEXT:    xscvqpswz v2, v21039; CHECK-NEXT:    mfvsrwz r3, v21040; CHECK-NEXT:    blr1041;1042; CHECK-P8-LABEL: qpConv2uhw_03:1043; CHECK-P8:       # %bb.0: # %entry1044; CHECK-P8-NEXT:    mflr r01045; CHECK-P8-NEXT:    stdu r1, -32(r1)1046; CHECK-P8-NEXT:    std r0, 48(r1)1047; CHECK-P8-NEXT:    .cfi_def_cfa_offset 321048; CHECK-P8-NEXT:    .cfi_offset lr, 161049; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31050; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha1051; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)1052; CHECK-P8-NEXT:    addi r3, r3, 161053; CHECK-P8-NEXT:    xxswapd v2, vs01054; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31055; CHECK-P8-NEXT:    xxswapd v3, vs01056; CHECK-P8-NEXT:    bl __addkf31057; CHECK-P8-NEXT:    nop1058; CHECK-P8-NEXT:    bl __fixkfsi1059; CHECK-P8-NEXT:    nop1060; CHECK-P8-NEXT:    addi r1, r1, 321061; CHECK-P8-NEXT:    ld r0, 16(r1)1062; CHECK-P8-NEXT:    mtlr r01063; CHECK-P8-NEXT:    blr1064entry:1065  %0 = load fp128, ptr %a, align 161066  %1 = load fp128, ptr getelementptr inbounds1067                            ([4 x fp128], ptr @f128Array,1068                             i64 0, i64 1), align 161069  %add = fadd fp128 %0, %11070  %conv = fptoui fp128 %add to i161071  ret i16 %conv1072}1073 1074; Function Attrs: norecurse nounwind1075define void @qpConv2uhw_04(ptr nocapture readonly %a,1076; CHECK-LABEL: qpConv2uhw_04:1077; CHECK:       # %bb.0: # %entry1078; CHECK-NEXT:    lxv v2, 0(r3)1079; CHECK-NEXT:    lxv v3, 0(r4)1080; CHECK-NEXT:    xsaddqp v2, v2, v31081; CHECK-NEXT:    xscvqpudz v2, v21082; CHECK-NEXT:    stxsihx v2, 0, r51083; CHECK-NEXT:    blr1084;1085; CHECK-P8-LABEL: qpConv2uhw_04:1086; CHECK-P8:       # %bb.0: # %entry1087; CHECK-P8-NEXT:    mflr r01088; CHECK-P8-NEXT:    .cfi_def_cfa_offset 481089; CHECK-P8-NEXT:    .cfi_offset lr, 161090; CHECK-P8-NEXT:    .cfi_offset r30, -161091; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1092; CHECK-P8-NEXT:    stdu r1, -48(r1)1093; CHECK-P8-NEXT:    std r0, 64(r1)1094; CHECK-P8-NEXT:    mr r30, r51095; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31096; CHECK-P8-NEXT:    xxswapd v2, vs01097; CHECK-P8-NEXT:    lxvd2x vs0, 0, r41098; CHECK-P8-NEXT:    xxswapd v3, vs01099; CHECK-P8-NEXT:    bl __addkf31100; CHECK-P8-NEXT:    nop1101; CHECK-P8-NEXT:    bl __fixkfsi1102; CHECK-P8-NEXT:    nop1103; CHECK-P8-NEXT:    sth r3, 0(r30)1104; CHECK-P8-NEXT:    addi r1, r1, 481105; CHECK-P8-NEXT:    ld r0, 16(r1)1106; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1107; CHECK-P8-NEXT:    mtlr r01108; CHECK-P8-NEXT:    blr1109                           ptr nocapture readonly %b, ptr nocapture %res) {1110entry:1111  %0 = load fp128, ptr %a, align 161112  %1 = load fp128, ptr %b, align 161113  %add = fadd fp128 %0, %11114  %conv = fptoui fp128 %add to i161115  store i16 %conv, ptr %res, align 21116  ret void1117}1118 1119; Function Attrs: norecurse nounwind readonly1120define signext i8 @qpConv2sb(ptr nocapture readonly %a) {1121; CHECK-LABEL: qpConv2sb:1122; CHECK:       # %bb.0: # %entry1123; CHECK-NEXT:    lxv v2, 0(r3)1124; CHECK-NEXT:    xscvqpswz v2, v21125; CHECK-NEXT:    mfvsrwz r3, v21126; CHECK-NEXT:    extsw r3, r31127; CHECK-NEXT:    blr1128;1129; CHECK-P8-LABEL: qpConv2sb:1130; CHECK-P8:       # %bb.0: # %entry1131; CHECK-P8-NEXT:    mflr r01132; CHECK-P8-NEXT:    stdu r1, -32(r1)1133; CHECK-P8-NEXT:    std r0, 48(r1)1134; CHECK-P8-NEXT:    .cfi_def_cfa_offset 321135; CHECK-P8-NEXT:    .cfi_offset lr, 161136; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31137; CHECK-P8-NEXT:    xxswapd v2, vs01138; CHECK-P8-NEXT:    bl __fixkfsi1139; CHECK-P8-NEXT:    nop1140; CHECK-P8-NEXT:    extsw r3, r31141; CHECK-P8-NEXT:    addi r1, r1, 321142; CHECK-P8-NEXT:    ld r0, 16(r1)1143; CHECK-P8-NEXT:    mtlr r01144; CHECK-P8-NEXT:    blr1145entry:1146  %0 = load fp128, ptr %a, align 161147  %conv = fptosi fp128 %0 to i81148  ret i8 %conv1149}1150 1151; Function Attrs: norecurse nounwind1152define void @qpConv2sb_02(ptr nocapture %res) {1153; CHECK-LABEL: qpConv2sb_02:1154; CHECK:       # %bb.0: # %entry1155; CHECK-NEXT:    addis r4, r2, .LC0@toc@ha1156; CHECK-NEXT:    ld r4, .LC0@toc@l(r4)1157; CHECK-NEXT:    lxv v2, 32(r4)1158; CHECK-NEXT:    xscvqpsdz v2, v21159; CHECK-NEXT:    stxsibx v2, 0, r31160; CHECK-NEXT:    blr1161;1162; CHECK-P8-LABEL: qpConv2sb_02:1163; CHECK-P8:       # %bb.0: # %entry1164; CHECK-P8-NEXT:    mflr r01165; CHECK-P8-NEXT:    .cfi_def_cfa_offset 481166; CHECK-P8-NEXT:    .cfi_offset lr, 161167; CHECK-P8-NEXT:    .cfi_offset r30, -161168; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1169; CHECK-P8-NEXT:    stdu r1, -48(r1)1170; CHECK-P8-NEXT:    mr r30, r31171; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha1172; CHECK-P8-NEXT:    std r0, 64(r1)1173; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)1174; CHECK-P8-NEXT:    addi r3, r3, 321175; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31176; CHECK-P8-NEXT:    xxswapd v2, vs01177; CHECK-P8-NEXT:    bl __fixkfsi1178; CHECK-P8-NEXT:    nop1179; CHECK-P8-NEXT:    stb r3, 0(r30)1180; CHECK-P8-NEXT:    addi r1, r1, 481181; CHECK-P8-NEXT:    ld r0, 16(r1)1182; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1183; CHECK-P8-NEXT:    mtlr r01184; CHECK-P8-NEXT:    blr1185entry:1186  %0 = load fp128, ptr getelementptr inbounds1187                            ([4 x fp128], ptr @f128Array,1188                             i64 0, i64 2), align 161189  %conv = fptosi fp128 %0 to i81190  store i8 %conv, ptr %res, align 11191  ret void1192}1193 1194; Function Attrs: norecurse nounwind readonly1195define signext i8 @qpConv2sb_03(ptr nocapture readonly %a) {1196; CHECK-LABEL: qpConv2sb_03:1197; CHECK:       # %bb.0: # %entry1198; CHECK-NEXT:    lxv v2, 0(r3)1199; CHECK-NEXT:    addis r3, r2, .LC0@toc@ha1200; CHECK-NEXT:    ld r3, .LC0@toc@l(r3)1201; CHECK-NEXT:    lxv v3, 16(r3)1202; CHECK-NEXT:    xsaddqp v2, v2, v31203; CHECK-NEXT:    xscvqpswz v2, v21204; CHECK-NEXT:    mfvsrwz r3, v21205; CHECK-NEXT:    extsw r3, r31206; CHECK-NEXT:    blr1207;1208; CHECK-P8-LABEL: qpConv2sb_03:1209; CHECK-P8:       # %bb.0: # %entry1210; CHECK-P8-NEXT:    mflr r01211; CHECK-P8-NEXT:    stdu r1, -32(r1)1212; CHECK-P8-NEXT:    std r0, 48(r1)1213; CHECK-P8-NEXT:    .cfi_def_cfa_offset 321214; CHECK-P8-NEXT:    .cfi_offset lr, 161215; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31216; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha1217; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)1218; CHECK-P8-NEXT:    addi r3, r3, 161219; CHECK-P8-NEXT:    xxswapd v2, vs01220; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31221; CHECK-P8-NEXT:    xxswapd v3, vs01222; CHECK-P8-NEXT:    bl __addkf31223; CHECK-P8-NEXT:    nop1224; CHECK-P8-NEXT:    bl __fixkfsi1225; CHECK-P8-NEXT:    nop1226; CHECK-P8-NEXT:    extsw r3, r31227; CHECK-P8-NEXT:    addi r1, r1, 321228; CHECK-P8-NEXT:    ld r0, 16(r1)1229; CHECK-P8-NEXT:    mtlr r01230; CHECK-P8-NEXT:    blr1231entry:1232  %0 = load fp128, ptr %a, align 161233  %1 = load fp128, ptr getelementptr inbounds1234                            ([4 x fp128], ptr @f128Array,1235                             i64 0, i64 1), align 161236  %add = fadd fp128 %0, %11237  %conv = fptosi fp128 %add to i81238  ret i8 %conv1239}1240 1241; Function Attrs: norecurse nounwind1242define void @qpConv2sb_04(ptr nocapture readonly %a,1243; CHECK-LABEL: qpConv2sb_04:1244; CHECK:       # %bb.0: # %entry1245; CHECK-NEXT:    lxv v2, 0(r3)1246; CHECK-NEXT:    lxv v3, 0(r4)1247; CHECK-NEXT:    xsaddqp v2, v2, v31248; CHECK-NEXT:    xscvqpsdz v2, v21249; CHECK-NEXT:    stxsibx v2, 0, r51250; CHECK-NEXT:    blr1251;1252; CHECK-P8-LABEL: qpConv2sb_04:1253; CHECK-P8:       # %bb.0: # %entry1254; CHECK-P8-NEXT:    mflr r01255; CHECK-P8-NEXT:    .cfi_def_cfa_offset 481256; CHECK-P8-NEXT:    .cfi_offset lr, 161257; CHECK-P8-NEXT:    .cfi_offset r30, -161258; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1259; CHECK-P8-NEXT:    stdu r1, -48(r1)1260; CHECK-P8-NEXT:    std r0, 64(r1)1261; CHECK-P8-NEXT:    mr r30, r51262; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31263; CHECK-P8-NEXT:    xxswapd v2, vs01264; CHECK-P8-NEXT:    lxvd2x vs0, 0, r41265; CHECK-P8-NEXT:    xxswapd v3, vs01266; CHECK-P8-NEXT:    bl __addkf31267; CHECK-P8-NEXT:    nop1268; CHECK-P8-NEXT:    bl __fixkfsi1269; CHECK-P8-NEXT:    nop1270; CHECK-P8-NEXT:    stb r3, 0(r30)1271; CHECK-P8-NEXT:    addi r1, r1, 481272; CHECK-P8-NEXT:    ld r0, 16(r1)1273; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1274; CHECK-P8-NEXT:    mtlr r01275; CHECK-P8-NEXT:    blr1276                          ptr nocapture readonly %b, ptr nocapture %res) {1277entry:1278  %0 = load fp128, ptr %a, align 161279  %1 = load fp128, ptr %b, align 161280  %add = fadd fp128 %0, %11281  %conv = fptosi fp128 %add to i81282  store i8 %conv, ptr %res, align 11283  ret void1284}1285 1286; Function Attrs: norecurse nounwind readonly1287define zeroext i8 @qpConv2ub(ptr nocapture readonly %a) {1288; CHECK-LABEL: qpConv2ub:1289; CHECK:       # %bb.0: # %entry1290; CHECK-NEXT:    lxv v2, 0(r3)1291; CHECK-NEXT:    xscvqpswz v2, v21292; CHECK-NEXT:    mfvsrwz r3, v21293; CHECK-NEXT:    blr1294;1295; CHECK-P8-LABEL: qpConv2ub:1296; CHECK-P8:       # %bb.0: # %entry1297; CHECK-P8-NEXT:    mflr r01298; CHECK-P8-NEXT:    stdu r1, -32(r1)1299; CHECK-P8-NEXT:    std r0, 48(r1)1300; CHECK-P8-NEXT:    .cfi_def_cfa_offset 321301; CHECK-P8-NEXT:    .cfi_offset lr, 161302; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31303; CHECK-P8-NEXT:    xxswapd v2, vs01304; CHECK-P8-NEXT:    bl __fixkfsi1305; CHECK-P8-NEXT:    nop1306; CHECK-P8-NEXT:    addi r1, r1, 321307; CHECK-P8-NEXT:    ld r0, 16(r1)1308; CHECK-P8-NEXT:    mtlr r01309; CHECK-P8-NEXT:    blr1310entry:1311  %0 = load fp128, ptr %a, align 161312  %conv = fptoui fp128 %0 to i81313  ret i8 %conv1314}1315 1316; Function Attrs: norecurse nounwind1317define void @qpConv2ub_02(ptr nocapture %res) {1318; CHECK-LABEL: qpConv2ub_02:1319; CHECK:       # %bb.0: # %entry1320; CHECK-NEXT:    addis r4, r2, .LC0@toc@ha1321; CHECK-NEXT:    ld r4, .LC0@toc@l(r4)1322; CHECK-NEXT:    lxv v2, 32(r4)1323; CHECK-NEXT:    xscvqpudz v2, v21324; CHECK-NEXT:    stxsibx v2, 0, r31325; CHECK-NEXT:    blr1326;1327; CHECK-P8-LABEL: qpConv2ub_02:1328; CHECK-P8:       # %bb.0: # %entry1329; CHECK-P8-NEXT:    mflr r01330; CHECK-P8-NEXT:    .cfi_def_cfa_offset 481331; CHECK-P8-NEXT:    .cfi_offset lr, 161332; CHECK-P8-NEXT:    .cfi_offset r30, -161333; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1334; CHECK-P8-NEXT:    stdu r1, -48(r1)1335; CHECK-P8-NEXT:    mr r30, r31336; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha1337; CHECK-P8-NEXT:    std r0, 64(r1)1338; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)1339; CHECK-P8-NEXT:    addi r3, r3, 321340; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31341; CHECK-P8-NEXT:    xxswapd v2, vs01342; CHECK-P8-NEXT:    bl __fixkfsi1343; CHECK-P8-NEXT:    nop1344; CHECK-P8-NEXT:    stb r3, 0(r30)1345; CHECK-P8-NEXT:    addi r1, r1, 481346; CHECK-P8-NEXT:    ld r0, 16(r1)1347; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1348; CHECK-P8-NEXT:    mtlr r01349; CHECK-P8-NEXT:    blr1350entry:1351  %0 = load fp128, ptr getelementptr inbounds1352                            ([4 x fp128], ptr @f128Array,1353                             i64 0, i64 2), align 161354  %conv = fptoui fp128 %0 to i81355  store i8 %conv, ptr %res, align 11356  ret void1357}1358 1359; Function Attrs: norecurse nounwind readonly1360define zeroext i8 @qpConv2ub_03(ptr nocapture readonly %a) {1361; CHECK-LABEL: qpConv2ub_03:1362; CHECK:       # %bb.0: # %entry1363; CHECK-NEXT:    lxv v2, 0(r3)1364; CHECK-NEXT:    addis r3, r2, .LC0@toc@ha1365; CHECK-NEXT:    ld r3, .LC0@toc@l(r3)1366; CHECK-NEXT:    lxv v3, 16(r3)1367; CHECK-NEXT:    xsaddqp v2, v2, v31368; CHECK-NEXT:    xscvqpswz v2, v21369; CHECK-NEXT:    mfvsrwz r3, v21370; CHECK-NEXT:    blr1371;1372; CHECK-P8-LABEL: qpConv2ub_03:1373; CHECK-P8:       # %bb.0: # %entry1374; CHECK-P8-NEXT:    mflr r01375; CHECK-P8-NEXT:    stdu r1, -32(r1)1376; CHECK-P8-NEXT:    std r0, 48(r1)1377; CHECK-P8-NEXT:    .cfi_def_cfa_offset 321378; CHECK-P8-NEXT:    .cfi_offset lr, 161379; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31380; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha1381; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)1382; CHECK-P8-NEXT:    addi r3, r3, 161383; CHECK-P8-NEXT:    xxswapd v2, vs01384; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31385; CHECK-P8-NEXT:    xxswapd v3, vs01386; CHECK-P8-NEXT:    bl __addkf31387; CHECK-P8-NEXT:    nop1388; CHECK-P8-NEXT:    bl __fixkfsi1389; CHECK-P8-NEXT:    nop1390; CHECK-P8-NEXT:    addi r1, r1, 321391; CHECK-P8-NEXT:    ld r0, 16(r1)1392; CHECK-P8-NEXT:    mtlr r01393; CHECK-P8-NEXT:    blr1394entry:1395  %0 = load fp128, ptr %a, align 161396  %1 = load fp128, ptr getelementptr inbounds1397                            ([4 x fp128], ptr @f128Array,1398                             i64 0, i64 1), align 161399  %add = fadd fp128 %0, %11400  %conv = fptoui fp128 %add to i81401  ret i8 %conv1402}1403 1404; Function Attrs: norecurse nounwind1405define void @qpConv2ub_04(ptr nocapture readonly %a,1406; CHECK-LABEL: qpConv2ub_04:1407; CHECK:       # %bb.0: # %entry1408; CHECK-NEXT:    lxv v2, 0(r3)1409; CHECK-NEXT:    lxv v3, 0(r4)1410; CHECK-NEXT:    xsaddqp v2, v2, v31411; CHECK-NEXT:    xscvqpudz v2, v21412; CHECK-NEXT:    stxsibx v2, 0, r51413; CHECK-NEXT:    blr1414;1415; CHECK-P8-LABEL: qpConv2ub_04:1416; CHECK-P8:       # %bb.0: # %entry1417; CHECK-P8-NEXT:    mflr r01418; CHECK-P8-NEXT:    .cfi_def_cfa_offset 481419; CHECK-P8-NEXT:    .cfi_offset lr, 161420; CHECK-P8-NEXT:    .cfi_offset r30, -161421; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1422; CHECK-P8-NEXT:    stdu r1, -48(r1)1423; CHECK-P8-NEXT:    std r0, 64(r1)1424; CHECK-P8-NEXT:    mr r30, r51425; CHECK-P8-NEXT:    lxvd2x vs0, 0, r31426; CHECK-P8-NEXT:    xxswapd v2, vs01427; CHECK-P8-NEXT:    lxvd2x vs0, 0, r41428; CHECK-P8-NEXT:    xxswapd v3, vs01429; CHECK-P8-NEXT:    bl __addkf31430; CHECK-P8-NEXT:    nop1431; CHECK-P8-NEXT:    bl __fixkfsi1432; CHECK-P8-NEXT:    nop1433; CHECK-P8-NEXT:    stb r3, 0(r30)1434; CHECK-P8-NEXT:    addi r1, r1, 481435; CHECK-P8-NEXT:    ld r0, 16(r1)1436; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1437; CHECK-P8-NEXT:    mtlr r01438; CHECK-P8-NEXT:    blr1439                          ptr nocapture readonly %b, ptr nocapture %res) {1440entry:1441  %0 = load fp128, ptr %a, align 161442  %1 = load fp128, ptr %b, align 161443  %add = fadd fp128 %0, %11444  %conv = fptoui fp128 %add to i81445  store i8 %conv, ptr %res, align 11446  ret void1447}1448 1449define void @qpConvppcf128(fp128 %src, ptr %dst) {1450; CHECK-LABEL: qpConvppcf128:1451; CHECK:       # %bb.0: # %entry1452; CHECK-NEXT:    mflr r01453; CHECK-NEXT:    .cfi_def_cfa_offset 481454; CHECK-NEXT:    .cfi_offset lr, 161455; CHECK-NEXT:    .cfi_offset r30, -161456; CHECK-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1457; CHECK-NEXT:    stdu r1, -48(r1)1458; CHECK-NEXT:    std r0, 64(r1)1459; CHECK-NEXT:    mr r30, r51460; CHECK-NEXT:    bl __extendkftf21461; CHECK-NEXT:    nop1462; CHECK-NEXT:    stfd f2, 8(r30)1463; CHECK-NEXT:    stfd f1, 0(r30)1464; CHECK-NEXT:    addi r1, r1, 481465; CHECK-NEXT:    ld r0, 16(r1)1466; CHECK-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1467; CHECK-NEXT:    mtlr r01468; CHECK-NEXT:    blr1469;1470; CHECK-P8-LABEL: qpConvppcf128:1471; CHECK-P8:       # %bb.0: # %entry1472; CHECK-P8-NEXT:    mflr r01473; CHECK-P8-NEXT:    .cfi_def_cfa_offset 481474; CHECK-P8-NEXT:    .cfi_offset lr, 161475; CHECK-P8-NEXT:    .cfi_offset r30, -161476; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1477; CHECK-P8-NEXT:    stdu r1, -48(r1)1478; CHECK-P8-NEXT:    std r0, 64(r1)1479; CHECK-P8-NEXT:    mr r30, r51480; CHECK-P8-NEXT:    bl __extendkftf21481; CHECK-P8-NEXT:    nop1482; CHECK-P8-NEXT:    stfd f2, 8(r30)1483; CHECK-P8-NEXT:    stfd f1, 0(r30)1484; CHECK-P8-NEXT:    addi r1, r1, 481485; CHECK-P8-NEXT:    ld r0, 16(r1)1486; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1487; CHECK-P8-NEXT:    mtlr r01488; CHECK-P8-NEXT:    blr1489entry:1490  %res = call ppc_fp128 @llvm.ppc.convert.f128.to.ppcf128(fp128 %src)1491  store ppc_fp128 %res, ptr %dst, align 161492  ret void1493}1494 1495define void @ppcf128Convqp(ppc_fp128 %src, ptr %dst) {1496; CHECK-LABEL: ppcf128Convqp:1497; CHECK:       # %bb.0: # %entry1498; CHECK-NEXT:    mflr r01499; CHECK-NEXT:    .cfi_def_cfa_offset 481500; CHECK-NEXT:    .cfi_offset lr, 161501; CHECK-NEXT:    .cfi_offset r30, -161502; CHECK-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1503; CHECK-NEXT:    stdu r1, -48(r1)1504; CHECK-NEXT:    std r0, 64(r1)1505; CHECK-NEXT:    mr r30, r51506; CHECK-NEXT:    bl __trunctfkf21507; CHECK-NEXT:    nop1508; CHECK-NEXT:    stxv v2, 0(r30)1509; CHECK-NEXT:    addi r1, r1, 481510; CHECK-NEXT:    ld r0, 16(r1)1511; CHECK-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1512; CHECK-NEXT:    mtlr r01513; CHECK-NEXT:    blr1514;1515; CHECK-P8-LABEL: ppcf128Convqp:1516; CHECK-P8:       # %bb.0: # %entry1517; CHECK-P8-NEXT:    mflr r01518; CHECK-P8-NEXT:    .cfi_def_cfa_offset 481519; CHECK-P8-NEXT:    .cfi_offset lr, 161520; CHECK-P8-NEXT:    .cfi_offset r30, -161521; CHECK-P8-NEXT:    std r30, -16(r1) # 8-byte Folded Spill1522; CHECK-P8-NEXT:    stdu r1, -48(r1)1523; CHECK-P8-NEXT:    std r0, 64(r1)1524; CHECK-P8-NEXT:    mr r30, r51525; CHECK-P8-NEXT:    bl __trunctfkf21526; CHECK-P8-NEXT:    nop1527; CHECK-P8-NEXT:    xxswapd vs0, v21528; CHECK-P8-NEXT:    stxvd2x vs0, 0, r301529; CHECK-P8-NEXT:    addi r1, r1, 481530; CHECK-P8-NEXT:    ld r0, 16(r1)1531; CHECK-P8-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload1532; CHECK-P8-NEXT:    mtlr r01533; CHECK-P8-NEXT:    blr1534entry:1535  %res = call fp128 @llvm.ppc.convert.ppcf128.to.f128(ppc_fp128 %src)1536  store fp128 %res, ptr %dst, align 161537  ret void1538}1539 1540declare ppc_fp128 @llvm.ppc.convert.f128.to.ppcf128(fp128)1541declare fp128 @llvm.ppc.convert.ppcf128.to.f128(ppc_fp128)1542