Skip to content

Commit 80b4fc7

Browse files
RolandF77tomtor
authored andcommitted
[PowerPC] extend smaller splats into bigger splats (with fix) (llvm#142194)
For pwr9, xxspltib is a byte splat with a range -128 to 127 - it can be used with a following vector extend sign to make splats of i16, i32, or i64 element size. For pwr8, vspltisw with a following vector extend sign can be used to make splats of i64 elements in the range -16 to 15. Add check for P8 to make sure the 64-bit vector ops are there.
1 parent 6e4ff41 commit 80b4fc7

File tree

9 files changed

+546
-651
lines changed

9 files changed

+546
-651
lines changed

llvm/lib/Target/PowerPC/PPCISelLowering.cpp

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9672,7 +9672,24 @@ SDValue PPCTargetLowering::LowerBUILD_VECTOR(SDValue Op,
96729672
}
96739673
}
96749674

9675-
if (!BVNIsConstantSplat || SplatBitSize > 32) {
9675+
bool IsSplat64 = false;
9676+
uint64_t SplatBits = 0;
9677+
int32_t SextVal = 0;
9678+
if (BVNIsConstantSplat && SplatBitSize <= 64) {
9679+
SplatBits = APSplatBits.getZExtValue();
9680+
if (SplatBitSize <= 32) {
9681+
SextVal = SignExtend32(SplatBits, SplatBitSize);
9682+
} else if (SplatBitSize == 64 && Subtarget.hasP8Altivec()) {
9683+
int64_t Splat64Val = static_cast<int64_t>(SplatBits);
9684+
bool P9Vector = Subtarget.hasP9Vector();
9685+
int32_t Hi = P9Vector ? 127 : 15;
9686+
int32_t Lo = P9Vector ? -128 : -16;
9687+
IsSplat64 = Splat64Val >= Lo && Splat64Val <= Hi;
9688+
SextVal = static_cast<int32_t>(SplatBits);
9689+
}
9690+
}
9691+
9692+
if (!BVNIsConstantSplat || (SplatBitSize > 32 && !IsSplat64)) {
96769693
unsigned NewOpcode = PPCISD::LD_SPLAT;
96779694

96789695
// Handle load-and-splat patterns as we have instructions that will do this
@@ -9758,7 +9775,6 @@ SDValue PPCTargetLowering::LowerBUILD_VECTOR(SDValue Op,
97589775
return SDValue();
97599776
}
97609777

9761-
uint64_t SplatBits = APSplatBits.getZExtValue();
97629778
uint64_t SplatUndef = APSplatUndef.getZExtValue();
97639779
unsigned SplatSize = SplatBitSize / 8;
97649780

@@ -9793,13 +9809,43 @@ SDValue PPCTargetLowering::LowerBUILD_VECTOR(SDValue Op,
97939809
dl);
97949810

97959811
// If the sign extended value is in the range [-16,15], use VSPLTI[bhw].
9796-
int32_t SextVal = SignExtend32(SplatBits, SplatBitSize);
9797-
if (SextVal >= -16 && SextVal <= 15)
9798-
return getCanonicalConstSplat(SextVal, SplatSize, Op.getValueType(), DAG,
9799-
dl);
9812+
// Use VSPLTIW/VUPKLSW for v2i64 in range [-16,15].
9813+
if (SextVal >= -16 && SextVal <= 15) {
9814+
// SplatSize may be 1, 2, 4, or 8. Use size 4 instead of 8 for the splat to
9815+
// generate a splat word with extend for size 8.
9816+
unsigned UseSize = SplatSize == 8 ? 4 : SplatSize;
9817+
SDValue Res =
9818+
getCanonicalConstSplat(SextVal, UseSize, Op.getValueType(), DAG, dl);
9819+
if (SplatSize != 8)
9820+
return Res;
9821+
return BuildIntrinsicOp(Intrinsic::ppc_altivec_vupklsw, Res, DAG, dl);
9822+
}
98009823

98019824
// Two instruction sequences.
98029825

9826+
if (Subtarget.hasP9Vector() && SextVal >= -128 && SextVal <= 127) {
9827+
SDValue C = DAG.getConstant((unsigned char)SextVal, dl, MVT::i32);
9828+
SmallVector<SDValue, 16> Ops(16, C);
9829+
SDValue BV = DAG.getBuildVector(MVT::v16i8, dl, Ops);
9830+
unsigned IID;
9831+
switch (SplatSize) {
9832+
default:
9833+
llvm_unreachable("Unexpected type for vector constant.");
9834+
case 2:
9835+
IID = Intrinsic::ppc_altivec_vupklsb;
9836+
break;
9837+
case 4:
9838+
IID = Intrinsic::ppc_altivec_vextsb2w;
9839+
break;
9840+
case 8:
9841+
IID = Intrinsic::ppc_altivec_vextsb2d;
9842+
break;
9843+
}
9844+
SDValue Extend = BuildIntrinsicOp(IID, BV, DAG, dl);
9845+
return DAG.getBitcast(Op->getValueType(0), Extend);
9846+
}
9847+
assert(!IsSplat64 && "Unhandled 64-bit splat pattern");
9848+
98039849
// If this value is in the range [-32,30] and is even, use:
98049850
// VSPLTI[bhw](val/2) + VSPLTI[bhw](val/2)
98059851
// If this value is in the range [17,31] and is odd, use:

llvm/test/CodeGen/PowerPC/build-vector-tests.ll

Lines changed: 48 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -3713,30 +3713,26 @@ entry:
37133713
define <2 x i64> @spltConst1ll() {
37143714
; P9BE-LABEL: spltConst1ll:
37153715
; P9BE: # %bb.0: # %entry
3716-
; P9BE-NEXT: addis r3, r2, .LCPI65_0@toc@ha
3717-
; P9BE-NEXT: addi r3, r3, .LCPI65_0@toc@l
3718-
; P9BE-NEXT: lxv v2, 0(r3)
3716+
; P9BE-NEXT: vspltisw v2, 1
3717+
; P9BE-NEXT: vupklsw v2, v2
37193718
; P9BE-NEXT: blr
37203719
;
37213720
; P9LE-LABEL: spltConst1ll:
37223721
; P9LE: # %bb.0: # %entry
3723-
; P9LE-NEXT: addis r3, r2, .LCPI65_0@toc@ha
3724-
; P9LE-NEXT: addi r3, r3, .LCPI65_0@toc@l
3725-
; P9LE-NEXT: lxv v2, 0(r3)
3722+
; P9LE-NEXT: vspltisw v2, 1
3723+
; P9LE-NEXT: vupklsw v2, v2
37263724
; P9LE-NEXT: blr
37273725
;
37283726
; P8BE-LABEL: spltConst1ll:
37293727
; P8BE: # %bb.0: # %entry
3730-
; P8BE-NEXT: addis r3, r2, .LCPI65_0@toc@ha
3731-
; P8BE-NEXT: addi r3, r3, .LCPI65_0@toc@l
3732-
; P8BE-NEXT: lxvd2x v2, 0, r3
3728+
; P8BE-NEXT: vspltisw v2, 1
3729+
; P8BE-NEXT: vupklsw v2, v2
37333730
; P8BE-NEXT: blr
37343731
;
37353732
; P8LE-LABEL: spltConst1ll:
37363733
; P8LE: # %bb.0: # %entry
3737-
; P8LE-NEXT: addis r3, r2, .LCPI65_0@toc@ha
3738-
; P8LE-NEXT: addi r3, r3, .LCPI65_0@toc@l
3739-
; P8LE-NEXT: lxvd2x v2, 0, r3
3734+
; P8LE-NEXT: vspltisw v2, 1
3735+
; P8LE-NEXT: vupklsw v2, v2
37403736
; P8LE-NEXT: blr
37413737
entry:
37423738
ret <2 x i64> <i64 1, i64 1>
@@ -4173,30 +4169,26 @@ entry:
41734169
define <2 x i64> @spltCnstConvftoll() {
41744170
; P9BE-LABEL: spltCnstConvftoll:
41754171
; P9BE: # %bb.0: # %entry
4176-
; P9BE-NEXT: addis r3, r2, .LCPI78_0@toc@ha
4177-
; P9BE-NEXT: addi r3, r3, .LCPI78_0@toc@l
4178-
; P9BE-NEXT: lxv v2, 0(r3)
4172+
; P9BE-NEXT: vspltisw v2, 4
4173+
; P9BE-NEXT: vupklsw v2, v2
41794174
; P9BE-NEXT: blr
41804175
;
41814176
; P9LE-LABEL: spltCnstConvftoll:
41824177
; P9LE: # %bb.0: # %entry
4183-
; P9LE-NEXT: addis r3, r2, .LCPI78_0@toc@ha
4184-
; P9LE-NEXT: addi r3, r3, .LCPI78_0@toc@l
4185-
; P9LE-NEXT: lxv v2, 0(r3)
4178+
; P9LE-NEXT: vspltisw v2, 4
4179+
; P9LE-NEXT: vupklsw v2, v2
41864180
; P9LE-NEXT: blr
41874181
;
41884182
; P8BE-LABEL: spltCnstConvftoll:
41894183
; P8BE: # %bb.0: # %entry
4190-
; P8BE-NEXT: addis r3, r2, .LCPI78_0@toc@ha
4191-
; P8BE-NEXT: addi r3, r3, .LCPI78_0@toc@l
4192-
; P8BE-NEXT: lxvd2x v2, 0, r3
4184+
; P8BE-NEXT: vspltisw v2, 4
4185+
; P8BE-NEXT: vupklsw v2, v2
41934186
; P8BE-NEXT: blr
41944187
;
41954188
; P8LE-LABEL: spltCnstConvftoll:
41964189
; P8LE: # %bb.0: # %entry
4197-
; P8LE-NEXT: addis r3, r2, .LCPI78_0@toc@ha
4198-
; P8LE-NEXT: addi r3, r3, .LCPI78_0@toc@l
4199-
; P8LE-NEXT: lxvd2x v2, 0, r3
4190+
; P8LE-NEXT: vspltisw v2, 4
4191+
; P8LE-NEXT: vupklsw v2, v2
42004192
; P8LE-NEXT: blr
42014193
entry:
42024194
ret <2 x i64> <i64 4, i64 4>
@@ -4526,30 +4518,26 @@ entry:
45264518
define <2 x i64> @spltCnstConvdtoll() {
45274519
; P9BE-LABEL: spltCnstConvdtoll:
45284520
; P9BE: # %bb.0: # %entry
4529-
; P9BE-NEXT: addis r3, r2, .LCPI87_0@toc@ha
4530-
; P9BE-NEXT: addi r3, r3, .LCPI87_0@toc@l
4531-
; P9BE-NEXT: lxv v2, 0(r3)
4521+
; P9BE-NEXT: vspltisw v2, 4
4522+
; P9BE-NEXT: vupklsw v2, v2
45324523
; P9BE-NEXT: blr
45334524
;
45344525
; P9LE-LABEL: spltCnstConvdtoll:
45354526
; P9LE: # %bb.0: # %entry
4536-
; P9LE-NEXT: addis r3, r2, .LCPI87_0@toc@ha
4537-
; P9LE-NEXT: addi r3, r3, .LCPI87_0@toc@l
4538-
; P9LE-NEXT: lxv v2, 0(r3)
4527+
; P9LE-NEXT: vspltisw v2, 4
4528+
; P9LE-NEXT: vupklsw v2, v2
45394529
; P9LE-NEXT: blr
45404530
;
45414531
; P8BE-LABEL: spltCnstConvdtoll:
45424532
; P8BE: # %bb.0: # %entry
4543-
; P8BE-NEXT: addis r3, r2, .LCPI87_0@toc@ha
4544-
; P8BE-NEXT: addi r3, r3, .LCPI87_0@toc@l
4545-
; P8BE-NEXT: lxvd2x v2, 0, r3
4533+
; P8BE-NEXT: vspltisw v2, 4
4534+
; P8BE-NEXT: vupklsw v2, v2
45464535
; P8BE-NEXT: blr
45474536
;
45484537
; P8LE-LABEL: spltCnstConvdtoll:
45494538
; P8LE: # %bb.0: # %entry
4550-
; P8LE-NEXT: addis r3, r2, .LCPI87_0@toc@ha
4551-
; P8LE-NEXT: addi r3, r3, .LCPI87_0@toc@l
4552-
; P8LE-NEXT: lxvd2x v2, 0, r3
4539+
; P8LE-NEXT: vspltisw v2, 4
4540+
; P8LE-NEXT: vupklsw v2, v2
45534541
; P8LE-NEXT: blr
45544542
entry:
45554543
ret <2 x i64> <i64 4, i64 4>
@@ -4879,30 +4867,26 @@ entry:
48794867
define <2 x i64> @spltConst1ull() {
48804868
; P9BE-LABEL: spltConst1ull:
48814869
; P9BE: # %bb.0: # %entry
4882-
; P9BE-NEXT: addis r3, r2, .LCPI97_0@toc@ha
4883-
; P9BE-NEXT: addi r3, r3, .LCPI97_0@toc@l
4884-
; P9BE-NEXT: lxv v2, 0(r3)
4870+
; P9BE-NEXT: vspltisw v2, 1
4871+
; P9BE-NEXT: vupklsw v2, v2
48854872
; P9BE-NEXT: blr
48864873
;
48874874
; P9LE-LABEL: spltConst1ull:
48884875
; P9LE: # %bb.0: # %entry
4889-
; P9LE-NEXT: addis r3, r2, .LCPI97_0@toc@ha
4890-
; P9LE-NEXT: addi r3, r3, .LCPI97_0@toc@l
4891-
; P9LE-NEXT: lxv v2, 0(r3)
4876+
; P9LE-NEXT: vspltisw v2, 1
4877+
; P9LE-NEXT: vupklsw v2, v2
48924878
; P9LE-NEXT: blr
48934879
;
48944880
; P8BE-LABEL: spltConst1ull:
48954881
; P8BE: # %bb.0: # %entry
4896-
; P8BE-NEXT: addis r3, r2, .LCPI97_0@toc@ha
4897-
; P8BE-NEXT: addi r3, r3, .LCPI97_0@toc@l
4898-
; P8BE-NEXT: lxvd2x v2, 0, r3
4882+
; P8BE-NEXT: vspltisw v2, 1
4883+
; P8BE-NEXT: vupklsw v2, v2
48994884
; P8BE-NEXT: blr
49004885
;
49014886
; P8LE-LABEL: spltConst1ull:
49024887
; P8LE: # %bb.0: # %entry
4903-
; P8LE-NEXT: addis r3, r2, .LCPI97_0@toc@ha
4904-
; P8LE-NEXT: addi r3, r3, .LCPI97_0@toc@l
4905-
; P8LE-NEXT: lxvd2x v2, 0, r3
4888+
; P8LE-NEXT: vspltisw v2, 1
4889+
; P8LE-NEXT: vupklsw v2, v2
49064890
; P8LE-NEXT: blr
49074891
entry:
49084892
ret <2 x i64> <i64 1, i64 1>
@@ -5339,30 +5323,26 @@ entry:
53395323
define <2 x i64> @spltCnstConvftoull() {
53405324
; P9BE-LABEL: spltCnstConvftoull:
53415325
; P9BE: # %bb.0: # %entry
5342-
; P9BE-NEXT: addis r3, r2, .LCPI110_0@toc@ha
5343-
; P9BE-NEXT: addi r3, r3, .LCPI110_0@toc@l
5344-
; P9BE-NEXT: lxv v2, 0(r3)
5326+
; P9BE-NEXT: vspltisw v2, 4
5327+
; P9BE-NEXT: vupklsw v2, v2
53455328
; P9BE-NEXT: blr
53465329
;
53475330
; P9LE-LABEL: spltCnstConvftoull:
53485331
; P9LE: # %bb.0: # %entry
5349-
; P9LE-NEXT: addis r3, r2, .LCPI110_0@toc@ha
5350-
; P9LE-NEXT: addi r3, r3, .LCPI110_0@toc@l
5351-
; P9LE-NEXT: lxv v2, 0(r3)
5332+
; P9LE-NEXT: vspltisw v2, 4
5333+
; P9LE-NEXT: vupklsw v2, v2
53525334
; P9LE-NEXT: blr
53535335
;
53545336
; P8BE-LABEL: spltCnstConvftoull:
53555337
; P8BE: # %bb.0: # %entry
5356-
; P8BE-NEXT: addis r3, r2, .LCPI110_0@toc@ha
5357-
; P8BE-NEXT: addi r3, r3, .LCPI110_0@toc@l
5358-
; P8BE-NEXT: lxvd2x v2, 0, r3
5338+
; P8BE-NEXT: vspltisw v2, 4
5339+
; P8BE-NEXT: vupklsw v2, v2
53595340
; P8BE-NEXT: blr
53605341
;
53615342
; P8LE-LABEL: spltCnstConvftoull:
53625343
; P8LE: # %bb.0: # %entry
5363-
; P8LE-NEXT: addis r3, r2, .LCPI110_0@toc@ha
5364-
; P8LE-NEXT: addi r3, r3, .LCPI110_0@toc@l
5365-
; P8LE-NEXT: lxvd2x v2, 0, r3
5344+
; P8LE-NEXT: vspltisw v2, 4
5345+
; P8LE-NEXT: vupklsw v2, v2
53665346
; P8LE-NEXT: blr
53675347
entry:
53685348
ret <2 x i64> <i64 4, i64 4>
@@ -5692,30 +5672,26 @@ entry:
56925672
define <2 x i64> @spltCnstConvdtoull() {
56935673
; P9BE-LABEL: spltCnstConvdtoull:
56945674
; P9BE: # %bb.0: # %entry
5695-
; P9BE-NEXT: addis r3, r2, .LCPI119_0@toc@ha
5696-
; P9BE-NEXT: addi r3, r3, .LCPI119_0@toc@l
5697-
; P9BE-NEXT: lxv v2, 0(r3)
5675+
; P9BE-NEXT: vspltisw v2, 4
5676+
; P9BE-NEXT: vupklsw v2, v2
56985677
; P9BE-NEXT: blr
56995678
;
57005679
; P9LE-LABEL: spltCnstConvdtoull:
57015680
; P9LE: # %bb.0: # %entry
5702-
; P9LE-NEXT: addis r3, r2, .LCPI119_0@toc@ha
5703-
; P9LE-NEXT: addi r3, r3, .LCPI119_0@toc@l
5704-
; P9LE-NEXT: lxv v2, 0(r3)
5681+
; P9LE-NEXT: vspltisw v2, 4
5682+
; P9LE-NEXT: vupklsw v2, v2
57055683
; P9LE-NEXT: blr
57065684
;
57075685
; P8BE-LABEL: spltCnstConvdtoull:
57085686
; P8BE: # %bb.0: # %entry
5709-
; P8BE-NEXT: addis r3, r2, .LCPI119_0@toc@ha
5710-
; P8BE-NEXT: addi r3, r3, .LCPI119_0@toc@l
5711-
; P8BE-NEXT: lxvd2x v2, 0, r3
5687+
; P8BE-NEXT: vspltisw v2, 4
5688+
; P8BE-NEXT: vupklsw v2, v2
57125689
; P8BE-NEXT: blr
57135690
;
57145691
; P8LE-LABEL: spltCnstConvdtoull:
57155692
; P8LE: # %bb.0: # %entry
5716-
; P8LE-NEXT: addis r3, r2, .LCPI119_0@toc@ha
5717-
; P8LE-NEXT: addi r3, r3, .LCPI119_0@toc@l
5718-
; P8LE-NEXT: lxvd2x v2, 0, r3
5693+
; P8LE-NEXT: vspltisw v2, 4
5694+
; P8LE-NEXT: vupklsw v2, v2
57195695
; P8LE-NEXT: blr
57205696
entry:
57215697
ret <2 x i64> <i64 4, i64 4>

llvm/test/CodeGen/PowerPC/mul-const-vector.ll

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,7 @@ define <2 x i64> @test1_v2i64(<2 x i64> %a) {
271271
ret <2 x i64> %tmp.1
272272
}
273273
; CHECK-LABEL: test1_v2i64:
274-
; CHECK-P8: lxvd2x v[[REG1:[0-9]+]], 0, r{{[0-9]+}}
275-
; CHECK-P9: lxv v[[REG2:[0-9]+]], 0(r{{[0-9]+}})
274+
; CHECK: vupklsw v[[REG1:[0-9]+]], v{{[0-9]+}}
276275
; CHECK-NOT: vmul
277276
; CHECK-NEXT: vsld v{{[0-9]+}}, v2, v[[REG2]]
278277

@@ -282,8 +281,7 @@ define <2 x i64> @test2_v2i64(<2 x i64> %a) {
282281
}
283282

284283
; CHECK-LABEL: test2_v2i64:
285-
; CHECK-P8: lxvd2x v[[REG1:[0-9]+]], 0, r{{[0-9]+}}
286-
; CHECK-P9: lxv v[[REG2:[0-9]+]], 0(r{{[0-9]+}})
284+
; CHECK: vupklsw v[[REG1:[0-9]+]], v{{[0-9]+}}
287285
; CHECK-NOT: vmul
288286
; CHECK-NEXT: vsld v[[REG3:[0-9]+]], v2, v[[REG2]]
289287
; CHECK-NEXT: vaddudm v{{[0-9]+}}, v2, v[[REG3]]
@@ -294,8 +292,7 @@ define <2 x i64> @test3_v2i64(<2 x i64> %a) {
294292
}
295293

296294
; CHECK-LABEL: test3_v2i64:
297-
; CHECK-P8: lxvd2x v[[REG1:[0-9]+]], 0, r{{[0-9]+}}
298-
; CHECK-P9: lxv v[[REG2:[0-9]+]], 0(r{{[0-9]+}})
295+
; CHECK: vupklsw v[[REG1:[0-9]+]], v{{[0-9]+}}
299296
; CHECK-NOT: vmul
300297
; CHECK-NEXT: vsld v[[REG3:[0-9]+]], v2, v[[REG2]]
301298
; CHECK-NEXT: vsubudm v{{[0-9]+}}, v[[REG3]], v2
@@ -308,8 +305,7 @@ define <2 x i64> @test4_v2i64(<2 x i64> %a) {
308305
}
309306

310307
; CHECK-LABEL: test4_v2i64:
311-
; CHECK-P8: lxvd2x v[[REG1:[0-9]+]], 0, r{{[0-9]+}}
312-
; CHECK-P9: lxv v[[REG2:[0-9]+]], 0(r{{[0-9]+}})
308+
; CHECK: vupklsw v[[REG1:[0-9]+]], v{{[0-9]+}}
313309
; CHECK-NOT: vmul
314310
; CHECK-NEXT: vsld v[[REG3:[0-9]+]], v2, v[[REG2]]
315311
; CHECK-P8-NEXT: xxlxor v[[REG4:[0-9]+]],
@@ -322,8 +318,7 @@ define <2 x i64> @test5_v2i64(<2 x i64> %a) {
322318
}
323319

324320
; CHECK-LABEL: test5_v2i64:
325-
; CHECK-P8: lxvd2x v[[REG1:[0-9]+]], 0, r{{[0-9]+}}
326-
; CHECK-P9: lxv v[[REG2:[0-9]+]], 0(r{{[0-9]+}})
321+
; CHECK: vupklsw v[[REG1:[0-9]+]], v{{[0-9]+}}
327322
; CHECK-NOT: vmul
328323
; CHECK-NEXT: vsld v[[REG3:[0-9]+]], v2, v[[REG2]]
329324
; CHECK-NEXT: vaddudm v[[REG4:[0-9]+]], v2, v[[REG3]]
@@ -337,8 +332,7 @@ define <2 x i64> @test6_v2i64(<2 x i64> %a) {
337332
}
338333

339334
; CHECK-LABEL: test6_v2i64:
340-
; CHECK-P8: lxvd2x v[[REG1:[0-9]+]], 0, r{{[0-9]+}}
341-
; CHECK-P9: lxv v[[REG2:[0-9]+]], 0(r{{[0-9]+}})
335+
; CHECK: vupklsw v[[REG1:[0-9]+]], v{{[0-9]+}}
342336
; CHECK-NOT: vmul
343337
; CHECK-NEXT: vsld v[[REG3:[0-9]+]], v2, v[[REG2]]
344338
; CHECK-NEXT: vsubudm v{{[0-9]+}}, v2, v[[REG3]]

llvm/test/CodeGen/PowerPC/p10-splatImm-CPload-pcrel.ll

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,8 @@ define dso_local <2 x double> @testDoubleToDoubleNaNFail() local_unnamed_addr {
105105
;
106106
; CHECK-NOPREFIX-LABEL: testDoubleToDoubleNaNFail:
107107
; CHECK-NOPREFIX: # %bb.0: # %entry
108-
; CHECK-NOPREFIX-NEXT: addis r3, r2, .LCPI2_0@toc@ha
109-
; CHECK-NOPREFIX-NEXT: addi r3, r3, .LCPI2_0@toc@l
110-
; CHECK-NOPREFIX-NEXT: lxv vs34, 0(r3)
108+
; CHECK-NOPREFIX-NEXT: vspltisw v2, -16
109+
; CHECK-NOPREFIX-NEXT: vupklsw v2, v2
111110
; CHECK-NOPREFIX-NEXT: blr
112111
;
113112
; CHECK-BE-LABEL: testDoubleToDoubleNaNFail:

0 commit comments

Comments
 (0)