Add altivec version of block comment skipping code.

llvm-svn: 39093
This commit is contained in:
Chris Lattner 2006-10-30 20:01:22 +00:00
parent c07ba1fe2f
commit 9f6604fa60
2 changed files with 18 additions and 1 deletions

View File

@ -772,6 +772,9 @@ static bool isEndOfBlockCommentWithEscapedNewLine(const char *CurPtr,
#ifdef __SSE2__
#include <emmintrin.h>
#elif __ALTIVEC__
#include <altivec.h>
#undef bool
#endif
/// SkipBlockComment - We have just read the /* characters from input. Read
@ -808,7 +811,15 @@ bool Lexer::SkipBlockComment(LexerToken &Result, const char *CurPtr) {
while (CurPtr+16 <= BufferEnd &&
_mm_movemask_epi8(_mm_cmpeq_epi8(*(__m128i*)CurPtr, Slashes)) == 0)
CurPtr += 16;
#else
#elif __ALTIVEC__
__vector unsigned char Slashes = {
'/', '/', '/', '/', '/', '/', '/', '/',
'/', '/', '/', '/', '/', '/', '/', '/'
};
while (CurPtr+16 <= BufferEnd &&
!vec_any_eq(*(vector unsigned char*)CurPtr, Slashes))
CurPtr += 16;
#else
// Scan for '/' quickly. Many block comments are very large.
while (CurPtr[0] != '/' &&
CurPtr[1] != '/' &&

View File

@ -12,10 +12,16 @@
##===----------------------------------------------------------------------===##
LEVEL = ../../..
include $(LEVEL)/Makefile.config
LIBRARYNAME := clangLex
BUILD_ARCHIVE = 1
CXXFLAGS = -fno-rtti
ifeq ($(ARCH),PowerPC)
CXXFLAGS += -maltivec
endif
CPPFLAGS += -I$(PROJ_SRC_DIR)/../include
include $(LEVEL)/Makefile.common