svn commit: r356332 - head/contrib/llvm-project/llvm/lib/Target/RISCV

Dimitry Andric dim at FreeBSD.org
Fri Jan 3 20:28:07 UTC 2020


Author: dim
Date: Fri Jan  3 20:28:06 2020
New Revision: 356332
URL: https://svnweb.freebsd.org/changeset/base/356332

Log:
  Merge commit d7be3eab5 from llvm git (by Luís Marques):
  
    [RISCV] Handle fcopysign(f32, f64) and fcopysign(f64, f32)
  
    Summary: Adds tablegen patterns to explicitly handle fcopysign where
    the magnitude and sign arguments have different types, due to the
    sign value casts being removed the by DAGCombiner. Support for RV32IF
    follows in a separate commit. Adds tests for all relevant scenarios
    except RV32IF.
  
    Reviewers: lenary
    Reviewed By: lenary
    Tags: #llvm
    Differential Revision: https://reviews.llvm.org/D70678
  
  This is a prerequisite for building and linking hard- and soft-float
  riscv worlds with clang and lld.
  
  Requested by:	jhb
  MFC after:	1 week
  X-MFC-With:	r353358

Modified:
  head/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVInstrInfoD.td

Modified: head/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVInstrInfoD.td
==============================================================================
--- head/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVInstrInfoD.td	Fri Jan  3 20:19:17 2020	(r356331)
+++ head/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVInstrInfoD.td	Fri Jan  3 20:28:06 2020	(r356332)
@@ -231,6 +231,9 @@ def : Pat<(fabs FPR64:$rs1), (FSGNJX_D $rs1, $rs1)>;
 
 def : PatFpr64Fpr64<fcopysign, FSGNJ_D>;
 def : Pat<(fcopysign FPR64:$rs1, (fneg FPR64:$rs2)), (FSGNJN_D $rs1, $rs2)>;
+def : Pat<(fcopysign FPR64:$rs1, FPR32:$rs2), (FSGNJ_D $rs1, (FCVT_D_S $rs2))>;
+def : Pat<(fcopysign FPR32:$rs1, FPR64:$rs2), (FSGNJ_S $rs1, (FCVT_S_D $rs2,
+                                                              0b111))>;
 
 // fmadd: rs1 * rs2 + rs3
 def : Pat<(fma FPR64:$rs1, FPR64:$rs2, FPR64:$rs3),


More information about the svn-src-all mailing list