[PATCH] D106812: [PowerPC] Fix materialization of SP float values on Power10
Lei Huang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 26 14:32:44 PDT 2021
lei updated this revision to Diff 361808.
lei added a comment.
change variable name to indicate it's not used.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106812/new/
https://reviews.llvm.org/D106812
Files:
llvm/lib/Target/PowerPC/PPCInstrInfo.td
llvm/test/CodeGen/PowerPC/constant-pool.ll
llvm/test/CodeGen/PowerPC/p10-splatImm-CPload-pcrel.ll
Index: llvm/test/CodeGen/PowerPC/p10-splatImm-CPload-pcrel.ll
===================================================================
--- llvm/test/CodeGen/PowerPC/p10-splatImm-CPload-pcrel.ll
+++ llvm/test/CodeGen/PowerPC/p10-splatImm-CPload-pcrel.ll
@@ -160,22 +160,22 @@
define dso_local float @testFloatDenormScalar() local_unnamed_addr {
; CHECK-LE-LABEL: testFloatDenormScalar:
; CHECK-LE: # %bb.0: # %entry
-; CHECK-LE-NEXT: xxsplti32dx vs1, 0, 0
-; CHECK-LE-NEXT: xxsplti32dx vs1, 1, 7136238
+; CHECK-LE-NEXT: xxsplti32dx vs1, 0, 940259579
+; CHECK-LE-NEXT: xxsplti32dx vs1, 1, -2147483648
; CHECK-LE-NEXT: # kill: def $f1 killed $f1 killed $vsl1
; CHECK-LE-NEXT: blr
;
; CHECK-NOPCREL-BE-LABEL: testFloatDenormScalar:
; CHECK-NOPCREL-BE: # %bb.0: # %entry
-; CHECK-NOPCREL-BE-NEXT: xxsplti32dx vs1, 0, 0
-; CHECK-NOPCREL-BE-NEXT: xxsplti32dx vs1, 1, 7136238
+; CHECK-NOPCREL-BE-NEXT: xxsplti32dx vs1, 0, 940259579
+; CHECK-NOPCREL-BE-NEXT: xxsplti32dx vs1, 1, -2147483648
; CHECK-NOPCREL-BE-NEXT: # kill: def $f1 killed $f1 killed $vsl1
; CHECK-NOPCREL-BE-NEXT: blr
;
; CHECK-NOPCREL-LE-LABEL: testFloatDenormScalar:
; CHECK-NOPCREL-LE: # %bb.0: # %entry
-; CHECK-NOPCREL-LE-NEXT: xxsplti32dx vs1, 0, 0
-; CHECK-NOPCREL-LE-NEXT: xxsplti32dx vs1, 1, 7136238
+; CHECK-NOPCREL-LE-NEXT: xxsplti32dx vs1, 0, 940259579
+; CHECK-NOPCREL-LE-NEXT: xxsplti32dx vs1, 1, -2147483648
; CHECK-NOPCREL-LE-NEXT: # kill: def $f1 killed $f1 killed $vsl1
; CHECK-NOPCREL-LE-NEXT: blr
;
@@ -187,8 +187,8 @@
;
; CHECK-BE-LABEL: testFloatDenormScalar:
; CHECK-BE: # %bb.0: # %entry
-; CHECK-BE-NEXT: xxsplti32dx vs1, 0, 0
-; CHECK-BE-NEXT: xxsplti32dx vs1, 1, 7136238
+; CHECK-BE-NEXT: xxsplti32dx vs1, 0, 940259579
+; CHECK-BE-NEXT: xxsplti32dx vs1, 1, -2147483648
; CHECK-BE-NEXT: # kill: def $f1 killed $f1 killed $vsl1
; CHECK-BE-NEXT: blr
entry:
Index: llvm/test/CodeGen/PowerPC/constant-pool.ll
===================================================================
--- llvm/test/CodeGen/PowerPC/constant-pool.ll
+++ llvm/test/CodeGen/PowerPC/constant-pool.ll
@@ -9,8 +9,8 @@
define float @FloatConstantPool() {
; CHECK-LABEL: FloatConstantPool:
; CHECK: # %bb.0: # %entry
-; CHECK-NEXT: xxsplti32dx vs1, 0, 0
-; CHECK-NEXT: xxsplti32dx vs1, 1, 8388577
+; CHECK-NEXT: xxsplti32dx vs1, 0, 940572664
+; CHECK-NEXT: xxsplti32dx vs1, 1, 1073741824
; CHECK-NEXT: # kill: def $f1 killed $f1 killed $vsl1
; CHECK-NEXT: blr
;
Index: llvm/lib/Target/PowerPC/PPCInstrInfo.td
===================================================================
--- llvm/lib/Target/PowerPC/PPCInstrInfo.td
+++ llvm/lib/Target/PowerPC/PPCInstrInfo.td
@@ -410,6 +410,9 @@
// Get the Hi bits of a 64 bit immediate.
def getFPAs64BitIntHi : SDNodeXForm<fpimm, [{
APFloat APFloatOfN = N->getValueAPF();
+ bool Unused;
+ APFloatOfN.convert(APFloat::IEEEdouble(), APFloat::rmNearestTiesToEven,
+ &Unused);
uint32_t Hi = (uint32_t)((APFloatOfN.bitcastToAPInt().getZExtValue() &
0xFFFFFFFF00000000LL) >> 32);
return CurDAG->getTargetConstant(Hi, SDLoc(N), MVT::i32);
@@ -418,6 +421,9 @@
// Get the Lo bits of a 64 bit immediate.
def getFPAs64BitIntLo : SDNodeXForm<fpimm, [{
APFloat APFloatOfN = N->getValueAPF();
+ bool Unused;
+ APFloatOfN.convert(APFloat::IEEEdouble(), APFloat::rmNearestTiesToEven,
+ &Unused);
uint32_t Lo = (uint32_t)(APFloatOfN.bitcastToAPInt().getZExtValue() &
0xFFFFFFFF);
return CurDAG->getTargetConstant(Lo, SDLoc(N), MVT::i32);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106812.361808.patch
Type: text/x-patch
Size: 3675 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210726/6a436c64/attachment.bin>
More information about the llvm-commits
mailing list