svn commit: r367485 - head/contrib/llvm-project/llvm/lib/Target/PowerPC

Dimitry Andric dim at FreeBSD.org
Sun Nov 8 12:47:36 UTC 2020


Author: dim
Date: Sun Nov  8 12:47:35 2020
New Revision: 367485
URL: https://svnweb.freebsd.org/changeset/base/367485

Log:
  Merge commit 354d3106c from llvm git (by Kai Luo):
  
    [PowerPC] Skip combining (uint_to_fp x) if x is not simple type
  
    Current powerpc64le backend hits
    ```
    Combining: t7: f64 = uint_to_fp t6
    llc: llvm-project/llvm/include/llvm/CodeGen/ValueTypes.h:291:
    llvm::MVT llvm::EVT::getSimpleVT() const: Assertion `isSimple() &&
    "Expected a SimpleValueType!"' failed.
    ```
    This patch fixes it by skipping combination if `t6` is not simple
    type.
    Fixed https://bugs.llvm.org/show_bug.cgi?id=47660.
  
    Reviewed By: #powerpc, steven.zhang
  
    Differential Revision: https://reviews.llvm.org/D88388
  
  This should fix the llvm assertion mentioned above when building the
  following ports for powerpc64le:
  
  * audio/traverso
  * databases/percona57-pam-for-mysql
  * databases/percona57-server
  * emulators/citra
  * emulators/citra-qt5
  * games/7kaa
  * graphics/dia
  * graphics/mandelbulber
  * graphics/pcl-pointclouds
  * net-p2p/libtorrent-rasterbar
  * textproc/htmldoc
  
  Requested by:	pkubaj
  MFC after:	3 days

Modified:
  head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp

Modified: head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
==============================================================================
--- head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp	Sun Nov  8 11:12:00 2020	(r367484)
+++ head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp	Sun Nov  8 12:47:35 2020	(r367485)
@@ -14257,6 +14257,8 @@ SDValue PPCTargetLowering::combineFPToIntToFP(SDNode *
   // from the hardware.
   if (Op.getValueType() != MVT::f32 && Op.getValueType() != MVT::f64)
     return SDValue();
+  if (!Op.getOperand(0).getValueType().isSimple())
+    return SDValue();
   if (Op.getOperand(0).getValueType().getSimpleVT() <= MVT(MVT::i1) ||
       Op.getOperand(0).getValueType().getSimpleVT() > MVT(MVT::i64))
     return SDValue();


More information about the svn-src-all mailing list