Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Dec 2016 15:30:39 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r309816 - in projects/clang391-import: contrib/llvm/lib/Target/AArch64 contrib/llvm/lib/Target/ARM lib/clang/include/clang/Basic
Message-ID:  <201612101530.uBAFUdep013525@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sat Dec 10 15:30:39 2016
New Revision: 309816
URL: https://svnweb.freebsd.org/changeset/base/309816

Log:
  Update llvm, clang, lld, lldb, compiler-rt and libc++ to release_39
  branch r288847.

Modified:
  projects/clang391-import/contrib/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
  projects/clang391-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  projects/clang391-import/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
  projects/clang391-import/lib/clang/include/clang/Basic/Version.inc
Directory Properties:
  projects/clang391-import/contrib/compiler-rt/   (props changed)
  projects/clang391-import/contrib/libc++/   (props changed)
  projects/clang391-import/contrib/llvm/   (props changed)
  projects/clang391-import/contrib/llvm/tools/clang/   (props changed)
  projects/clang391-import/contrib/llvm/tools/lld/   (props changed)
  projects/clang391-import/contrib/llvm/tools/lldb/   (props changed)

Modified: projects/clang391-import/contrib/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
==============================================================================
--- projects/clang391-import/contrib/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp	Sat Dec 10 15:02:23 2016	(r309815)
+++ projects/clang391-import/contrib/llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp	Sat Dec 10 15:30:39 2016	(r309816)
@@ -718,13 +718,21 @@ bool AArch64ExpandPseudo::expandCMP_SWAP
       .addReg(DestLo.getReg(), getKillRegState(DestLo.isDead()))
       .addOperand(DesiredLo)
       .addImm(0);
-  BuildMI(LoadCmpBB, DL, TII->get(AArch64::SBCSXr), AArch64::XZR)
+  BuildMI(LoadCmpBB, DL, TII->get(AArch64::CSINCWr), StatusReg)
+    .addReg(AArch64::WZR)
+    .addReg(AArch64::WZR)
+    .addImm(AArch64CC::EQ);
+  BuildMI(LoadCmpBB, DL, TII->get(AArch64::SUBSXrs), AArch64::XZR)
       .addReg(DestHi.getReg(), getKillRegState(DestHi.isDead()))
-      .addOperand(DesiredHi);
-  BuildMI(LoadCmpBB, DL, TII->get(AArch64::Bcc))
-      .addImm(AArch64CC::NE)
-      .addMBB(DoneBB)
-      .addReg(AArch64::NZCV, RegState::Implicit | RegState::Kill);
+      .addOperand(DesiredHi)
+      .addImm(0);
+  BuildMI(LoadCmpBB, DL, TII->get(AArch64::CSINCWr), StatusReg)
+      .addReg(StatusReg, RegState::Kill)
+      .addReg(StatusReg, RegState::Kill)
+      .addImm(AArch64CC::EQ);
+  BuildMI(LoadCmpBB, DL, TII->get(AArch64::CBNZW))
+      .addReg(StatusReg, RegState::Kill)
+      .addMBB(DoneBB);
   LoadCmpBB->addSuccessor(DoneBB);
   LoadCmpBB->addSuccessor(StoreBB);
 

Modified: projects/clang391-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
==============================================================================
--- projects/clang391-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp	Sat Dec 10 15:02:23 2016	(r309815)
+++ projects/clang391-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp	Sat Dec 10 15:30:39 2016	(r309816)
@@ -10083,17 +10083,24 @@ static void ReplaceReductionResults(SDNo
   Results.push_back(SplitVal);
 }
 
+static std::pair<SDValue, SDValue> splitInt128(SDValue N, SelectionDAG &DAG) {
+  SDLoc DL(N);
+  SDValue Lo = DAG.getNode(ISD::TRUNCATE, DL, MVT::i64, N);
+  SDValue Hi = DAG.getNode(ISD::TRUNCATE, DL, MVT::i64,
+                           DAG.getNode(ISD::SRL, DL, MVT::i128, N,
+                                       DAG.getConstant(64, DL, MVT::i64)));
+  return std::make_pair(Lo, Hi);
+}
+
 static void ReplaceCMP_SWAP_128Results(SDNode *N,
                                        SmallVectorImpl<SDValue> & Results,
                                        SelectionDAG &DAG) {
   assert(N->getValueType(0) == MVT::i128 &&
          "AtomicCmpSwap on types less than 128 should be legal");
-  SDValue Ops[] = {N->getOperand(1),
-                   N->getOperand(2)->getOperand(0),
-                   N->getOperand(2)->getOperand(1),
-                   N->getOperand(3)->getOperand(0),
-                   N->getOperand(3)->getOperand(1),
-                   N->getOperand(0)};
+  auto Desired = splitInt128(N->getOperand(2), DAG);
+  auto New = splitInt128(N->getOperand(3), DAG);
+  SDValue Ops[] = {N->getOperand(1), Desired.first, Desired.second,
+                   New.first,        New.second,    N->getOperand(0)};
   SDNode *CmpSwap = DAG.getMachineNode(
       AArch64::CMP_SWAP_128, SDLoc(N),
       DAG.getVTList(MVT::i64, MVT::i64, MVT::i32, MVT::Other), Ops);

Modified: projects/clang391-import/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
==============================================================================
--- projects/clang391-import/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp	Sat Dec 10 15:02:23 2016	(r309815)
+++ projects/clang391-import/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp	Sat Dec 10 15:30:39 2016	(r309816)
@@ -932,13 +932,10 @@ bool ARMExpandPseudo::ExpandCMP_SWAP_64(
                      .addReg(DestLo, getKillRegState(Dest.isDead()))
                      .addReg(DesiredLo, getKillRegState(Desired.isDead())));
 
-  unsigned SBCrr = IsThumb ? ARM::t2SBCrr : ARM::SBCrr;
-  MIB = BuildMI(LoadCmpBB, DL, TII->get(SBCrr))
-            .addReg(StatusReg, RegState::Define | RegState::Dead)
-            .addReg(DestHi, getKillRegState(Dest.isDead()))
-            .addReg(DesiredHi, getKillRegState(Desired.isDead()));
-  AddDefaultPred(MIB);
-  MIB.addReg(ARM::CPSR, RegState::Kill);
+  BuildMI(LoadCmpBB, DL, TII->get(CMPrr))
+      .addReg(DestHi, getKillRegState(Dest.isDead()))
+      .addReg(DesiredHi, getKillRegState(Desired.isDead()))
+      .addImm(ARMCC::EQ).addReg(ARM::CPSR, RegState::Kill);
 
   unsigned Bcc = IsThumb ? ARM::tBcc : ARM::Bcc;
   BuildMI(LoadCmpBB, DL, TII->get(Bcc))

Modified: projects/clang391-import/lib/clang/include/clang/Basic/Version.inc
==============================================================================
--- projects/clang391-import/lib/clang/include/clang/Basic/Version.inc	Sat Dec 10 15:02:23 2016	(r309815)
+++ projects/clang391-import/lib/clang/include/clang/Basic/Version.inc	Sat Dec 10 15:30:39 2016	(r309816)
@@ -7,4 +7,4 @@
 
 #define	CLANG_VENDOR			"FreeBSD "
 
-#define	SVN_REVISION			"288513"
+#define	SVN_REVISION			"288847"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612101530.uBAFUdep013525>