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

Cy Schubert Cy.Schubert at cschubert.com
Wed Apr 15 19:10:52 UTC 2020


In message <202004151843.03FIhi1W031973 at repo.freebsd.org>, Dimitry Andric 
write
s:
> Author: dim
> Date: Wed Apr 15 18:43:44 2020
> New Revision: 359981
> URL: https://svnweb.freebsd.org/changeset/base/359981
>
> Log:
>   Revert commit a9ad65a2b from llvm git (by Nemanja Ivanovic):
>   
>     [PowerPC] Change default for unaligned FP access for older subtargets
>   
>     This is a fix for https://bugs.llvm.org/show_bug.cgi?id=40554
>   
>     Some CPU's trap to the kernel on unaligned floating point access and
>     there are kernels that do not handle the interrupt. The program then
>     fails with a SIGBUS according to the PR. This just switches the
>     default for unaligned access to only allow it on recent server CPUs
>     that are known to allow this.
>   
>     Differential revision: https://reviews.llvm.org/D71954
>   
>   This upstream commit causes a compiler hang when building certain ports
>   (e.g. security/nss, multimedia/x264) for powerpc64.  The hang has been
>   reported in https://bugs.llvm.org/show_bug.cgi?id=45186, but in the mean
>   time it is more convenient to revert the commit.
>   
>   Requested by:	jhibbits
>   MFC after:	6 weeks
>   X-MFC-With:	358851
>
> Modified:
>   head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td
>   head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
>   head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.h
>
> Modified: head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td
> =============================================================================
> =
> --- head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td	Wed Apr 15 18:3
> 9:12 2020	(r359980)
> +++ head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td	Wed Apr 15 18:4
> 3:44 2020	(r359981)
> @@ -166,9 +166,6 @@ def FeatureHTM : SubtargetFeature<"htm", "HasHTM", "tr
>                                    "Enable Hardware Transactional Memory inst
> ructions">;
>  def FeatureMFTB   : SubtargetFeature<"", "FeatureMFTB", "true",
>                                          "Implement mftb using the mfspr inst
> ruction">;
> -def FeatureUnalignedFloats :
> -  SubtargetFeature<"allow-unaligned-fp-access", "AllowsUnalignedFPAccess",
> -                   "true", "CPU does not trap on unaligned FP access">;
>  def FeaturePPCPreRASched:
>    SubtargetFeature<"ppc-prera-sched", "UsePPCPreRASchedStrategy", "true",
>                     "Use PowerPC pre-RA scheduling strategy">;
> @@ -255,8 +252,7 @@ def ProcessorFeatures {
>                                                    FeatureExtDiv,
>                                                    FeatureMFTB,
>                                                    DeprecatedDST,
> -                                                  FeatureTwoConstNR,
> -                                                  FeatureUnalignedFloats];
> +                                                  FeatureTwoConstNR];
>    list<SubtargetFeature> P7SpecificFeatures = [];
>    list<SubtargetFeature> P7Features =
>      !listconcat(P7InheritableFeatures, P7SpecificFeatures);
>
> Modified: head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.c
> pp
> =============================================================================
> =
> --- head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
> 	Wed Apr 15 18:39:12 2020	(r359980)
> +++ head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCISelLowering.cpp
> 	Wed Apr 15 18:43:44 2020	(r359981)
> @@ -15251,9 +15251,6 @@ bool PPCTargetLowering::allowsMisalignedMemoryAccesse
> s
>    if (!VT.isSimple())
>      return false;
>  
> -  if (VT.isFloatingPoint() && !Subtarget.allowsUnalignedFPAccess())
> -    return false;
> -
>    if (VT.getSimpleVT().isVector()) {
>      if (Subtarget.hasVSX()) {
>        if (VT != MVT::v2f64 && VT != MVT::v2i64 &&
>
> Modified: head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.h
> =============================================================================
> =
> --- head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.h	Wed Apr
>  15 18:39:12 2020	(r359980)
> +++ head/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarget.h	Wed Apr
>  15 18:43:44 2020	(r359981)
> @@ -124,7 +124,6 @@ class PPCSubtarget : public PPCGenSubtargetInfo { (pro
>    bool IsPPC4xx;
>    bool IsPPC6xx;
>    bool FeatureMFTB;
> -  bool AllowsUnalignedFPAccess;
>    bool DeprecatedDST;
>    bool HasLazyResolverStubs;
>    bool IsLittleEndian;
> @@ -275,7 +274,6 @@ class PPCSubtarget : public PPCGenSubtargetInfo { (pro
>    bool vectorsUseTwoUnits() const {return VectorsUseTwoUnits; }
>    bool isE500() const { return IsE500; }
>    bool isFeatureMFTB() const { return FeatureMFTB; }
> -  bool allowsUnalignedFPAccess() const { return AllowsUnalignedFPAccess; }
>    bool isDeprecatedDST() const { return DeprecatedDST; }
>    bool hasICBT() const { return HasICBT; }
>    bool hasInvariantFunctionDescriptors() const {
>

I'm seeing this on amd64:

--- Target/PowerPC/PPCSubtarget.o ---
/opt/src/svn-current/contrib/llvm-project/llvm/lib/Target/PowerPC/PPCSubtarg
et.cpp:103:3: error: use of undeclared identifier 'AllowsUnalignedFPAccess'
  AllowsUnalignedFPAccess = false;
  ^

AllowsUnalignedFPAccess reference should be removed as well.


-- 
Cheers,
Cy Schubert <Cy.Schubert at cschubert.com>
FreeBSD UNIX:  <cy at FreeBSD.org>   Web:  https://FreeBSD.org
NTP:           <cy at nwtime.org>    Web:  https://nwtime.org

	The need of the many outweighs the greed of the few.




More information about the svn-src-head mailing list