================
@@ -1943,12 +1954,31 @@ fastParseASCIIIdentifier(const char *CurPtr,
continue;
return CurPtr;
}
+
+ return fastParseASCIIIdentifierScalar(CurPtr, BufferEnd);
+}
+
+static bool supportsSSE42() {
+ static bool SupportsSSE42 = __builtin_cpu_supports("sse4.2");
+ return SupportsSSE42;
+}
+
#endif
- unsigned char C = *CurPtr;
- while (isAsciiIdentifierContinue(C))
- C = *++CurPtr;
- return CurPtr;
+static const char *fastParseASCIIIdentifier(const char *CurPtr,
+ const char *BufferEnd) {
+#if !defined(__i386__) && !defined(__x86_64__) || defined(_WIN32)
+ return fastParseASCIIIdentifierScalar(CurPtr, BufferEnd);
+#else
+
+#ifndef __SSE4_2__
+ if (LLVM_UNLIKELY(!supportsSSE42()))
+ return fastParseASCIIIdentifierScalar(CurPtr, BufferEnd);
+#endif
+
+ return fastParseASCIIIdentifierSSE42(CurPtr, BufferEnd);
----------------
cor3ntin wrote:
Please avoid the double negation (ie `LLVM_LIKELY(supportsSSE42())`.
Did you try using `__attribute__ ((target ("default")))` instead of manual
dispatch?
https://github.com/llvm/llvm-project/pull/171914
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits