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