[PATCH] D143198: DAG: Lower is.fpclass fcInf to fcmp of fabs
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 7 03:51:37 PDT 2023
arsenm updated this revision to Diff 538063.
arsenm added a comment.
Rebase
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D143198/new/
https://reviews.llvm.org/D143198
Files:
llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
llvm/test/CodeGen/PowerPC/is_fpclass.ll
Index: llvm/test/CodeGen/PowerPC/is_fpclass.ll
===================================================================
--- llvm/test/CodeGen/PowerPC/is_fpclass.ll
+++ llvm/test/CodeGen/PowerPC/is_fpclass.ll
@@ -117,13 +117,12 @@
define i1 @isinf_ppc_fp128(ppc_fp128 %x) nounwind {
; CHECK-LABEL: isinf_ppc_fp128:
; CHECK: # %bb.0:
-; CHECK-NEXT: mffprd 3, 1
-; CHECK-NEXT: li 4, 2047
-; CHECK-NEXT: clrldi 3, 3, 1
-; CHECK-NEXT: rldic 4, 4, 52, 1
-; CHECK-NEXT: cmpd 3, 4
-; CHECK-NEXT: li 3, 0
+; CHECK-NEXT: addis 3, 2, .LCPI9_0 at toc@ha
+; CHECK-NEXT: xsabsdp 0, 1
; CHECK-NEXT: li 4, 1
+; CHECK-NEXT: lfs 1, .LCPI9_0 at toc@l(3)
+; CHECK-NEXT: li 3, 0
+; CHECK-NEXT: fcmpu 0, 0, 1
; CHECK-NEXT: iseleq 3, 4, 3
; CHECK-NEXT: blr
%1 = call i1 @llvm.is.fpclass.ppcf128(ppc_fp128 %x, i32 516) ; 0x204 = "inf"
Index: llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
===================================================================
--- llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+++ llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
@@ -8141,6 +8141,18 @@
return DAG.getSetCC(DL, ResultVT, Op, Op,
IsInverted ? ISD::SETO : ISD::SETUO);
}
+
+ if (Test == fcInf &&
+ isCondCodeLegalOrCustom(IsInverted ? ISD::SETUNE : ISD::SETOEQ,
+ OperandVT.getScalarType().getSimpleVT()) &&
+ isOperationLegalOrCustom(ISD::FABS, OperandVT.getScalarType())) {
+ // isinf(x) --> fabs(x) == inf
+ SDValue Abs = DAG.getNode(ISD::FABS, DL, OperandVT, Op);
+ SDValue Inf =
+ DAG.getConstantFP(APFloat::getInf(Semantics), DL, OperandVT);
+ return DAG.getSetCC(DL, ResultVT, Abs, Inf,
+ IsInverted ? ISD::SETUNE : ISD::SETOEQ);
+ }
}
// In the general case use integer operations.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D143198.538063.patch
Type: text/x-patch
Size: 1864 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230707/de5dcc89/attachment.bin>
More information about the llvm-commits
mailing list