Re: [PATCH] D20321: [Clang][AVX512][intrinsics] Fix vperm intrinsics.

2016-05-22 Thread Craig Topper via cfe-commits
craig.topper added a comment.

Looking at this again. This doesn't match the gcc implementation of the 
builtins. Unless their header file is also wrong. Can you clarify?


Repository:
  rL LLVM

http://reviews.llvm.org/D20321



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r270392 - Driver: support exherbo's multiarch support

2016-05-22 Thread Saleem Abdulrasool via cfe-commits
Author: compnerd
Date: Sun May 22 21:17:28 2016
New Revision: 270392

URL: http://llvm.org/viewvc/llvm-project?rev=270392=rev
Log:
Driver: support exherbo's multiarch support

Exherbo has an alternative file system layout to accommodate multiarch.  The
loader is located at /usr/${triple}/lib/${loader}.  Adjust the Linux toolchain
to support that on exherbo.

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/test/Driver/dyld-prefix.c
cfe/trunk/test/Driver/linux-ld.c

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=270392=270391=270392=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Sun May 22 21:17:28 2016
@@ -4037,69 +4037,102 @@ std::string Linux::getDynamicLinker(cons
   const llvm::Triple::ArchType Arch = getArch();
   const llvm::Triple  = getTriple();
 
+  const enum Distro Distro = DetectDistro(getDriver(), Arch);
+
   if (Triple.isAndroid())
 return Triple.isArch64Bit() ? "/system/bin/linker64" : 
"/system/bin/linker";
 
+  std::string LibDir;
+  std::string Loader;
+
   switch (Arch) {
-  default: llvm_unreachable("unsupported architecture");
+  default:
+llvm_unreachable("unsupported architecture");
 
   case llvm::Triple::aarch64:
-return "/lib/ld-linux-aarch64.so.1";
+LibDir = "lib";
+Loader = "ld-linux-aarch64.so.1";
+break;
   case llvm::Triple::aarch64_be:
-return "/lib/ld-linux-aarch64_be.so.1";
+LibDir = "lib";
+Loader = "ld-linux-aarch64_be.so.1";
+break;
   case llvm::Triple::arm:
   case llvm::Triple::thumb:
   case llvm::Triple::armeb:
   case llvm::Triple::thumbeb: {
-const bool IsHardFloat =
+const bool HF =
 Triple.getEnvironment() == llvm::Triple::GNUEABIHF ||
 tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard;
 
-return IsHardFloat ? "/lib/ld-linux-armhf.so.3" : "/lib/ld-linux.so.3";
+LibDir = "lib";
+Loader = HF ? "ld-linux-armhf.so.3" : "ld-linux.so.3";
+break;
   }
   case llvm::Triple::mips:
   case llvm::Triple::mipsel:
   case llvm::Triple::mips64:
   case llvm::Triple::mips64el: {
-bool IsNaN2008 = tools::mips::isNaN2008(Args, Triple);
 bool LE = (Triple.getArch() == llvm::Triple::mipsel) ||
   (Triple.getArch() == llvm::Triple::mips64el);
+bool IsNaN2008 = tools::mips::isNaN2008(Args, Triple);
+
+LibDir = "lib" + tools::mips::getMipsABILibSuffix(Args, Triple);
 
-std::string LibDir =
-"/lib" + tools::mips::getMipsABILibSuffix(Args, Triple);
-StringRef LibName;
 if (tools::mips::isUCLibc(Args))
-  LibName = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0";
+  Loader = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0";
 else if (!Triple.hasEnvironment() &&
  Triple.getVendor() == llvm::Triple::VendorType::MipsTechnologies)
-  LibName = LE ? "ld-musl-mipsel.so.1" : "ld-musl-mips.so.1";
+  Loader = LE ? "ld-musl-mipsel.so.1" : "ld-musl-mips.so.1";
 else
-  LibName = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1";
+  Loader = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1";
 
-return (LibDir + "/" + LibName).str();
+break;
   }
   case llvm::Triple::ppc:
-return "/lib/ld.so.1";
+LibDir = "lib";
+Loader = "ld.so.1";
+break;
   case llvm::Triple::ppc64:
-return (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "/lib64/ld64.so.2"
- : "/lib64/ld64.so.1";
+LibDir = "lib64";
+Loader =
+(tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
+break;
   case llvm::Triple::ppc64le:
-return (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "/lib64/ld64.so.1"
- : "/lib64/ld64.so.2";
+LibDir = "lib64";
+Loader =
+(tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
+break;
   case llvm::Triple::sparc:
   case llvm::Triple::sparcel:
-return "/lib/ld-linux.so.2";
+LibDir = "lib";
+Loader = "ld-linux.so.2";
+break;
   case llvm::Triple::sparcv9:
-return "/lib64/ld-linux.so.2";
+LibDir = "lib64";
+Loader = "ld-linux.so.2";
+break;
   case llvm::Triple::systemz:
-return "/lib/ld64.so.1";
+LibDir = "lib";
+Loader = "ld64.so.1";
+break;
   case llvm::Triple::x86:
-return "/lib/ld-linux.so.2";
-  case llvm::Triple::x86_64:
-return (Triple.getEnvironment() == llvm::Triple::GNUX32)
-   ? "/libx32/ld-linux-x32.so.2"
-   : "/lib64/ld-linux-x86-64.so.2";
+LibDir = "lib";
+Loader = "ld-linux.so.2";
+break;
+  case llvm::Triple::x86_64: {
+bool X32 = Triple.getEnvironment() == llvm::Triple::GNUX32;
+
+LibDir = X32 ? "libx32" : "lib64";
+Loader = X32 ? "ld-linux-x32.so.2" : 

r270391 - Fix typo in documentation comment.

2016-05-22 Thread Bob Wilson via cfe-commits
Author: bwilson
Date: Sun May 22 20:52:50 2016
New Revision: 270391

URL: http://llvm.org/viewvc/llvm-project?rev=270391=rev
Log:
Fix typo in documentation comment.

Modified:
cfe/trunk/include/clang/Lex/ModuleMap.h

Modified: cfe/trunk/include/clang/Lex/ModuleMap.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/ModuleMap.h?rev=270391=270390=270391=diff
==
--- cfe/trunk/include/clang/Lex/ModuleMap.h (original)
+++ cfe/trunk/include/clang/Lex/ModuleMap.h Sun May 22 20:52:50 2016
@@ -59,7 +59,7 @@ public:
   /// \brief Called when an umbrella header is added during module map parsing.
   ///
   /// \param FileMgr FileManager instance
-  /// \param Header The umbreall header to collect.
+  /// \param Header The umbrella header to collect.
   virtual void moduleMapAddUmbrellaHeader(FileManager *FileMgr,
   const FileEntry *Header) {}
 };


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r270373 - [driver][mips] Support new versions of MIPS CodeScape toolchains

2016-05-22 Thread Simon Atanasyan via cfe-commits
Hope r270380 fixes the problem.

On Mon, May 23, 2016 at 12:00 AM, Simon Atanasyan  wrote:
> Hi Renato,
>
> Strange error. Unfortunately I am far from my computer right now. I was sure
> in my changes. Could you please revert the commit?
>
> On May 22, 2016 11:23 PM, "Renato Golin"  wrote:
>>
>> On 22 May 2016 at 19:18, Simon Atanasyan via cfe-commits
>>  wrote:
>> > Author: atanasyan
>> > Date: Sun May 22 13:18:07 2016
>> > New Revision: 270373
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=270373=rev
>> > Log:
>> > [driver][mips] Support new versions of MIPS CodeScape toolchains
>>
>> Hi Simon,
>>
>> http://lab.llvm.org:8011/builders/clang-cmake-aarch64-42vma/builds/8458
>>
>> The failure is:
>>
>> mips-img-v2.cpp:212:13: error: expected string not found in input
>> // EL-SOFT:
>> "-L[[TC]]/../../../../mips-img-linux-gnu/lib/mipsel-r6-soft/lib"
>>
>> I can't see that strong, but I can see:
>> /../../../../mips-img-linux-gnu/lib/mipsel-r6-soft/lib/../lib"
>>
>> Not sure that's a bug in the driver or in your test, anyway, it broke
>> all bots, not just that one. :)
>>
>> cheers,
>> --renato



-- 
Simon Atanasyan
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r270380 - [driver][mips] Follow-up to r270373. Add missed folder.

2016-05-22 Thread Simon Atanasyan via cfe-commits
Author: atanasyan
Date: Sun May 22 17:06:19 2016
New Revision: 270380

URL: http://llvm.org/viewvc/llvm-project?rev=270380=rev
Log:
[driver][mips] Follow-up to r270373. Add missed folder.

Added:

cfe/trunk/test/Driver/Inputs/mips_img_v2_tree/mips-img-linux-gnu/lib/mipsel-r6-soft/

cfe/trunk/test/Driver/Inputs/mips_img_v2_tree/mips-img-linux-gnu/lib/mipsel-r6-soft/lib/

cfe/trunk/test/Driver/Inputs/mips_img_v2_tree/mips-img-linux-gnu/lib/mipsel-r6-soft/lib/.keep

Added: 
cfe/trunk/test/Driver/Inputs/mips_img_v2_tree/mips-img-linux-gnu/lib/mipsel-r6-soft/lib/.keep
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/Inputs/mips_img_v2_tree/mips-img-linux-gnu/lib/mipsel-r6-soft/lib/.keep?rev=270380=auto
==
(empty)


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r270373 - [driver][mips] Support new versions of MIPS CodeScape toolchains

2016-05-22 Thread Simon Atanasyan via cfe-commits
Hi Renato,

Strange error. Unfortunately I am far from my computer right now. I was
sure in my changes. Could you please revert the commit?
On May 22, 2016 11:23 PM, "Renato Golin"  wrote:

> On 22 May 2016 at 19:18, Simon Atanasyan via cfe-commits
>  wrote:
> > Author: atanasyan
> > Date: Sun May 22 13:18:07 2016
> > New Revision: 270373
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=270373=rev
> > Log:
> > [driver][mips] Support new versions of MIPS CodeScape toolchains
>
> Hi Simon,
>
> http://lab.llvm.org:8011/builders/clang-cmake-aarch64-42vma/builds/8458
>
> The failure is:
>
> mips-img-v2.cpp:212:13: error: expected string not found in input
> // EL-SOFT:
> "-L[[TC]]/../../../../mips-img-linux-gnu/lib/mipsel-r6-soft/lib"
>
> I can't see that strong, but I can see:
> /../../../../mips-img-linux-gnu/lib/mipsel-r6-soft/lib/../lib"
>
> Not sure that's a bug in the driver or in your test, anyway, it broke
> all bots, not just that one. :)
>
> cheers,
> --renato
>
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: r270373 - [driver][mips] Support new versions of MIPS CodeScape toolchains

2016-05-22 Thread Renato Golin via cfe-commits
On 22 May 2016 at 19:18, Simon Atanasyan via cfe-commits
 wrote:
> Author: atanasyan
> Date: Sun May 22 13:18:07 2016
> New Revision: 270373
>
> URL: http://llvm.org/viewvc/llvm-project?rev=270373=rev
> Log:
> [driver][mips] Support new versions of MIPS CodeScape toolchains

Hi Simon,

http://lab.llvm.org:8011/builders/clang-cmake-aarch64-42vma/builds/8458

The failure is:

mips-img-v2.cpp:212:13: error: expected string not found in input
// EL-SOFT: "-L[[TC]]/../../../../mips-img-linux-gnu/lib/mipsel-r6-soft/lib"

I can't see that strong, but I can see:
/../../../../mips-img-linux-gnu/lib/mipsel-r6-soft/lib/../lib"

Not sure that's a bug in the driver or in your test, anyway, it broke
all bots, not just that one. :)

cheers,
--renato
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r270374 - [driver][mips] clang-format the code. NFC

2016-05-22 Thread Simon Atanasyan via cfe-commits
Author: atanasyan
Date: Sun May 22 13:18:41 2016
New Revision: 270374

URL: http://llvm.org/viewvc/llvm-project?rev=270374=rev
Log:
[driver][mips] clang-format the code. NFC

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=270374=270373=270374=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Sun May 22 13:18:41 2016
@@ -2115,21 +2115,21 @@ static bool findMIPSMultilibs(const Driv
   .flag("+msoft-float")
   .flag("-mmicromips");
 auto BeMicroHard = makeMultilib("/micromips-r6-hard")
-  .flag("+EB")
-  .flag("-msoft-float")
-  .flag("+mmicromips");
+   .flag("+EB")
+   .flag("-msoft-float")
+   .flag("+mmicromips");
 auto BeMicroSoft = makeMultilib("/micromips-r6-soft")
-  .flag("+EB")
-  .flag("+msoft-float")
-  .flag("+mmicromips");
+   .flag("+EB")
+   .flag("+msoft-float")
+   .flag("+mmicromips");
 auto ElMicroHard = makeMultilib("/micromipsel-r6-hard")
-  .flag("+EL")
-  .flag("-msoft-float")
-  .flag("+mmicromips");
+   .flag("+EL")
+   .flag("-msoft-float")
+   .flag("+mmicromips");
 auto ElMicroSoft = makeMultilib("/micromipsel-r6-soft")
-  .flag("+EL")
-  .flag("+msoft-float")
-  .flag("+mmicromips");
+   .flag("+EL")
+   .flag("+msoft-float")
+   .flag("+mmicromips");
 
 auto O32 =
 makeMultilib("/lib").osSuffix("").flag("-mabi=n32").flag("-mabi=n64");
@@ -2138,21 +2138,21 @@ static bool findMIPSMultilibs(const Driv
 auto N64 =
 
makeMultilib("/lib64").osSuffix("").flag("-mabi=n32").flag("+mabi=n64");
 
-ImgMultilibsV2 = MultilibSet()
- .Either({BeHard, BeSoft, ElHard, ElSoft, BeMicroHard,
-  BeMicroSoft, ElMicroHard, ElMicroSoft})
- .Either(O32, N32, N64)
- .FilterOut(NonExistent)
- .setIncludeDirsCallback([](const Multilib ) {
-   return std::vector(
-   {"/../../../../sysroot" + M.includeSuffix() +
-"/../usr/include"});
- })
- .setFilePathsCallback([](const Multilib ) {
-   return std::vector(
-   {"/../../../../mips-img-linux-gnu/lib" +
-M.gccSuffix()});
- });
+ImgMultilibsV2 =
+MultilibSet()
+.Either({BeHard, BeSoft, ElHard, ElSoft, BeMicroHard, BeMicroSoft,
+ ElMicroHard, ElMicroSoft})
+.Either(O32, N32, N64)
+.FilterOut(NonExistent)
+.setIncludeDirsCallback([](const Multilib ) {
+  return std::vector({"/../../../../sysroot" +
+   M.includeSuffix() +
+   "/../usr/include"});
+})
+.setFilePathsCallback([](const Multilib ) {
+  return std::vector(
+  {"/../../../../mips-img-linux-gnu/lib" + M.gccSuffix()});
+});
   }
 
   StringRef CPUName;


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r270368 - [driver][mips] Use target triple mips-mti-linux-gnu for toolchain detection

2016-05-22 Thread Simon Atanasyan via cfe-commits
Author: atanasyan
Date: Sun May 22 10:28:34 2016
New Revision: 270368

URL: http://llvm.org/viewvc/llvm-project?rev=270368=rev
Log:
[driver][mips] Use target triple mips-mti-linux-gnu for toolchain detection

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp
cfe/trunk/test/Driver/mips-fsf.cpp

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=270368=270367=270368=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Sun May 22 10:28:34 2016
@@ -2055,6 +2055,17 @@ static bool findMIPSMultilibs(const Driv
 return false;
   }
 
+  if (TargetTriple.getVendor() == llvm::Triple::MipsTechnologies &&
+  TargetTriple.getOS() == llvm::Triple::Linux &&
+  TargetTriple.getEnvironment() == llvm::Triple::GNU) {
+// Select mips-mti-linux-gnu toolchain.
+if (MtiMipsMultilibsV1.select(Flags, Result.SelectedMultilib)) {
+  Result.Multilibs = MtiMipsMultilibsV1;
+  return true;
+}
+return false;
+  }
+
   if (TargetTriple.getVendor() == llvm::Triple::ImaginationTechnologies &&
   TargetTriple.getOS() == llvm::Triple::Linux &&
   TargetTriple.getEnvironment() == llvm::Triple::GNU) {
@@ -2066,19 +2077,10 @@ static bool findMIPSMultilibs(const Driv
 return false;
   }
 
-  // Sort candidates. Toolchain that best meets the directories goes first.
-  // Then select the first toolchains matches command line flags.
-  MultilibSet *candidates[] = {, };
-  std::sort(
-  std::begin(candidates), std::end(candidates),
-  [](MultilibSet *a, MultilibSet *b) { return a->size() > b->size(); });
-  for (const auto  : candidates) {
-if (candidate->select(Flags, Result.SelectedMultilib)) {
-  if (candidate == )
-Result.BiarchSibling = Multilib();
-  Result.Multilibs = *candidate;
-  return true;
-}
+  if (DebianMipsMultilibs.select(Flags, Result.SelectedMultilib)) {
+Result.BiarchSibling = Multilib();
+Result.Multilibs = DebianMipsMultilibs;
+return true;
   }
 
   {

Modified: cfe/trunk/test/Driver/mips-fsf.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/mips-fsf.cpp?rev=270368=270367=270368=diff
==
--- cfe/trunk/test/Driver/mips-fsf.cpp (original)
+++ cfe/trunk/test/Driver/mips-fsf.cpp Sun May 22 10:28:34 2016
@@ -2,7 +2,7 @@
 //
 // = Big-endian, mips32, hard float
 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN: --target=mips-linux-gnu -mips32 -mhard-float \
+// RUN: --target=mips-mti-linux-gnu -mips32 -mhard-float \
 // RUN: -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_fsf_tree \
 // RUN:   | FileCheck --check-prefix=CHECK-BE-HF-32 %s
 // CHECK-BE-HF-32: "-internal-isystem"
@@ -29,7 +29,7 @@
 //
 // = Big-endian, mips32, hard float, fp64
 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN: --target=mips-linux-gnu -mips32 -mfp64 -mhard-float \
+// RUN: --target=mips-mti-linux-gnu -mips32 -mfp64 -mhard-float \
 // RUN: -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_fsf_tree \
 // RUN:   | FileCheck --check-prefix=CHECK-BE-HF64-32 %s
 // CHECK-BE-HF64-32: "-internal-isystem"
@@ -56,7 +56,7 @@
 //
 // = Big-endian, mips32, soft float
 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN: --target=mips-linux-gnu -mips32 -msoft-float \
+// RUN: --target=mips-mti-linux-gnu -mips32 -msoft-float \
 // RUN: -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_fsf_tree \
 // RUN:   | FileCheck --check-prefix=CHECK-BE-SF-32 %s
 // CHECK-BE-SF-32: "-internal-isystem"
@@ -83,7 +83,7 @@
 //
 // = Big-endian, mips16 / mips32, hard float
 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN: --target=mips-linux-gnu -mips32 -mips16 -mhard-float \
+// RUN: --target=mips-mti-linux-gnu -mips32 -mips16 -mhard-float \
 // RUN: -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_fsf_tree \
 // RUN:   | FileCheck --check-prefix=CHECK-BE-HF-16 %s
 // CHECK-BE-HF-16: "-internal-isystem"
@@ -110,7 +110,7 @@
 //
 // = Big-endian, mips16 / mips32, hard float, fp64
 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN: --target=mips-linux-gnu -mips32 -mips16 -mfp64 -mhard-float \
+// RUN: --target=mips-mti-linux-gnu -mips32 -mips16 -mfp64 -mhard-float \
 // RUN: -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_fsf_tree \
 // RUN:   | FileCheck --check-prefix=CHECK-BE-HF64-16 %s
 // CHECK-BE-HF64-16: "-internal-isystem"
@@ -137,7 +137,7 @@
 //
 // = Big-endian, mips16 / mips32, soft float
 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
-// RUN: --target=mips-linux-gnu -mips32 -mips16 -msoft-float \
+// RUN: --target=mips-mti-linux-gnu -mips32 -mips16 -msoft-float \
 // RUN: -stdlib=libstdc++ 

r270367 - [driver][mips] Rename some variables to better reflect their purpose. NFC

2016-05-22 Thread Simon Atanasyan via cfe-commits
Author: atanasyan
Date: Sun May 22 10:27:58 2016
New Revision: 270367

URL: http://llvm.org/viewvc/llvm-project?rev=270367=rev
Log:
[driver][mips] Rename some variables to better reflect their purpose. NFC

Modified:
cfe/trunk/lib/Driver/ToolChains.cpp

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=270367=270366=270367=diff
==
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Sun May 22 10:27:58 2016
@@ -1865,8 +1865,8 @@ static bool findMIPSMultilibs(const Driv
 
   FilterNonExistent NonExistent(Path, D.getVFS());
 
-  // Check for FSF toolchain multilibs
-  MultilibSet FSFMipsMultilibs;
+  // Check for CodeScape MTI toolchain v1.2 and early.
+  MultilibSet MtiMipsMultilibsV1;
   {
 auto MArchMips32 = makeMultilib("/mips32")
.flag("+m32")
@@ -1908,7 +1908,7 @@ static bool findMIPSMultilibs(const Driv
 
 auto Nan2008 = makeMultilib("/nan2008").flag("+mnan=2008");
 
-FSFMipsMultilibs =
+MtiMipsMultilibsV1 =
 MultilibSet()
 .Either(MArchMips32, MArchMicroMips, MArchMips64r2, MArchMips64,
 MArchDefault)
@@ -1984,7 +1984,8 @@ static bool findMIPSMultilibs(const Driv
 MultilibSet().Either(M32, M64, MAbiN32).FilterOut(NonExistent);
   }
 
-  MultilibSet ImgMultilibs;
+  // Check for CodeScape IMG toolchain v1.2 and early.
+  MultilibSet ImgMultilibsV1;
   {
 auto Mips64r6 = makeMultilib("/mips64r6").flag("+m64").flag("-m32");
 
@@ -1993,7 +1994,7 @@ static bool findMIPSMultilibs(const Driv
 auto MAbi64 =
 makeMultilib("/64").flag("+mabi=n64").flag("-mabi=n32").flag("-m32");
 
-ImgMultilibs =
+ImgMultilibsV1 =
 MultilibSet()
 .Maybe(Mips64r6)
 .Maybe(MAbi64)
@@ -2058,8 +2059,8 @@ static bool findMIPSMultilibs(const Driv
   TargetTriple.getOS() == llvm::Triple::Linux &&
   TargetTriple.getEnvironment() == llvm::Triple::GNU) {
 // Select mips-img-linux-gnu toolchain.
-if (ImgMultilibs.select(Flags, Result.SelectedMultilib)) {
-  Result.Multilibs = ImgMultilibs;
+if (ImgMultilibsV1.select(Flags, Result.SelectedMultilib)) {
+  Result.Multilibs = ImgMultilibsV1;
   return true;
 }
 return false;
@@ -2067,7 +2068,7 @@ static bool findMIPSMultilibs(const Driv
 
   // Sort candidates. Toolchain that best meets the directories goes first.
   // Then select the first toolchains matches command line flags.
-  MultilibSet *candidates[] = {, };
+  MultilibSet *candidates[] = {, };
   std::sort(
   std::begin(candidates), std::end(candidates),
   [](MultilibSet *a, MultilibSet *b) { return a->size() > b->size(); });


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D20321: [Clang][AVX512][intrinsics] Fix vperm intrinsics.

2016-05-22 Thread Igor Breger via cfe-commits
igorb updated this revision to Diff 58055.
igorb added a comment.

Update path according to comments.
Thanks for review, Craig !


Repository:
  rL LLVM

http://reviews.llvm.org/D20321

Files:
  include/clang/Basic/BuiltinsX86.def
  lib/Headers/avx512bwintrin.h
  lib/Headers/avx512fintrin.h
  lib/Headers/avx512vlbwintrin.h
  lib/Headers/avx512vlintrin.h

Index: lib/Headers/avx512vlintrin.h
===
--- lib/Headers/avx512vlintrin.h
+++ lib/Headers/avx512vlintrin.h
@@ -8940,111 +8940,111 @@
 static __inline__ __m256d __DEFAULT_FN_ATTRS
 _mm256_permutexvar_pd (__m256i __X, __m256d __Y)
 {
-  return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
- (__v4di) __X,
+  return (__m256d) __builtin_ia32_permvardf256_mask ((__v4di) __X /* idx */,
+ (__v4df) __Y,
  (__v4df) _mm256_undefined_si256 (),
  (__mmask8) -1);
 }
 
 static __inline__ __m256d __DEFAULT_FN_ATTRS
 _mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
   __m256d __Y)
 {
-  return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
- (__v4di) __X,
+  return (__m256d) __builtin_ia32_permvardf256_mask ((__v4di) __X /* idx */,
+ (__v4df) __Y,
  (__v4df) __W,
  (__mmask8) __U);
 }
 
 static __inline__ __m256d __DEFAULT_FN_ATTRS
 _mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
 {
-  return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
- (__v4di) __X,
+  return (__m256d) __builtin_ia32_permvardf256_mask ((__v4di) __X /* idx */,
+ (__v4df) __Y,
  (__v4df) _mm256_setzero_pd (),
  (__mmask8) __U);
 }
 
 static __inline__ __m256i __DEFAULT_FN_ATTRS
 _mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
 {
-  return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
- (__v4di) __X,
+  return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __X /* idx */,
+ (__v4di) __Y,
  (__v4di) _mm256_setzero_si256 (),
  (__mmask8) __M);
 }
 
 static __inline__ __m256i __DEFAULT_FN_ATTRS
 _mm256_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
 {
-  return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
- (__v4di) __X,
+  return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __X /* idx */,
+ (__v4di) __Y,
  (__v4di) _mm256_undefined_si256 (),
  (__mmask8) -1);
 }
 
 static __inline__ __m256i __DEFAULT_FN_ATTRS
 _mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
  __m256i __Y)
 {
-  return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
- (__v4di) __X,
+  return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __X /* idx */,
+ (__v4di) __Y,
  (__v4di) __W,
  __M);
 }
 
 static __inline__ __m256 __DEFAULT_FN_ATTRS
 _mm256_mask_permutexvar_ps (__m256 __W, __mmask8 __U, __m256i __X,
   __m256 __Y)
 {
-  return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
-(__v8si) __X,
+  return (__m256) __builtin_ia32_permvarsf256_mask ((__v8si) __X /* idx */,
+(__v8sf) __Y,
 (__v8sf) __W,
 (__mmask8) __U);
 }
 
 static __inline__ __m256 __DEFAULT_FN_ATTRS
 _mm256_maskz_permutexvar_ps (__mmask8 __U, __m256i __X, __m256 __Y)
 {
-  return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
-(__v8si) __X,
+  return (__m256) __builtin_ia32_permvarsf256_mask ((__v8si) __X /* idx */,
+(__v8sf) __Y,
 (__v8sf) _mm256_setzero_ps (),
 (__mmask8) __U);
 }
 
 static __inline__ __m256 __DEFAULT_FN_ATTRS
 _mm256_permutexvar_ps (__m256i __X, __m256 __Y)
 {
-  return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
-(__v8si) __X,
+  return (__m256) __builtin_ia32_permvarsf256_mask ((__v8si) __X /* idx */,
+(__v8sf) __Y,
 (__v8sf) _mm256_undefined_si256 (),
 (__mmask8) -1);
 }
 
 static __inline__ __m256i __DEFAULT_FN_ATTRS
 _mm256_maskz_permutexvar_epi32 (__mmask8 __M, __m256i __X, __m256i __Y)
 {
-  return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
- (__v8si) __X,
+  return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __X /* idx */,
+ (__v8si) __Y,
  (__v8si) _mm256_setzero_si256 (),
  __M);
 }
 
 static __inline__ __m256i __DEFAULT_FN_ATTRS
 _mm256_mask_permutexvar_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
  __m256i __Y)
 {
-  return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
- (__v8si) __X,
+  return (__m256i) __builtin_ia32_permvarsi256_mask 

Re: [PATCH] D20196: [clang-tidy] Inefficient string operation

2016-05-22 Thread Bittner Barni via cfe-commits
bittnerbarni updated this revision to Diff 58054.

http://reviews.llvm.org/D20196

Files:
  clang-tidy/performance/CMakeLists.txt
  clang-tidy/performance/InefficientStringConcatenationCheck.cpp
  clang-tidy/performance/InefficientStringConcatenationCheck.h
  clang-tidy/performance/PerformanceTidyModule.cpp
  docs/ReleaseNotes.rst
  docs/clang-tidy/checks/list.rst
  docs/clang-tidy/checks/performance-inefficient-string-concatenation.rst
  test/clang-tidy/performance-inefficient-string-concatenation.cpp

Index: test/clang-tidy/performance-inefficient-string-concatenation.cpp
===
--- /dev/null
+++ test/clang-tidy/performance-inefficient-string-concatenation.cpp
@@ -0,0 +1,44 @@
+// RUN: %check_clang_tidy %s performance-inefficient-string-concatenation %t
+
+namespace std {
+template 
+class basic_string {
+public:
+  basic_string() {}
+  ~basic_string() {}
+  basic_string *operator+=(const basic_string &) {}
+  friend basic_string operator+(const basic_string &, const basic_string &) {}
+};
+typedef basic_string string;
+typedef basic_string wstring;
+}
+
+void f(std::string) {}
+std::string g(std::string) {}
+
+int main() {
+  std::string mystr1, mystr2;
+  std::wstring mywstr1, mywstr2;
+
+  for (int i = 0; i < 10; ++i) {
+f(mystr1 + mystr2 + mystr1);
+// CHECK-MESSAGES: :[[@LINE-1]]:23: warning: string concatenation results in allocation of unnecessary temporary strings; consider using 'operator+=' or 'string::append()' instead
+mystr1 = mystr1 + mystr2;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: string concatenation
+mystr1 = mystr2 + mystr2 + mystr2;
+// CHECK-MESSAGES: :[[@LINE-1]]:30: warning: string concatenation
+mystr1 = mystr2 + mystr1;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: string concatenation
+mywstr1 = mywstr2 + mywstr1;
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: string concatenation
+mywstr1 = mywstr2 + mywstr2 + mywstr2;
+// CHECK-MESSAGES: :[[@LINE-1]]:33: warning: string concatenation
+
+mywstr1 = mywstr2 + mywstr2;
+mystr1 = mystr2 + mystr2;
+mystr1 += mystr2;
+f(mystr2 + mystr1);
+mystr1 = g(mystr1);
+  }
+  return 0;
+}
Index: docs/clang-tidy/checks/performance-inefficient-string-concatenation.rst
===
--- /dev/null
+++ docs/clang-tidy/checks/performance-inefficient-string-concatenation.rst
@@ -0,0 +1,55 @@
+.. title:: clang-tidy - performance-inefficient-string-concatenation
+
+performance-inefficient-string-concatenation
+
+
+The problem
+---
+This check is to warn about the performance overhead arising from concatenating strings, using the ``operator+``, for instance:
+
+.. code:: c++
+
+std::string a("Foo"), b("Bar");
+a = a + b;
+
+Instead of this structure you should use ``operator+=`` or ``std::string``'s (``std::basic_string``) class member function ``append()``. For instance:
+   
+.. code:: c++
+
+   std::string a("Foo"), b("Baz");
+   for(int i = 0; i < 2; ++i)
+   {
+   a = a + "Bar" + b;
+   }
+
+Could be rewritten in a greatly more efficient way like:
+
+.. code:: c++
+
+   std::string a("Foo"), b("Baz");
+   for(int i = 0; i < 2; ++i)
+   {
+   a.append("Bar").append(b);
+   } 
+
+And this can be rewritten too:
+ 
+ .. code:: c++
+  
+   void f(const std::string&){}
+   std::string a("Foo"), b("Baz");
+   void g()
+   {
+   f(a + "Bar" + b);
+   }
+
+In a slightly more efficient way like:
+
+.. code:: c++
+
+   void f(const std::string&){}
+   std::string a("Foo"), b("Baz");
+   void g()
+   {
+   f(std::string(a).append("Bar").append(b));
+   }
Index: docs/clang-tidy/checks/list.rst
===
--- docs/clang-tidy/checks/list.rst
+++ docs/clang-tidy/checks/list.rst
@@ -102,6 +102,7 @@
performance-faster-string-find
performance-for-range-copy
performance-implicit-cast-in-loop
+   performance-inefficient-string-concatenation
performance-unnecessary-copy-initialization
performance-unnecessary-value-param
readability-avoid-const-params-in-decls
Index: docs/ReleaseNotes.rst
===
--- docs/ReleaseNotes.rst
+++ docs/ReleaseNotes.rst
@@ -184,6 +184,12 @@
   Warns about range-based loop with a loop variable of const ref type where the
   type of the variable does not match the one returned by the iterator.
 
+- New `performance-inefficient-string-concatenation
+  `_ check
+
+  This check is to warn about the performance overhead arising from concatenating 
+  strings, using the ``operator+``, instead of ``operator+=``.
+  
 - New `performance-unnecessary-value-param
   

[PATCH] D20514: [Clang][AVX512][BUILTIN]adding missing intrinsics for movdaq instruction set

2016-05-22 Thread michael zuckerman via cfe-commits
m_zuckerman created this revision.
m_zuckerman added reviewers: AsafBadouh, igorb, delena.
m_zuckerman added a subscriber: cfe-commits.

http://reviews.llvm.org/D20514

Files:
  include/clang/Basic/BuiltinsX86.def
  lib/Headers/avx512fintrin.h
  lib/Headers/avx512vlintrin.h
  test/CodeGen/avx512f-builtins.c
  test/CodeGen/avx512vl-builtins.c

Index: test/CodeGen/avx512vl-builtins.c
===
--- test/CodeGen/avx512vl-builtins.c
+++ test/CodeGen/avx512vl-builtins.c
@@ -3948,6 +3948,30 @@
   return _mm256_mask_store_epi32(__P, __U, __A); 
 }
 
+__m128i test_mm_mask_mov_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
+  // CHECK-LABEL: @test_mm_mask_mov_epi32
+  // CHECK: @llvm.x86.avx512.mask.mov
+  return _mm_mask_mov_epi32(__W, __U, __A); 
+}
+
+__m128i test_mm_maskz_mov_epi32(__mmask8 __U, __m128i __A) {
+  // CHECK-LABEL: @test_mm_maskz_mov_epi32
+  // CHECK: @llvm.x86.avx512.mask.mov
+  return _mm_maskz_mov_epi32(__U, __A); 
+}
+
+__m256i test_mm256_mask_mov_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
+  // CHECK-LABEL: @test_mm256_mask_mov_epi32
+  // CHECK: @llvm.x86.avx512.mask.mov
+  return _mm256_mask_mov_epi32(__W, __U, __A); 
+}
+
+__m256i test_mm256_maskz_mov_epi32(__mmask8 __U, __m256i __A) {
+  // CHECK-LABEL: @test_mm256_maskz_mov_epi32
+  // CHECK: @llvm.x86.avx512.mask.mov
+  return _mm256_maskz_mov_epi32(__U, __A); 
+}
+
 __m128i test_mm_mask_mov_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
   // CHECK-LABEL: @test_mm_mask_mov_epi64
   // CHECK: @llvm.x86.avx512.mask.mov
@@ -3972,6 +3996,30 @@
   return _mm256_maskz_mov_epi64(__U, __A); 
 }
 
+__m128i test_mm_mask_load_epi32(__m128i __W, __mmask8 __U, void const *__P) {
+  // CHECK-LABEL: @test_mm_mask_load_epi32
+  // CHECK: @llvm.x86.avx512.mask.load.d.128
+  return _mm_mask_load_epi32(__W, __U, __P); 
+}
+
+__m128i test_mm_maskz_load_epi32(__mmask8 __U, void const *__P) {
+  // CHECK-LABEL: @test_mm_maskz_load_epi32
+  // CHECK: @llvm.x86.avx512.mask.load.d.128
+  return _mm_maskz_load_epi32(__U, __P); 
+}
+
+__m256i test_mm256_mask_load_epi32(__m256i __W, __mmask8 __U, void const *__P) {
+  // CHECK-LABEL: @test_mm256_mask_load_epi32
+  // CHECK: @llvm.x86.avx512.mask.load.d.256
+  return _mm256_mask_load_epi32(__W, __U, __P); 
+}
+
+__m256i test_mm256_maskz_load_epi32(__mmask8 __U, void const *__P) {
+  // CHECK-LABEL: @test_mm256_maskz_load_epi32
+  // CHECK: @llvm.x86.avx512.mask.load.d.256
+  return _mm256_maskz_load_epi32(__U, __P); 
+}
+
 __m128i test_mm_mask_load_epi64(__m128i __W, __mmask8 __U, void const *__P) {
   // CHECK-LABEL: @test_mm_mask_load_epi64
   // CHECK: @llvm.x86.avx512.mask.load.q.128
Index: test/CodeGen/avx512f-builtins.c
===
--- test/CodeGen/avx512f-builtins.c
+++ test/CodeGen/avx512f-builtins.c
@@ -2542,6 +2542,18 @@
   return _mm512_maskz_load_epi32(__U, __P); 
 }
 
+__m512i test_mm512_mask_mov_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
+  // CHECK-LABEL: @test_mm512_mask_mov_epi32
+  // CHECK: @llvm.x86.avx512.mask.mov
+  return _mm512_mask_mov_epi32(__W, __U, __A); 
+}
+
+__m512i test_mm512_maskz_mov_epi32(__mmask16 __U, __m512i __A) {
+  // CHECK-LABEL: @test_mm512_maskz_mov_epi32
+  // CHECK: @llvm.x86.avx512.mask.mov
+  return _mm512_maskz_mov_epi32(__U, __A); 
+}
+
 __m512i test_mm512_mask_mov_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
   // CHECK-LABEL: @test_mm512_mask_mov_epi64
   // CHECK: @llvm.x86.avx512.mask.mov
Index: lib/Headers/avx512vlintrin.h
===
--- lib/Headers/avx512vlintrin.h
+++ lib/Headers/avx512vlintrin.h
@@ -5834,7 +5834,78 @@
   (__mmask8) __U);
 }
 
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_movdqa32_128_mask ((__v4si) __A,
+ (__v4si) __W,
+ (__mmask8) __U);
+}
+
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
+{
+  return (__m128i) __builtin_ia32_movdqa32_128_mask ((__v4si) __A,
+ (__v4si)
+ _mm_setzero_si128 (),
+ (__mmask8) __U);
+}
+
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_movdqa32_256_mask ((__v8si) __A,
+ (__v8si) __W,
+ (__mmask8) __U);
+}
+
+static __inline__ __m256i __DEFAULT_FN_ATTRS
+_mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
+{
+  return (__m256i) __builtin_ia32_movdqa32_256_mask ((__v8si) __A,
+ (__v8si)
+ _mm256_setzero_si256 (),
+ (__mmask8) __U);
+}
 
+static __inline__ __m128i __DEFAULT_FN_ATTRS
+_mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
+{
+  return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *)