case PPCISD::FCTIWZ: return "PPCISD::FCTIWZ";
case PPCISD::FCTIDUZ: return "PPCISD::FCTIDUZ";
case PPCISD::FCTIWUZ: return "PPCISD::FCTIWUZ";
- case PPCISD::FP_TO_UINT_IN_VSR:
- return "PPCISD::FP_TO_UINT_IN_VSR,";
- case PPCISD::FP_TO_SINT_IN_VSR:
- return "PPCISD::FP_TO_SINT_IN_VSR";
case PPCISD::FRE: return "PPCISD::FRE";
case PPCISD::FRSQRTE: return "PPCISD::FRSQRTE";
case PPCISD::FTSQRT:
// For strict nodes, source is the second operand.
SDValue Src = Op.getOperand(IsStrict ? 1 : 0);
SDValue Chain = IsStrict ? Op.getOperand(0) : SDValue();
- assert(Src.getValueType().isFloatingPoint());
+ MVT DestTy = Op.getSimpleValueType();
+ assert(Src.getValueType().isFloatingPoint() &&
+ (DestTy == MVT::i8 || DestTy == MVT::i16 || DestTy == MVT::i32 ||
+ DestTy == MVT::i64) &&
+ "Invalid FP_TO_INT types");
if (Src.getValueType() == MVT::f32) {
if (IsStrict) {
Src =
} else
Src = DAG.getNode(ISD::FP_EXTEND, dl, MVT::f64, Src);
}
- SDValue Conv;
+ if ((DestTy == MVT::i8 || DestTy == MVT::i16) && Subtarget.hasP9Vector())
+ DestTy = Subtarget.isPPC64() ? MVT::i64 : MVT::i32;
unsigned Opc = ISD::DELETED_NODE;
- switch (Op.getSimpleValueType().SimpleTy) {
+ switch (DestTy.SimpleTy) {
default: llvm_unreachable("Unhandled FP_TO_INT type in custom expander!");
case MVT::i32:
Opc = IsSigned ? PPCISD::FCTIWZ
"i64 FP_TO_UINT is supported only with FPCVT");
Opc = IsSigned ? PPCISD::FCTIDZ : PPCISD::FCTIDUZ;
}
+ EVT ConvTy = Src.getValueType() == MVT::f128 ? MVT::f128 : MVT::f64;
+ SDValue Conv;
if (IsStrict) {
Opc = getPPCStrictOpcode(Opc);
- Conv = DAG.getNode(Opc, dl, DAG.getVTList(MVT::f64, MVT::Other),
- {Chain, Src}, Flags);
+ Conv = DAG.getNode(Opc, dl, DAG.getVTList(ConvTy, MVT::Other), {Chain, Src},
+ Flags);
} else {
- Conv = DAG.getNode(Opc, dl, MVT::f64, Src);
+ Conv = DAG.getNode(Opc, dl, ConvTy, Src);
}
return Conv;
}
// Only perform combine for conversion to i64/i32 or power9 i16/i8.
bool ValidTypeForStoreFltAsInt =
- (Op1VT == MVT::i32 || Op1VT == MVT::i64 ||
+ (Op1VT == MVT::i32 || (Op1VT == MVT::i64 && Subtarget.isPPC64()) ||
(Subtarget.hasP9Vector() && (Op1VT == MVT::i16 || Op1VT == MVT::i8)));
- if (ResVT == MVT::f128 && !Subtarget.hasP9Vector())
+ // TODO: Lower conversion from f128 on all VSX targets
+ if (ResVT == MVT::ppcf128 || (ResVT == MVT::f128 && !Subtarget.hasP9Vector()))
return SDValue();
- if (ResVT == MVT::ppcf128 || !Subtarget.hasP8Vector() ||
+ if ((Op1VT != MVT::i64 && !Subtarget.hasP8Vector()) ||
cast<StoreSDNode>(N)->isTruncatingStore() || !ValidTypeForStoreFltAsInt)
return SDValue();
- // Extend f32 values to f64
- if (ResVT.getScalarSizeInBits() == 32) {
- Val = DAG.getNode(ISD::FP_EXTEND, dl, MVT::f64, Val);
- DCI.AddToWorklist(Val.getNode());
- }
-
- // Set signed or unsigned conversion opcode.
- unsigned ConvOpcode = (Opcode == ISD::FP_TO_SINT) ?
- PPCISD::FP_TO_SINT_IN_VSR :
- PPCISD::FP_TO_UINT_IN_VSR;
-
- Val = DAG.getNode(ConvOpcode,
- dl, ResVT == MVT::f128 ? MVT::f128 : MVT::f64, Val);
- DCI.AddToWorklist(Val.getNode());
+ Val = convertFPToInt(N->getOperand(1), DAG, Subtarget);
// Set number of bytes being converted.
unsigned ByteSize = Op1VT.getScalarSizeInBits() / 8;
cast<StoreSDNode>(N)->getMemoryVT(),
cast<StoreSDNode>(N)->getMemOperand());
- DCI.AddToWorklist(Val.getNode());
return Val;
}
FCTIDUZ,
FCTIWUZ,
- /// Floating-point-to-integer conversion instructions
- FP_TO_UINT_IN_VSR,
- FP_TO_SINT_IN_VSR,
-
/// VEXTS, ByteWidth - takes an input in VSFRC and produces an output in
/// VSFRC that is sign-extended from ByteWidth to a 64-byte integer.
VEXTS,
SDTCisFP<0>, SDTCisFP<1>
]>;
def SDT_PPCstore_scal_int_from_vsr : SDTypeProfile<0, 3, [
- SDTCisVT<0, f64>, SDTCisPtrTy<1>, SDTCisPtrTy<2>
+ SDTCisFP<0>, SDTCisPtrTy<1>, SDTCisPtrTy<2>
]>;
def SDT_PPCVexts : SDTypeProfile<1, 2, [
SDTCisVT<0, f64>, SDTCisVT<1, f64>, SDTCisPtrTy<2>
[(PPCfcfidus node:$op),
(PPCstrict_fcfidus node:$op)]>;
-def PPCcv_fp_to_uint_in_vsr:
- SDNode<"PPCISD::FP_TO_UINT_IN_VSR", SDT_PPCcv_fp_to_int, []>;
-def PPCcv_fp_to_sint_in_vsr:
- SDNode<"PPCISD::FP_TO_SINT_IN_VSR", SDT_PPCcv_fp_to_int, []>;
def PPCstore_scal_int_from_vsr:
SDNode<"PPCISD::ST_VSR_SCAL_INT", SDT_PPCstore_scal_int_from_vsr,
[SDNPHasChain, SDNPMayStore]>;
(PSTDpc $RS, $ga, 0)>;
// Special Cases For PPCstore_scal_int_from_vsr
- def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f64:$src)),
- (PPCmatpcreladdr PCRelForm:$dst), 8),
- (PSTXSDpc (XSCVDPSXDS f64:$src), $dst, 0)>;
- def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f128:$src)),
- (PPCmatpcreladdr PCRelForm:$dst), 8),
- (PSTXSDpc (COPY_TO_REGCLASS (XSCVQPSDZ f128:$src), VFRC), $dst, 0)>;
-
- def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f64:$src)),
- (PPCmatpcreladdr PCRelForm:$dst), 8),
- (PSTXSDpc (XSCVDPUXDS f64:$src), $dst, 0)>;
- def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f128:$src)),
- (PPCmatpcreladdr PCRelForm:$dst), 8),
- (PSTXSDpc (COPY_TO_REGCLASS (XSCVQPUDZ f128:$src), VFRC), $dst, 0)>;
+ def : Pat<(PPCstore_scal_int_from_vsr f64:$src, (PPCmatpcreladdr PCRelForm:$dst), 8),
+ (PSTXSDpc $src, $dst, 0)>;
+ def : Pat<(PPCstore_scal_int_from_vsr f128:$src, (PPCmatpcreladdr PCRelForm:$dst), 8),
+ (PSTXSDpc (COPY_TO_REGCLASS $src, VFRC), $dst, 0)>;
def : Pat<(v4f32 (PPCldvsxlh (PPCmatpcreladdr PCRelForm:$addr))),
(SUBREG_TO_REG (i64 1), (PLFDpc $addr, 0), sub_64)>;
def : Pat<(store v2f64:$XS, PDForm:$dst), (PSTXV $XS, memri34:$dst)>;
// Cases For PPCstore_scal_int_from_vsr
- def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f64:$src)), PDForm:$dst, 8),
- (PSTXSD (XSCVDPUXDS f64:$src), PDForm:$dst)>;
- def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f64:$src)), PDForm:$dst, 8),
- (PSTXSD (XSCVDPSXDS f64:$src), PDForm:$dst)>;
- def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f128:$src)), PDForm:$dst, 8),
- (PSTXSD (COPY_TO_REGCLASS (XSCVQPUDZ f128:$src), VFRC),
- PDForm:$dst)>;
- def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f128:$src)), PDForm:$dst, 8),
- (PSTXSD (COPY_TO_REGCLASS (XSCVQPSDZ f128:$src), VFRC),
- PDForm:$dst)>;
+ def : Pat<(PPCstore_scal_int_from_vsr f64:$src, PDForm:$dst, 8),
+ (PSTXSD $src, PDForm:$dst)>;
+ def : Pat<(PPCstore_scal_int_from_vsr f128:$src, PDForm:$dst, 8),
+ (PSTXSD (COPY_TO_REGCLASS $src, VFRC), PDForm:$dst)>;
}
let Predicates = [PrefixInstrs] in {
// Truncate & Convert QP -> (Un)Signed (D)Word (dword[1] is set to zero)
let mayRaiseFPException = 1 in {
- def XSCVQPSDZ : X_VT5_XO5_VB5<63, 25, 836, "xscvqpsdz", []>;
- def XSCVQPSWZ : X_VT5_XO5_VB5<63, 9, 836, "xscvqpswz", []>;
- def XSCVQPUDZ : X_VT5_XO5_VB5<63, 17, 836, "xscvqpudz", []>;
- def XSCVQPUWZ : X_VT5_XO5_VB5<63, 1, 836, "xscvqpuwz", []>;
+ def XSCVQPSDZ : X_VT5_XO5_VB5<63, 25, 836, "xscvqpsdz",
+ [(set f128:$RST, (PPCany_fctidz f128:$RB))]>;
+ def XSCVQPSWZ : X_VT5_XO5_VB5<63, 9, 836, "xscvqpswz",
+ [(set f128:$RST, (PPCany_fctiwz f128:$RB))]>;
+ def XSCVQPUDZ : X_VT5_XO5_VB5<63, 17, 836, "xscvqpudz",
+ [(set f128:$RST, (PPCany_fctiduz f128:$RB))]>;
+ def XSCVQPUWZ : X_VT5_XO5_VB5<63, 1, 836, "xscvqpuwz",
+ [(set f128:$RST, (PPCany_fctiwuz f128:$RB))]>;
}
// Convert (Un)Signed DWord -> QP.
def:Pat<(vmrghw_swapped_shuffle v16i8:$vA, v16i8:$vB),
(COPY_TO_REGCLASS (XXMRGHW (COPY_TO_REGCLASS $vB, VSRC),
(COPY_TO_REGCLASS $vA, VSRC)), VRRC)>;
+def : Pat<(PPCstore_scal_int_from_vsr f64:$src, XForm:$dst, 8),
+ (STXSDX $src, XForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f128:$src, XForm:$dst, 8),
+ (STXSDX (COPY_TO_REGCLASS $src, VSFRC), XForm:$dst)>;
} // HasVSX
// Any big endian VSX subtarget.
// Any pre-Power9 VSX subtarget.
let Predicates = [HasVSX, NoP9Vector] in {
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f64:$src)), ForceXForm:$dst, 8),
- (STXSDX (XSCVDPSXDS f64:$src), ForceXForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f64:$src)), ForceXForm:$dst, 8),
- (STXSDX (XSCVDPUXDS f64:$src), ForceXForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f64:$src, ForceXForm:$dst, 8),
+ (STXSDX $src, ForceXForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f128:$src, ForceXForm:$dst, 8),
+ (STXSDX (COPY_TO_REGCLASS $src, VSFRC), ForceXForm:$dst)>;
// Load-and-splat with fp-to-int conversion (using X-Form VSX/FP loads).
defm : ScalToVecWPermute<
(COPY_TO_REGCLASS $S, VSFRC)), VSSRC))>;
// Instructions for converting float to i32 feeding a store.
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f64:$src)), ForceXForm:$dst, 4),
- (STIWX (XSCVDPSXWS f64:$src), ForceXForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f64:$src)), ForceXForm:$dst, 4),
- (STIWX (XSCVDPUXWS f64:$src), ForceXForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f64:$src, ForceXForm:$dst, 4),
+ (STIWX $src, ForceXForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f128:$src, ForceXForm:$dst, 4),
+ (STIWX (COPY_TO_REGCLASS $src, VSFRC), ForceXForm:$dst)>;
+
+def : Pat<(PPCstore_scal_int_from_vsr f64:$src, ForceXForm:$dst, 4),
+ (STXSIWX $src, ForceXForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f128:$src, ForceXForm:$dst, 4),
+ (STXSIWX (COPY_TO_REGCLASS $src, VSFRC), ForceXForm:$dst)>;
def : Pat<(v2i64 (smax v2i64:$src1, v2i64:$src2)),
(v2i64 (VMAXSD (COPY_TO_REGCLASS $src1, VRRC),
(i32 (MFVSRWZ (COPY_TO_REGCLASS (XSCVQPUWZ $src), VFRC)))>;
// Instructions for store(fptosi).
-// The 8-byte version is repeated here due to availability of D-Form STXSD.
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f128:$src)), XForm:$dst, 8),
- (STXSDX (COPY_TO_REGCLASS (XSCVQPSDZ f128:$src), VFRC),
- XForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f128:$src)), DSForm:$dst, 8),
- (STXSD (COPY_TO_REGCLASS (XSCVQPSDZ f128:$src), VFRC),
- DSForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f128:$src)), ForceXForm:$dst, 4),
- (STXSIWX (COPY_TO_REGCLASS (XSCVQPSWZ $src), VFRC), ForceXForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f128:$src)), ForceXForm:$dst, 2),
- (STXSIHX (COPY_TO_REGCLASS (XSCVQPSWZ $src), VFRC), ForceXForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f128:$src)), ForceXForm:$dst, 1),
- (STXSIBX (COPY_TO_REGCLASS (XSCVQPSWZ $src), VFRC), ForceXForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f64:$src)), XForm:$dst, 8),
- (STXSDX (XSCVDPSXDS f64:$src), XForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f64:$src)), DSForm:$dst, 8),
- (STXSD (XSCVDPSXDS f64:$src), DSForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f64:$src)), ForceXForm:$dst, 2),
- (STXSIHX (XSCVDPSXWS f64:$src), ForceXForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_sint_in_vsr f64:$src)), ForceXForm:$dst, 1),
- (STXSIBX (XSCVDPSXWS f64:$src), ForceXForm:$dst)>;
-
-// Instructions for store(fptoui).
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f128:$src)), XForm:$dst, 8),
- (STXSDX (COPY_TO_REGCLASS (XSCVQPUDZ f128:$src), VFRC),
- XForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f128:$src)), DSForm:$dst, 8),
- (STXSD (COPY_TO_REGCLASS (XSCVQPUDZ f128:$src), VFRC),
- DSForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f128:$src)), ForceXForm:$dst, 4),
- (STXSIWX (COPY_TO_REGCLASS (XSCVQPUWZ $src), VFRC), ForceXForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f128:$src)), ForceXForm:$dst, 2),
- (STXSIHX (COPY_TO_REGCLASS (XSCVQPUWZ $src), VFRC), ForceXForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f128:$src)), ForceXForm:$dst, 1),
- (STXSIBX (COPY_TO_REGCLASS (XSCVQPUWZ $src), VFRC), ForceXForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f64:$src)), XForm:$dst, 8),
- (STXSDX (XSCVDPUXDS f64:$src), XForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f64:$src)), DSForm:$dst, 8),
- (STXSD (XSCVDPUXDS f64:$src), DSForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f64:$src)), ForceXForm:$dst, 2),
- (STXSIHX (XSCVDPUXWS f64:$src), ForceXForm:$dst)>;
-def : Pat<(PPCstore_scal_int_from_vsr
- (f64 (PPCcv_fp_to_uint_in_vsr f64:$src)), ForceXForm:$dst, 1),
- (STXSIBX (XSCVDPUXWS f64:$src), ForceXForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f64:$src, DSForm:$dst, 8),
+ (STXSD $src, DSForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f64:$src, ForceXForm:$dst, 2),
+ (STXSIHX $src, ForceXForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f64:$src, ForceXForm:$dst, 1),
+ (STXSIBX $src, ForceXForm:$dst)>;
+
+def : Pat<(PPCstore_scal_int_from_vsr f128:$src, DSForm:$dst, 8),
+ (STXSD (COPY_TO_REGCLASS $src, VFRC), DSForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f128:$src, ForceXForm:$dst, 2),
+ (STXSIHX (COPY_TO_REGCLASS $src, VSFRC), ForceXForm:$dst)>;
+def : Pat<(PPCstore_scal_int_from_vsr f128:$src, ForceXForm:$dst, 1),
+ (STXSIBX (COPY_TO_REGCLASS $src, VSFRC), ForceXForm:$dst)>;
// Round & Convert QP -> DP/SP
def : Pat<(f64 (any_fpround f128:$src)), (f64 (XSCVQPDP $src))>;
; CHECK-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-NEXT: ld r4, .LC0@toc@l(r4)
; CHECK-NEXT: lxv v2, 32(r4)
-; CHECK-NEXT: xscvqpswz v2, v2
+; CHECK-NEXT: xscvqpsdz v2, v2
; CHECK-NEXT: stxsihx v2, 0, r3
; CHECK-NEXT: blr
;
; CHECK-NEXT: lxv v2, 0(r3)
; CHECK-NEXT: lxv v3, 0(r4)
; CHECK-NEXT: xsaddqp v2, v2, v3
-; CHECK-NEXT: xscvqpswz v2, v2
+; CHECK-NEXT: xscvqpsdz v2, v2
; CHECK-NEXT: stxsihx v2, 0, r5
; CHECK-NEXT: blr
;
; CHECK-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-NEXT: ld r4, .LC0@toc@l(r4)
; CHECK-NEXT: lxv v2, 32(r4)
-; CHECK-NEXT: xscvqpuwz v2, v2
+; CHECK-NEXT: xscvqpudz v2, v2
; CHECK-NEXT: stxsihx v2, 0, r3
; CHECK-NEXT: blr
;
; CHECK-NEXT: lxv v2, 0(r3)
; CHECK-NEXT: lxv v3, 0(r4)
; CHECK-NEXT: xsaddqp v2, v2, v3
-; CHECK-NEXT: xscvqpuwz v2, v2
+; CHECK-NEXT: xscvqpudz v2, v2
; CHECK-NEXT: stxsihx v2, 0, r5
; CHECK-NEXT: blr
;
; CHECK-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-NEXT: ld r4, .LC0@toc@l(r4)
; CHECK-NEXT: lxv v2, 32(r4)
-; CHECK-NEXT: xscvqpswz v2, v2
+; CHECK-NEXT: xscvqpsdz v2, v2
; CHECK-NEXT: stxsibx v2, 0, r3
; CHECK-NEXT: blr
;
; CHECK-NEXT: lxv v2, 0(r3)
; CHECK-NEXT: lxv v3, 0(r4)
; CHECK-NEXT: xsaddqp v2, v2, v3
-; CHECK-NEXT: xscvqpswz v2, v2
+; CHECK-NEXT: xscvqpsdz v2, v2
; CHECK-NEXT: stxsibx v2, 0, r5
; CHECK-NEXT: blr
;
; CHECK-NEXT: addis r4, r2, .LC0@toc@ha
; CHECK-NEXT: ld r4, .LC0@toc@l(r4)
; CHECK-NEXT: lxv v2, 32(r4)
-; CHECK-NEXT: xscvqpuwz v2, v2
+; CHECK-NEXT: xscvqpudz v2, v2
; CHECK-NEXT: stxsibx v2, 0, r3
; CHECK-NEXT: blr
;
; CHECK-NEXT: lxv v2, 0(r3)
; CHECK-NEXT: lxv v3, 0(r4)
; CHECK-NEXT: xsaddqp v2, v2, v3
-; CHECK-NEXT: xscvqpuwz v2, v2
+; CHECK-NEXT: xscvqpudz v2, v2
; CHECK-NEXT: stxsibx v2, 0, r5
; CHECK-NEXT: blr
;
define dso_local void @st_0_double_uint8_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_0_double_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_align16_double_uint8_t(ptr nocapture %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_align16_double_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: addi r3, r3, 8
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_align32_double_uint8_t(ptr nocapture %ptr, double %str) {
; CHECK-P10-LABEL: st_align32_double_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxsibx f0, r3, r4
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_align32_double_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 1525
; CHECK-P9-NEXT: ori r4, r4, 56600
; CHECK-P9-NEXT: stxsibx f0, r3, r4
define dso_local void @st_align64_double_uint8_t(ptr nocapture %ptr, double %str) {
; CHECK-P10-LABEL: st_align64_double_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
; CHECK-P10-NEXT: stxsibx f0, r3, r4
;
; CHECK-P9-LABEL: st_align64_double_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: ori r4, r4, 19025
; CHECK-P9-NEXT: rldic r4, r4, 12, 24
define dso_local void @st_reg_double_uint8_t(ptr nocapture %ptr, i64 %off, double %str) {
; CHECK-POSTP8-LABEL: st_reg_double_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: stxsibx f0, r3, r4
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_or1_double_uint8_t(i64 %ptr, i8 zeroext %off, double %str) {
; CHECK-POSTP8-LABEL: st_or1_double_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: or r3, r4, r3
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_not_disjoint16_double_uint8_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint16_double_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 6
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_disjoint_align16_double_uint8_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_disjoint_align16_double_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 51
; CHECK-POSTP8-NEXT: ori r3, r3, 24
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
define dso_local void @st_not_disjoint32_double_uint8_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint32_double_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 34463
; CHECK-POSTP8-NEXT: oris r3, r3, 1
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
define dso_local void @st_disjoint_align32_double_uint8_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_disjoint_align32_double_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
;
; CHECK-P9-LABEL: st_disjoint_align32_double_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, -15264
; CHECK-P9-NEXT: and r3, r3, r4
; CHECK-P9-NEXT: lis r4, 15258
define dso_local void @st_not_disjoint64_double_uint8_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_not_disjoint64_double_uint8_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stxsibx f0, 0, r3
; CHECK-P9-LABEL: st_not_disjoint64_double_uint8_t:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 29
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: rldic r4, r4, 35, 24
; CHECK-P9-NEXT: oris r4, r4, 54437
; CHECK-P9-NEXT: ori r4, r4, 4097
define dso_local void @st_disjoint_align64_double_uint8_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_disjoint_align64_double_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldicr r3, r3, 0, 23
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
;
; CHECK-P9-LABEL: st_disjoint_align64_double_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: rldicr r3, r3, 0, 23
; CHECK-P9-NEXT: ori r4, r4, 19025
define dso_local void @st_cst_align16_double_uint8_t(double %str) {
; CHECK-POSTP8-LABEL: st_cst_align16_double_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: li r3, 4080
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_cst_align32_double_uint8_t(double %str) {
; CHECK-P10-LABEL: st_cst_align32_double_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r3, 9999900
; CHECK-P10-NEXT: stxsibx f0, 0, r3
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_cst_align32_double_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r3, 152
; CHECK-P9-NEXT: ori r3, r3, 38428
; CHECK-P9-NEXT: stxsibx f0, 0, r3
define dso_local void @st_cst_align64_double_uint8_t(double %str) {
; CHECK-P10-LABEL: st_cst_align64_double_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r3, 244140625
; CHECK-P10-NEXT: rldic r3, r3, 12, 24
; CHECK-P10-NEXT: stxsibx f0, 0, r3
;
; CHECK-P9-LABEL: st_cst_align64_double_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r3, 3725
; CHECK-P9-NEXT: ori r3, r3, 19025
; CHECK-P9-NEXT: rldic r3, r3, 12, 24
define dso_local void @st_0_double_int8_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_0_double_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_align16_double_int8_t(ptr nocapture %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_align16_double_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: addi r3, r3, 8
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_align32_double_int8_t(ptr nocapture %ptr, double %str) {
; CHECK-P10-LABEL: st_align32_double_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxsibx f0, r3, r4
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_align32_double_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 1525
; CHECK-P9-NEXT: ori r4, r4, 56600
; CHECK-P9-NEXT: stxsibx f0, r3, r4
define dso_local void @st_align64_double_int8_t(ptr nocapture %ptr, double %str) {
; CHECK-P10-LABEL: st_align64_double_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
; CHECK-P10-NEXT: stxsibx f0, r3, r4
;
; CHECK-P9-LABEL: st_align64_double_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: ori r4, r4, 19025
; CHECK-P9-NEXT: rldic r4, r4, 12, 24
define dso_local void @st_reg_double_int8_t(ptr nocapture %ptr, i64 %off, double %str) {
; CHECK-POSTP8-LABEL: st_reg_double_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: stxsibx f0, r3, r4
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_or1_double_int8_t(i64 %ptr, i8 zeroext %off, double %str) {
; CHECK-POSTP8-LABEL: st_or1_double_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: or r3, r4, r3
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_not_disjoint16_double_int8_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint16_double_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 6
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_disjoint_align16_double_int8_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_disjoint_align16_double_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 51
; CHECK-POSTP8-NEXT: ori r3, r3, 24
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
define dso_local void @st_not_disjoint32_double_int8_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint32_double_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 34463
; CHECK-POSTP8-NEXT: oris r3, r3, 1
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
define dso_local void @st_disjoint_align32_double_int8_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_disjoint_align32_double_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
;
; CHECK-P9-LABEL: st_disjoint_align32_double_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, -15264
; CHECK-P9-NEXT: and r3, r3, r4
; CHECK-P9-NEXT: lis r4, 15258
define dso_local void @st_not_disjoint64_double_int8_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_not_disjoint64_double_int8_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stxsibx f0, 0, r3
; CHECK-P9-LABEL: st_not_disjoint64_double_int8_t:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 29
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: rldic r4, r4, 35, 24
; CHECK-P9-NEXT: oris r4, r4, 54437
; CHECK-P9-NEXT: ori r4, r4, 4097
define dso_local void @st_disjoint_align64_double_int8_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_disjoint_align64_double_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldicr r3, r3, 0, 23
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
;
; CHECK-P9-LABEL: st_disjoint_align64_double_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: rldicr r3, r3, 0, 23
; CHECK-P9-NEXT: ori r4, r4, 19025
define dso_local void @st_cst_align16_double_int8_t(double %str) {
; CHECK-POSTP8-LABEL: st_cst_align16_double_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: li r3, 4080
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_cst_align32_double_int8_t(double %str) {
; CHECK-P10-LABEL: st_cst_align32_double_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r3, 9999900
; CHECK-P10-NEXT: stxsibx f0, 0, r3
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_cst_align32_double_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r3, 152
; CHECK-P9-NEXT: ori r3, r3, 38428
; CHECK-P9-NEXT: stxsibx f0, 0, r3
define dso_local void @st_cst_align64_double_int8_t(double %str) {
; CHECK-P10-LABEL: st_cst_align64_double_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r3, 244140625
; CHECK-P10-NEXT: rldic r3, r3, 12, 24
; CHECK-P10-NEXT: stxsibx f0, 0, r3
;
; CHECK-P9-LABEL: st_cst_align64_double_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r3, 3725
; CHECK-P9-NEXT: ori r3, r3, 19025
; CHECK-P9-NEXT: rldic r3, r3, 12, 24
define dso_local void @st_0_double_uint16_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_0_double_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_align16_double_uint16_t(ptr nocapture %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_align16_double_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: addi r3, r3, 8
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_align32_double_uint16_t(ptr nocapture %ptr, double %str) {
; CHECK-P10-LABEL: st_align32_double_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxsihx f0, r3, r4
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_align32_double_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 1525
; CHECK-P9-NEXT: ori r4, r4, 56600
; CHECK-P9-NEXT: stxsihx f0, r3, r4
define dso_local void @st_align64_double_uint16_t(ptr nocapture %ptr, double %str) {
; CHECK-P10-LABEL: st_align64_double_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
; CHECK-P10-NEXT: stxsihx f0, r3, r4
;
; CHECK-P9-LABEL: st_align64_double_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: ori r4, r4, 19025
; CHECK-P9-NEXT: rldic r4, r4, 12, 24
define dso_local void @st_reg_double_uint16_t(ptr nocapture %ptr, i64 %off, double %str) {
; CHECK-POSTP8-LABEL: st_reg_double_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: stxsihx f0, r3, r4
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_or1_double_uint16_t(i64 %ptr, i8 zeroext %off, double %str) {
; CHECK-POSTP8-LABEL: st_or1_double_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: or r3, r4, r3
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_not_disjoint16_double_uint16_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint16_double_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 6
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_disjoint_align16_double_uint16_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_disjoint_align16_double_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 51
; CHECK-POSTP8-NEXT: ori r3, r3, 24
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
define dso_local void @st_not_disjoint32_double_uint16_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint32_double_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 34463
; CHECK-POSTP8-NEXT: oris r3, r3, 1
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
define dso_local void @st_disjoint_align32_double_uint16_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_disjoint_align32_double_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
;
; CHECK-P9-LABEL: st_disjoint_align32_double_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, -15264
; CHECK-P9-NEXT: and r3, r3, r4
; CHECK-P9-NEXT: lis r4, 15258
define dso_local void @st_not_disjoint64_double_uint16_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_not_disjoint64_double_uint16_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stxsihx f0, 0, r3
; CHECK-P9-LABEL: st_not_disjoint64_double_uint16_t:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 29
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: rldic r4, r4, 35, 24
; CHECK-P9-NEXT: oris r4, r4, 54437
; CHECK-P9-NEXT: ori r4, r4, 4097
define dso_local void @st_disjoint_align64_double_uint16_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_disjoint_align64_double_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldicr r3, r3, 0, 23
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
;
; CHECK-P9-LABEL: st_disjoint_align64_double_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: rldicr r3, r3, 0, 23
; CHECK-P9-NEXT: ori r4, r4, 19025
define dso_local void @st_cst_align16_double_uint16_t(double %str) {
; CHECK-POSTP8-LABEL: st_cst_align16_double_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: li r3, 4080
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_cst_align32_double_uint16_t(double %str) {
; CHECK-P10-LABEL: st_cst_align32_double_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r3, 9999900
; CHECK-P10-NEXT: stxsihx f0, 0, r3
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_cst_align32_double_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r3, 152
; CHECK-P9-NEXT: ori r3, r3, 38428
; CHECK-P9-NEXT: stxsihx f0, 0, r3
define dso_local void @st_cst_align64_double_uint16_t(double %str) {
; CHECK-P10-LABEL: st_cst_align64_double_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r3, 244140625
; CHECK-P10-NEXT: rldic r3, r3, 12, 24
; CHECK-P10-NEXT: stxsihx f0, 0, r3
;
; CHECK-P9-LABEL: st_cst_align64_double_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r3, 3725
; CHECK-P9-NEXT: ori r3, r3, 19025
; CHECK-P9-NEXT: rldic r3, r3, 12, 24
define dso_local void @st_0_double_int16_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_0_double_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_align16_double_int16_t(ptr nocapture %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_align16_double_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: addi r3, r3, 8
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_align32_double_int16_t(ptr nocapture %ptr, double %str) {
; CHECK-P10-LABEL: st_align32_double_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxsihx f0, r3, r4
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_align32_double_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 1525
; CHECK-P9-NEXT: ori r4, r4, 56600
; CHECK-P9-NEXT: stxsihx f0, r3, r4
define dso_local void @st_align64_double_int16_t(ptr nocapture %ptr, double %str) {
; CHECK-P10-LABEL: st_align64_double_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
; CHECK-P10-NEXT: stxsihx f0, r3, r4
;
; CHECK-P9-LABEL: st_align64_double_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: ori r4, r4, 19025
; CHECK-P9-NEXT: rldic r4, r4, 12, 24
define dso_local void @st_reg_double_int16_t(ptr nocapture %ptr, i64 %off, double %str) {
; CHECK-POSTP8-LABEL: st_reg_double_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: stxsihx f0, r3, r4
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_or1_double_int16_t(i64 %ptr, i8 zeroext %off, double %str) {
; CHECK-POSTP8-LABEL: st_or1_double_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: or r3, r4, r3
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_not_disjoint16_double_int16_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint16_double_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 6
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_disjoint_align16_double_int16_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_disjoint_align16_double_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 51
; CHECK-POSTP8-NEXT: ori r3, r3, 24
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
define dso_local void @st_not_disjoint32_double_int16_t(i64 %ptr, double %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint32_double_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 34463
; CHECK-POSTP8-NEXT: oris r3, r3, 1
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
define dso_local void @st_disjoint_align32_double_int16_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_disjoint_align32_double_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
;
; CHECK-P9-LABEL: st_disjoint_align32_double_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, -15264
; CHECK-P9-NEXT: and r3, r3, r4
; CHECK-P9-NEXT: lis r4, 15258
define dso_local void @st_not_disjoint64_double_int16_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_not_disjoint64_double_int16_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stxsihx f0, 0, r3
; CHECK-P9-LABEL: st_not_disjoint64_double_int16_t:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 29
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: rldic r4, r4, 35, 24
; CHECK-P9-NEXT: oris r4, r4, 54437
; CHECK-P9-NEXT: ori r4, r4, 4097
define dso_local void @st_disjoint_align64_double_int16_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_disjoint_align64_double_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldicr r3, r3, 0, 23
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
;
; CHECK-P9-LABEL: st_disjoint_align64_double_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: rldicr r3, r3, 0, 23
; CHECK-P9-NEXT: ori r4, r4, 19025
define dso_local void @st_cst_align16_double_int16_t(double %str) {
; CHECK-POSTP8-LABEL: st_cst_align16_double_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: li r3, 4080
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_cst_align32_double_int16_t(double %str) {
; CHECK-P10-LABEL: st_cst_align32_double_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r3, 9999900
; CHECK-P10-NEXT: stxsihx f0, 0, r3
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_cst_align32_double_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r3, 152
; CHECK-P9-NEXT: ori r3, r3, 38428
; CHECK-P9-NEXT: stxsihx f0, 0, r3
define dso_local void @st_cst_align64_double_int16_t(double %str) {
; CHECK-P10-LABEL: st_cst_align64_double_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r3, 244140625
; CHECK-P10-NEXT: rldic r3, r3, 12, 24
; CHECK-P10-NEXT: stxsihx f0, 0, r3
;
; CHECK-P9-LABEL: st_cst_align64_double_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r3, 3725
; CHECK-P9-NEXT: ori r3, r3, 19025
; CHECK-P9-NEXT: rldic r3, r3, 12, 24
define dso_local void @st_not_disjoint64_double_uint32_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_not_disjoint64_double_uint32_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpuxws f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stfiwx f0, 0, r3
define dso_local void @st_not_disjoint64_double_int32_t(i64 %ptr, double %str) {
; CHECK-P10-LABEL: st_not_disjoint64_double_int32_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpsxws f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stfiwx f0, 0, r3
define dso_local void @st_0_float_uint8_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_0_float_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_align16_float_uint8_t(ptr nocapture %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_align16_float_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: addi r3, r3, 8
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_align32_float_uint8_t(ptr nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align32_float_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxsibx f0, r3, r4
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_align32_float_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 1525
; CHECK-P9-NEXT: ori r4, r4, 56600
; CHECK-P9-NEXT: stxsibx f0, r3, r4
define dso_local void @st_align64_float_uint8_t(ptr nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align64_float_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
; CHECK-P10-NEXT: stxsibx f0, r3, r4
;
; CHECK-P9-LABEL: st_align64_float_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: ori r4, r4, 19025
; CHECK-P9-NEXT: rldic r4, r4, 12, 24
define dso_local void @st_reg_float_uint8_t(ptr nocapture %ptr, i64 %off, float %str) {
; CHECK-POSTP8-LABEL: st_reg_float_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: stxsibx f0, r3, r4
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_or1_float_uint8_t(i64 %ptr, i8 zeroext %off, float %str) {
; CHECK-POSTP8-LABEL: st_or1_float_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: or r3, r4, r3
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_not_disjoint16_float_uint8_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint16_float_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 6
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_disjoint_align16_float_uint8_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_disjoint_align16_float_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 51
; CHECK-POSTP8-NEXT: ori r3, r3, 24
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
define dso_local void @st_not_disjoint32_float_uint8_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint32_float_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 34463
; CHECK-POSTP8-NEXT: oris r3, r3, 1
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
define dso_local void @st_disjoint_align32_float_uint8_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_disjoint_align32_float_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
;
; CHECK-P9-LABEL: st_disjoint_align32_float_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, -15264
; CHECK-P9-NEXT: and r3, r3, r4
; CHECK-P9-NEXT: lis r4, 15258
define dso_local void @st_not_disjoint64_float_uint8_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_not_disjoint64_float_uint8_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stxsibx f0, 0, r3
; CHECK-P9-LABEL: st_not_disjoint64_float_uint8_t:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 29
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: rldic r4, r4, 35, 24
; CHECK-P9-NEXT: oris r4, r4, 54437
; CHECK-P9-NEXT: ori r4, r4, 4097
define dso_local void @st_disjoint_align64_float_uint8_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_disjoint_align64_float_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldicr r3, r3, 0, 23
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
;
; CHECK-P9-LABEL: st_disjoint_align64_float_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: rldicr r3, r3, 0, 23
; CHECK-P9-NEXT: ori r4, r4, 19025
define dso_local void @st_cst_align16_float_uint8_t(float %str) {
; CHECK-POSTP8-LABEL: st_cst_align16_float_uint8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: li r3, 4080
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_cst_align32_float_uint8_t(float %str) {
; CHECK-P10-LABEL: st_cst_align32_float_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r3, 9999900
; CHECK-P10-NEXT: stxsibx f0, 0, r3
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_cst_align32_float_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r3, 152
; CHECK-P9-NEXT: ori r3, r3, 38428
; CHECK-P9-NEXT: stxsibx f0, 0, r3
define dso_local void @st_cst_align64_float_uint8_t(float %str) {
; CHECK-P10-LABEL: st_cst_align64_float_uint8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r3, 244140625
; CHECK-P10-NEXT: rldic r3, r3, 12, 24
; CHECK-P10-NEXT: stxsibx f0, 0, r3
;
; CHECK-P9-LABEL: st_cst_align64_float_uint8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r3, 3725
; CHECK-P9-NEXT: ori r3, r3, 19025
; CHECK-P9-NEXT: rldic r3, r3, 12, 24
define dso_local void @st_0_float_int8_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_0_float_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_align16_float_int8_t(ptr nocapture %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_align16_float_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: addi r3, r3, 8
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_align32_float_int8_t(ptr nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align32_float_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxsibx f0, r3, r4
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_align32_float_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 1525
; CHECK-P9-NEXT: ori r4, r4, 56600
; CHECK-P9-NEXT: stxsibx f0, r3, r4
define dso_local void @st_align64_float_int8_t(ptr nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align64_float_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
; CHECK-P10-NEXT: stxsibx f0, r3, r4
;
; CHECK-P9-LABEL: st_align64_float_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: ori r4, r4, 19025
; CHECK-P9-NEXT: rldic r4, r4, 12, 24
define dso_local void @st_reg_float_int8_t(ptr nocapture %ptr, i64 %off, float %str) {
; CHECK-POSTP8-LABEL: st_reg_float_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: stxsibx f0, r3, r4
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_or1_float_int8_t(i64 %ptr, i8 zeroext %off, float %str) {
; CHECK-POSTP8-LABEL: st_or1_float_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: or r3, r4, r3
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_not_disjoint16_float_int8_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint16_float_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 6
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_disjoint_align16_float_int8_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_disjoint_align16_float_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 51
; CHECK-POSTP8-NEXT: ori r3, r3, 24
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
define dso_local void @st_not_disjoint32_float_int8_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint32_float_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 34463
; CHECK-POSTP8-NEXT: oris r3, r3, 1
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
define dso_local void @st_disjoint_align32_float_int8_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_disjoint_align32_float_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
;
; CHECK-P9-LABEL: st_disjoint_align32_float_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, -15264
; CHECK-P9-NEXT: and r3, r3, r4
; CHECK-P9-NEXT: lis r4, 15258
define dso_local void @st_not_disjoint64_float_int8_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_not_disjoint64_float_int8_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stxsibx f0, 0, r3
; CHECK-P9-LABEL: st_not_disjoint64_float_int8_t:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 29
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: rldic r4, r4, 35, 24
; CHECK-P9-NEXT: oris r4, r4, 54437
; CHECK-P9-NEXT: ori r4, r4, 4097
define dso_local void @st_disjoint_align64_float_int8_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_disjoint_align64_float_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldicr r3, r3, 0, 23
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
;
; CHECK-P9-LABEL: st_disjoint_align64_float_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: rldicr r3, r3, 0, 23
; CHECK-P9-NEXT: ori r4, r4, 19025
define dso_local void @st_cst_align16_float_int8_t(float %str) {
; CHECK-POSTP8-LABEL: st_cst_align16_float_int8_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: li r3, 4080
; CHECK-POSTP8-NEXT: stxsibx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_cst_align32_float_int8_t(float %str) {
; CHECK-P10-LABEL: st_cst_align32_float_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r3, 9999900
; CHECK-P10-NEXT: stxsibx f0, 0, r3
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_cst_align32_float_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r3, 152
; CHECK-P9-NEXT: ori r3, r3, 38428
; CHECK-P9-NEXT: stxsibx f0, 0, r3
define dso_local void @st_cst_align64_float_int8_t(float %str) {
; CHECK-P10-LABEL: st_cst_align64_float_int8_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r3, 244140625
; CHECK-P10-NEXT: rldic r3, r3, 12, 24
; CHECK-P10-NEXT: stxsibx f0, 0, r3
;
; CHECK-P9-LABEL: st_cst_align64_float_int8_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r3, 3725
; CHECK-P9-NEXT: ori r3, r3, 19025
; CHECK-P9-NEXT: rldic r3, r3, 12, 24
define dso_local void @st_0_float_uint16_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_0_float_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_align16_float_uint16_t(ptr nocapture %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_align16_float_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: addi r3, r3, 8
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_align32_float_uint16_t(ptr nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align32_float_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxsihx f0, r3, r4
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_align32_float_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 1525
; CHECK-P9-NEXT: ori r4, r4, 56600
; CHECK-P9-NEXT: stxsihx f0, r3, r4
define dso_local void @st_align64_float_uint16_t(ptr nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align64_float_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
; CHECK-P10-NEXT: stxsihx f0, r3, r4
;
; CHECK-P9-LABEL: st_align64_float_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: ori r4, r4, 19025
; CHECK-P9-NEXT: rldic r4, r4, 12, 24
define dso_local void @st_reg_float_uint16_t(ptr nocapture %ptr, i64 %off, float %str) {
; CHECK-POSTP8-LABEL: st_reg_float_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: stxsihx f0, r3, r4
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_or1_float_uint16_t(i64 %ptr, i8 zeroext %off, float %str) {
; CHECK-POSTP8-LABEL: st_or1_float_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: or r3, r4, r3
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_not_disjoint16_float_uint16_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint16_float_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 6
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_disjoint_align16_float_uint16_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_disjoint_align16_float_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 51
; CHECK-POSTP8-NEXT: ori r3, r3, 24
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
define dso_local void @st_not_disjoint32_float_uint16_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint32_float_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 34463
; CHECK-POSTP8-NEXT: oris r3, r3, 1
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
define dso_local void @st_disjoint_align32_float_uint16_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_disjoint_align32_float_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
;
; CHECK-P9-LABEL: st_disjoint_align32_float_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, -15264
; CHECK-P9-NEXT: and r3, r3, r4
; CHECK-P9-NEXT: lis r4, 15258
define dso_local void @st_not_disjoint64_float_uint16_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_not_disjoint64_float_uint16_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stxsihx f0, 0, r3
; CHECK-P9-LABEL: st_not_disjoint64_float_uint16_t:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 29
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: rldic r4, r4, 35, 24
; CHECK-P9-NEXT: oris r4, r4, 54437
; CHECK-P9-NEXT: ori r4, r4, 4097
define dso_local void @st_disjoint_align64_float_uint16_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_disjoint_align64_float_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldicr r3, r3, 0, 23
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
;
; CHECK-P9-LABEL: st_disjoint_align64_float_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: rldicr r3, r3, 0, 23
; CHECK-P9-NEXT: ori r4, r4, 19025
define dso_local void @st_cst_align16_float_uint16_t(float %str) {
; CHECK-POSTP8-LABEL: st_cst_align16_float_uint16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpuxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpuxds f0, f1
; CHECK-POSTP8-NEXT: li r3, 4080
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_cst_align32_float_uint16_t(float %str) {
; CHECK-P10-LABEL: st_cst_align32_float_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r3, 9999900
; CHECK-P10-NEXT: stxsihx f0, 0, r3
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_cst_align32_float_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r3, 152
; CHECK-P9-NEXT: ori r3, r3, 38428
; CHECK-P9-NEXT: stxsihx f0, 0, r3
define dso_local void @st_cst_align64_float_uint16_t(float %str) {
; CHECK-P10-LABEL: st_cst_align64_float_uint16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
+; CHECK-P10-NEXT: xscvdpuxds f0, f1
; CHECK-P10-NEXT: pli r3, 244140625
; CHECK-P10-NEXT: rldic r3, r3, 12, 24
; CHECK-P10-NEXT: stxsihx f0, 0, r3
;
; CHECK-P9-LABEL: st_cst_align64_float_uint16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpuxws f0, f1
+; CHECK-P9-NEXT: xscvdpuxds f0, f1
; CHECK-P9-NEXT: lis r3, 3725
; CHECK-P9-NEXT: ori r3, r3, 19025
; CHECK-P9-NEXT: rldic r3, r3, 12, 24
define dso_local void @st_0_float_int16_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_0_float_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_align16_float_int16_t(ptr nocapture %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_align16_float_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: addi r3, r3, 8
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_align32_float_int16_t(ptr nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align32_float_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 99999000
; CHECK-P10-NEXT: stxsihx f0, r3, r4
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_align32_float_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 1525
; CHECK-P9-NEXT: ori r4, r4, 56600
; CHECK-P9-NEXT: stxsihx f0, r3, r4
define dso_local void @st_align64_float_int16_t(ptr nocapture %ptr, float %str) {
; CHECK-P10-LABEL: st_align64_float_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
; CHECK-P10-NEXT: stxsihx f0, r3, r4
;
; CHECK-P9-LABEL: st_align64_float_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: ori r4, r4, 19025
; CHECK-P9-NEXT: rldic r4, r4, 12, 24
define dso_local void @st_reg_float_int16_t(ptr nocapture %ptr, i64 %off, float %str) {
; CHECK-POSTP8-LABEL: st_reg_float_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: stxsihx f0, r3, r4
; CHECK-POSTP8-NEXT: blr
;
define dso_local void @st_or1_float_int16_t(i64 %ptr, i8 zeroext %off, float %str) {
; CHECK-POSTP8-LABEL: st_or1_float_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: or r3, r4, r3
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_not_disjoint16_float_int16_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint16_float_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 6
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_disjoint_align16_float_int16_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_disjoint_align16_float_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: rldicr r3, r3, 0, 51
; CHECK-POSTP8-NEXT: ori r3, r3, 24
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
define dso_local void @st_not_disjoint32_float_int16_t(i64 %ptr, float %str) {
; CHECK-POSTP8-LABEL: st_not_disjoint32_float_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: ori r3, r3, 34463
; CHECK-POSTP8-NEXT: oris r3, r3, 1
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
define dso_local void @st_disjoint_align32_float_int16_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_disjoint_align32_float_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: lis r4, -15264
; CHECK-P10-NEXT: and r3, r3, r4
; CHECK-P10-NEXT: pli r4, 999990000
;
; CHECK-P9-LABEL: st_disjoint_align32_float_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, -15264
; CHECK-P9-NEXT: and r3, r3, r4
; CHECK-P9-NEXT: lis r4, 15258
define dso_local void @st_not_disjoint64_float_int16_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_not_disjoint64_float_int16_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stxsihx f0, 0, r3
; CHECK-P9-LABEL: st_not_disjoint64_float_int16_t:
; CHECK-P9: # %bb.0: # %entry
; CHECK-P9-NEXT: li r4, 29
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: rldic r4, r4, 35, 24
; CHECK-P9-NEXT: oris r4, r4, 54437
; CHECK-P9-NEXT: ori r4, r4, 4097
define dso_local void @st_disjoint_align64_float_int16_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_disjoint_align64_float_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r4, 244140625
; CHECK-P10-NEXT: rldicr r3, r3, 0, 23
; CHECK-P10-NEXT: rldic r4, r4, 12, 24
;
; CHECK-P9-LABEL: st_disjoint_align64_float_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r4, 3725
; CHECK-P9-NEXT: rldicr r3, r3, 0, 23
; CHECK-P9-NEXT: ori r4, r4, 19025
define dso_local void @st_cst_align16_float_int16_t(float %str) {
; CHECK-POSTP8-LABEL: st_cst_align16_float_int16_t:
; CHECK-POSTP8: # %bb.0: # %entry
-; CHECK-POSTP8-NEXT: xscvdpsxws f0, f1
+; CHECK-POSTP8-NEXT: xscvdpsxds f0, f1
; CHECK-POSTP8-NEXT: li r3, 4080
; CHECK-POSTP8-NEXT: stxsihx f0, 0, r3
; CHECK-POSTP8-NEXT: blr
define dso_local void @st_cst_align32_float_int16_t(float %str) {
; CHECK-P10-LABEL: st_cst_align32_float_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r3, 9999900
; CHECK-P10-NEXT: stxsihx f0, 0, r3
; CHECK-P10-NEXT: blr
;
; CHECK-P9-LABEL: st_cst_align32_float_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r3, 152
; CHECK-P9-NEXT: ori r3, r3, 38428
; CHECK-P9-NEXT: stxsihx f0, 0, r3
define dso_local void @st_cst_align64_float_int16_t(float %str) {
; CHECK-P10-LABEL: st_cst_align64_float_int16_t:
; CHECK-P10: # %bb.0: # %entry
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
+; CHECK-P10-NEXT: xscvdpsxds f0, f1
; CHECK-P10-NEXT: pli r3, 244140625
; CHECK-P10-NEXT: rldic r3, r3, 12, 24
; CHECK-P10-NEXT: stxsihx f0, 0, r3
;
; CHECK-P9-LABEL: st_cst_align64_float_int16_t:
; CHECK-P9: # %bb.0: # %entry
-; CHECK-P9-NEXT: xscvdpsxws f0, f1
+; CHECK-P9-NEXT: xscvdpsxds f0, f1
; CHECK-P9-NEXT: lis r3, 3725
; CHECK-P9-NEXT: ori r3, r3, 19025
; CHECK-P9-NEXT: rldic r3, r3, 12, 24
define dso_local void @st_not_disjoint64_float_uint32_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_not_disjoint64_float_uint32_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpuxws f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpuxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stfiwx f0, 0, r3
define dso_local void @st_not_disjoint64_float_int32_t(i64 %ptr, float %str) {
; CHECK-P10-LABEL: st_not_disjoint64_float_int32_t:
; CHECK-P10: # %bb.0: # %entry
+; CHECK-P10-NEXT: xscvdpsxws f0, f1
; CHECK-P10-NEXT: pli r4, 232
; CHECK-P10-NEXT: pli r5, 3567587329
-; CHECK-P10-NEXT: xscvdpsxws f0, f1
; CHECK-P10-NEXT: rldimi r5, r4, 32, 0
; CHECK-P10-NEXT: or r3, r3, r5
; CHECK-P10-NEXT: stfiwx f0, 0, r3
; CHECK-LABEL: dpConv2shw:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfd 0, 0(3)
-; CHECK-NEXT: xscvdpsxws 0, 0
+; CHECK-NEXT: xscvdpsxds 0, 0
; CHECK-NEXT: stxsihx 0, 0, 4
; CHECK-NEXT: blr
;
; CHECK-LABEL: dpConv2sb:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfd 0, 0(3)
-; CHECK-NEXT: xscvdpsxws 0, 0
+; CHECK-NEXT: xscvdpsxds 0, 0
; CHECK-NEXT: stxsibx 0, 0, 4
; CHECK-NEXT: blr
;
; CHECK-LABEL: spConv2shw:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
-; CHECK-NEXT: xscvdpsxws 0, 0
+; CHECK-NEXT: xscvdpsxds 0, 0
; CHECK-NEXT: stxsihx 0, 0, 4
; CHECK-NEXT: blr
;
; CHECK-LABEL: spConv2sb:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
-; CHECK-NEXT: xscvdpsxws 0, 0
+; CHECK-NEXT: xscvdpsxds 0, 0
; CHECK-NEXT: stxsibx 0, 0, 4
; CHECK-NEXT: blr
;
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfd 0, 0(3)
; CHECK-NEXT: sldi 3, 5, 1
-; CHECK-NEXT: xscvdpsxws 0, 0
+; CHECK-NEXT: xscvdpsxds 0, 0
; CHECK-NEXT: stxsihx 0, 4, 3
; CHECK-NEXT: blr
;
; CHECK-LABEL: dpConv2sb_x:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfd 0, 0(3)
-; CHECK-NEXT: xscvdpsxws 0, 0
+; CHECK-NEXT: xscvdpsxds 0, 0
; CHECK-NEXT: stxsibx 0, 4, 5
; CHECK-NEXT: blr
;
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
; CHECK-NEXT: xscvdpsxds 0, 0
-; CHECK-NEXT: sldi 5, 5, 3
-; CHECK-NEXT: stxsdx 0, 4, 5
+; CHECK-NEXT: sldi 3, 5, 3
+; CHECK-NEXT: stxsdx 0, 4, 3
; CHECK-NEXT: blr
;
; CHECK-PWR8-LABEL: spConv2sdw_x:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
; CHECK-NEXT: xscvdpsxws 0, 0
-; CHECK-NEXT: sldi 5, 5, 2
-; CHECK-NEXT: stfiwx 0, 4, 5
+; CHECK-NEXT: sldi 3, 5, 2
+; CHECK-NEXT: stfiwx 0, 4, 3
; CHECK-NEXT: blr
;
; CHECK-PWR8-LABEL: spConv2sw_x:
; CHECK-LABEL: spConv2shw_x:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
-; CHECK-NEXT: xscvdpsxws 0, 0
-; CHECK-NEXT: sldi 5, 5, 1
-; CHECK-NEXT: stxsihx 0, 4, 5
+; CHECK-NEXT: xscvdpsxds 0, 0
+; CHECK-NEXT: sldi 3, 5, 1
+; CHECK-NEXT: stxsihx 0, 4, 3
; CHECK-NEXT: blr
;
; CHECK-PWR8-LABEL: spConv2shw_x:
; CHECK-LABEL: spConv2sb_x:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
-; CHECK-NEXT: xscvdpsxws 0, 0
+; CHECK-NEXT: xscvdpsxds 0, 0
; CHECK-NEXT: stxsibx 0, 4, 5
; CHECK-NEXT: blr
;
; CHECK-LABEL: dpConv2uhw:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfd 0, 0(3)
-; CHECK-NEXT: xscvdpuxws 0, 0
+; CHECK-NEXT: xscvdpuxds 0, 0
; CHECK-NEXT: stxsihx 0, 0, 4
; CHECK-NEXT: blr
;
; CHECK-LABEL: dpConv2ub:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfd 0, 0(3)
-; CHECK-NEXT: xscvdpuxws 0, 0
+; CHECK-NEXT: xscvdpuxds 0, 0
; CHECK-NEXT: stxsibx 0, 0, 4
; CHECK-NEXT: blr
;
; CHECK-LABEL: spConv2uhw:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
-; CHECK-NEXT: xscvdpuxws 0, 0
+; CHECK-NEXT: xscvdpuxds 0, 0
; CHECK-NEXT: stxsihx 0, 0, 4
; CHECK-NEXT: blr
;
; CHECK-LABEL: spConv2ub:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
-; CHECK-NEXT: xscvdpuxws 0, 0
+; CHECK-NEXT: xscvdpuxds 0, 0
; CHECK-NEXT: stxsibx 0, 0, 4
; CHECK-NEXT: blr
;
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfd 0, 0(3)
; CHECK-NEXT: sldi 3, 5, 1
-; CHECK-NEXT: xscvdpuxws 0, 0
+; CHECK-NEXT: xscvdpuxds 0, 0
; CHECK-NEXT: stxsihx 0, 4, 3
; CHECK-NEXT: blr
;
; CHECK-LABEL: dpConv2ub_x:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfd 0, 0(3)
-; CHECK-NEXT: xscvdpuxws 0, 0
+; CHECK-NEXT: xscvdpuxds 0, 0
; CHECK-NEXT: stxsibx 0, 4, 5
; CHECK-NEXT: blr
;
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
; CHECK-NEXT: xscvdpuxds 0, 0
-; CHECK-NEXT: sldi 5, 5, 3
-; CHECK-NEXT: stxsdx 0, 4, 5
+; CHECK-NEXT: sldi 3, 5, 3
+; CHECK-NEXT: stxsdx 0, 4, 3
; CHECK-NEXT: blr
;
; CHECK-PWR8-LABEL: spConv2udw_x:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
; CHECK-NEXT: xscvdpuxws 0, 0
-; CHECK-NEXT: sldi 5, 5, 2
-; CHECK-NEXT: stfiwx 0, 4, 5
+; CHECK-NEXT: sldi 3, 5, 2
+; CHECK-NEXT: stfiwx 0, 4, 3
; CHECK-NEXT: blr
;
; CHECK-PWR8-LABEL: spConv2uw_x:
; CHECK-LABEL: spConv2uhw_x:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
-; CHECK-NEXT: xscvdpuxws 0, 0
-; CHECK-NEXT: sldi 5, 5, 1
-; CHECK-NEXT: stxsihx 0, 4, 5
+; CHECK-NEXT: xscvdpuxds 0, 0
+; CHECK-NEXT: sldi 3, 5, 1
+; CHECK-NEXT: stxsihx 0, 4, 3
; CHECK-NEXT: blr
;
; CHECK-PWR8-LABEL: spConv2uhw_x:
; CHECK-LABEL: spConv2ub_x:
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: lfs 0, 0(3)
-; CHECK-NEXT: xscvdpuxws 0, 0
+; CHECK-NEXT: xscvdpuxds 0, 0
; CHECK-NEXT: stxsibx 0, 4, 5
; CHECK-NEXT: blr
;
}
+
+define void @multiple_store_64(double %m, ptr %addr1, ptr %addr2, ptr %addr3) {
+; CHECK-LABEL: multiple_store_64:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xscvdpsxds 2, 1
+; CHECK-NEXT: stxsd 2, 0(4)
+; CHECK-NEXT: stxsd 2, 0(5)
+; CHECK-NEXT: stxsd 2, 0(6)
+; CHECK-NEXT: blr
+;
+; CHECK-PWR8-LABEL: multiple_store_64:
+; CHECK-PWR8: # %bb.0: # %entry
+; CHECK-PWR8-NEXT: xscvdpsxds 0, 1
+; CHECK-PWR8-NEXT: stxsdx 0, 0, 4
+; CHECK-PWR8-NEXT: stxsdx 0, 0, 5
+; CHECK-PWR8-NEXT: stxsdx 0, 0, 6
+; CHECK-PWR8-NEXT: blr
+entry:
+ %conv1 = fptosi double %m to i64
+ store i64 %conv1, ptr %addr1, align 8
+ store i64 %conv1, ptr %addr2, align 8
+ store i64 %conv1, ptr %addr3, align 8
+ ret void
+}
+
+define void @multiple_store_32(double %m, ptr %addr1, ptr %addr2, ptr %addr3) {
+; CHECK-LABEL: multiple_store_32:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xscvdpsxws 0, 1
+; CHECK-NEXT: stfiwx 0, 0, 4
+; CHECK-NEXT: stfiwx 0, 0, 5
+; CHECK-NEXT: stfiwx 0, 0, 6
+; CHECK-NEXT: blr
+;
+; CHECK-PWR8-LABEL: multiple_store_32:
+; CHECK-PWR8: # %bb.0: # %entry
+; CHECK-PWR8-NEXT: xscvdpsxws 0, 1
+; CHECK-PWR8-NEXT: stfiwx 0, 0, 4
+; CHECK-PWR8-NEXT: stfiwx 0, 0, 5
+; CHECK-PWR8-NEXT: stfiwx 0, 0, 6
+; CHECK-PWR8-NEXT: blr
+entry:
+ %conv1 = fptosi double %m to i32
+ store i32 %conv1, ptr %addr1, align 8
+ store i32 %conv1, ptr %addr2, align 8
+ store i32 %conv1, ptr %addr3, align 8
+ ret void
+}
+
+define void @multiple_store_16(double %m, ptr %addr1, ptr %addr2, ptr %addr3) {
+; CHECK-LABEL: multiple_store_16:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: xscvdpsxds 0, 1
+; CHECK-NEXT: stxsihx 0, 0, 4
+; CHECK-NEXT: stxsihx 0, 0, 5
+; CHECK-NEXT: stxsihx 0, 0, 6
+; CHECK-NEXT: blr
+;
+; CHECK-PWR8-LABEL: multiple_store_16:
+; CHECK-PWR8: # %bb.0: # %entry
+; CHECK-PWR8-NEXT: xscvdpsxws 0, 1
+; CHECK-PWR8-NEXT: mffprwz 3, 0
+; CHECK-PWR8-NEXT: sth 3, 0(4)
+; CHECK-PWR8-NEXT: sth 3, 0(5)
+; CHECK-PWR8-NEXT: sth 3, 0(6)
+; CHECK-PWR8-NEXT: blr
+entry:
+ %conv1 = fptosi double %m to i16
+ store i16 %conv1, ptr %addr1, align 8
+ store i16 %conv1, ptr %addr2, align 8
+ store i16 %conv1, ptr %addr3, align 8
+ ret void
+}
store i8 %conv, ptr %ptr, align 1
ret void
; CHECK-LABEL: storefsc
-; CHECK: xscvdpsxws 0, 1
+; CHECK: xscvdpsxds 0, 1
; CHECK: stxsibx 0, 0, 4
; CHECK-BE-LABEL: storefsc
-; CHECK-BE: xscvdpsxws 0, 1
+; CHECK-BE: xscvdpsxds 0, 1
; CHECK-BE: stxsibx 0, 0, 4
}
store i8 %conv, ptr %ptr, align 1
ret void
; CHECK-LABEL: storedsc
-; CHECK: xscvdpsxws 0, 1
+; CHECK: xscvdpsxds 0, 1
; CHECK: stxsibx 0, 0, 4
; CHECK-BE-LABEL: storedsc
-; CHECK-BE: xscvdpsxws 0, 1
+; CHECK-BE: xscvdpsxds 0, 1
; CHECK-BE: stxsibx 0, 0, 4
}
store i16 %conv, ptr %ptr, align 2
ret void
; CHECK-LABEL: storefss
-; CHECK: xscvdpsxws 0, 1
+; CHECK: xscvdpsxds 0, 1
; CHECK: stxsihx 0, 0, 4
; CHECK-BE-LABEL: storefss
-; CHECK-BE: xscvdpsxws 0, 1
+; CHECK-BE: xscvdpsxds 0, 1
; CHECK-BE: stxsihx 0, 0, 4
}
store i16 %conv, ptr %ptr, align 2
ret void
; CHECK-LABEL: storedss
-; CHECK: xscvdpsxws 0, 1
+; CHECK: xscvdpsxds 0, 1
; CHECK: stxsihx 0, 0, 4
; CHECK-BE-LABEL: storedss
-; CHECK-BE: xscvdpsxws 0, 1
+; CHECK-BE: xscvdpsxds 0, 1
; CHECK-BE: stxsihx 0, 0, 4
}