r301487 - Replace HashString algorithm with xxHash64
Rui Ueyama via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 26 15:45:05 PDT 2017
Author: ruiu
Date: Wed Apr 26 17:45:04 2017
New Revision: 301487
URL: http://llvm.org/viewvc/llvm-project?rev=301487&view=rev
Log:
Replace HashString algorithm with xxHash64
The previous algorithm processed one character at a time, which is very
painful on a modern CPU. Replace it with xxHash64, which both already
exists in the codebase and is fairly fast.
Patch from Scott Smith!
Differential Revision: https://reviews.llvm.org/D32509
Modified:
cfe/trunk/test/CodeGen/target-features-error-2.c
cfe/trunk/test/CodeGen/target-features-error.c
cfe/trunk/test/SemaCXX/typo-correction-delayed.cpp
cfe/trunk/unittests/Tooling/CompilationDatabaseTest.cpp
Modified: cfe/trunk/test/CodeGen/target-features-error-2.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/target-features-error-2.c?rev=301487&r1=301486&r2=301487&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/target-features-error-2.c (original)
+++ cfe/trunk/test/CodeGen/target-features-error-2.c Wed Apr 26 17:45:04 2017
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -verify -o - -D NEED_SSE42
+// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -verify -o - -D NEED_SSE41
// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -verify -o - -D NEED_AVX_1
// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -verify -o - -D NEED_AVX_2
// RUN: %clang_cc1 %s -triple=x86_64-linux-gnu -S -verify -o - -D NEED_AVX_3
@@ -7,9 +7,12 @@
#define __MM_MALLOC_H
#include <x86intrin.h>
-#if NEED_SSE42
+// Really, this needs AVX, but because targetting AVX includes all the SSE features too, and
+// features are sorted by hash function, and we just return the first missing feature, then we end
+// up returning the subfeature sse4.1 instead of avx.
+#if NEED_SSE41
int baz(__m256i a) {
- return _mm256_extract_epi32(a, 3); // expected-error {{always_inline function '_mm256_extract_epi32' requires target feature 'sse4.2', but would be inlined into function 'baz' that is compiled without support for 'sse4.2'}}
+ return _mm256_extract_epi32(a, 3); // expected-error {{always_inline function '_mm256_extract_epi32' requires target feature 'sse4.1', but would be inlined into function 'baz' that is compiled without support for 'sse4.1'}}
}
#endif
Modified: cfe/trunk/test/CodeGen/target-features-error.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/target-features-error.c?rev=301487&r1=301486&r2=301487&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/target-features-error.c (original)
+++ cfe/trunk/test/CodeGen/target-features-error.c Wed Apr 26 17:45:04 2017
@@ -3,6 +3,5 @@ int __attribute__((target("avx"), always
return a + 4;
}
int bar() {
- return foo(4); // expected-error {{always_inline function 'foo' requires target feature 'sse4.2', but would be inlined into function 'bar' that is compiled without support for 'sse4.2'}}
+ return foo(4); // expected-error {{always_inline function 'foo' requires target feature 'sse4.1', but would be inlined into function 'bar' that is compiled without support for 'sse4.1'}}
}
-
Modified: cfe/trunk/test/SemaCXX/typo-correction-delayed.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/typo-correction-delayed.cpp?rev=301487&r1=301486&r2=301487&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/typo-correction-delayed.cpp (original)
+++ cfe/trunk/test/SemaCXX/typo-correction-delayed.cpp Wed Apr 26 17:45:04 2017
@@ -52,6 +52,7 @@ void testNoCandidates() {
}
class string {};
+
struct Item {
void Nest();
string text();
@@ -88,12 +89,16 @@ void f(LinkedNode *node) {
struct NestedNode {
NestedNode* Nest();
NestedNode* next();
- string text() const;
+ // Note, this test is dependent on the order in which identifiers are passed
+ // to the typo corrector, which is based on the hash function used. For
+ // consistency, I am making the next keyword the first identifier returned.
+ string eext() const;
};
void f(NestedNode *node) {
// There are two equidistant, usable corrections for Next: next and Nest
NestedNode *next = node->Next(); // expected-error-re {{no member named 'Next' in 'initializerCorrections::NestedNode'{{$}}}}
}
+
}
namespace PR21669 {
Modified: cfe/trunk/unittests/Tooling/CompilationDatabaseTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Tooling/CompilationDatabaseTest.cpp?rev=301487&r1=301486&r2=301487&view=diff
==============================================================================
--- cfe/trunk/unittests/Tooling/CompilationDatabaseTest.cpp (original)
+++ cfe/trunk/unittests/Tooling/CompilationDatabaseTest.cpp Wed Apr 26 17:45:04 2017
@@ -81,10 +81,10 @@ TEST(JSONCompilationDatabase, GetAllFile
std::vector<std::string> expected_files;
SmallString<16> PathStorage;
- llvm::sys::path::native("//net/dir/file1", PathStorage);
- expected_files.push_back(PathStorage.str());
llvm::sys::path::native("//net/dir/file2", PathStorage);
expected_files.push_back(PathStorage.str());
+ llvm::sys::path::native("//net/dir/file1", PathStorage);
+ expected_files.push_back(PathStorage.str());
EXPECT_EQ(expected_files,
getAllFiles("[{\"directory\":\"//net/dir\","
"\"command\":\"command\","
More information about the cfe-commits
mailing list