#if defined(__x86_64__) || defined(__ia64__) || defined(_M_AMD64) || defined(_M_IA64) \
|| defined(_WIN64) || defined(__alpha__) || defined(__s390__)
#define _X64_MODE
typedef uint64_t checker_type;
#define _X_BRU(x) x
#define _X_SEL(x,y) x
#else
typedef uint32_t checker_type;
#define _X_BRU(x)
#define _X_SEL(x,y) y
#endif
#define _WMAGIC checker_type(~0ULL/0xffff)
size_t wcountch(wchar_t *ptr, wchar_t ch, wchar_t *last)
{
size_t count = 0;
wchar_t *trim = (wchar_t *)
_X_SEL((((checker_type)ptr & -8LL) + 8),(((checker_type)ptr & -4LL) + 4));
checker_type wide_checker =
_X_BRU ( ((checker_type)ch << 48) | )
_X_BRU ( ((checker_type)ch << 32) | )
((checker_type)ch << 16) |
((checker_type)ch << 0 );
if (trim < ptr) trim = ptr;
for (; ptr < trim; ptr++)
if (*ptr == ch) count++;
// _X_SEL(4,2) == sizeof(checker_type) / 2
for (ptr = trim; last - _X_SEL(4, 2) >= ptr; ptr += _X_SEL(4, 2))
{
checker_type nptr = *(checker_type *)ptr ^ wide_checker;
checker_type switchZero = 0;
_X_BRU ( switchZero |= ((nptr & 0xffff000000000000) - (_WMAGIC & 0xffff000000000000)) & 0xffff000000000000; )
_X_BRU ( switchZero |= ((nptr & 0x0000ffff00000000) - (_WMAGIC & 0x0000ffff00000000)) & 0x0000ffff00000000; )
switchZero |= ((nptr & 0x00000000ffff0000) - (_WMAGIC & 0x00000000ffff0000)) & 0x00000000ffff0000;
switchZero |= ((nptr & 0x000000000000ffff) - (_WMAGIC & 0x000000000000ffff)) & 0x000000000000ffff;
count += (switchZero & ((~nptr & ((_WMAGIC) << 15)))) / 0x8000 % 0xffff;
}
for (; ptr <= last; ptr++)
if (*ptr == ch) count++;
return count;
}
wcountch
코로모(qscsq)
2015-11-28 20:38
추천 0
다른 게시글
-
같은 사이트라도 html문서도 있고, html5로 작성된것도 있고 그래?익명(117.55) | 15.11.28추천 0
-
씨플플 nested loop 컨트롤하는거 [2]익명(119.194) | 15.11.28추천 0
-
현역 프로그래밍의 수준이 어떻다. 이걸 단정짓는 건장소삼(223.62) | 15.11.28추천 0
-
궁금한개 잇는대요. 변수들 다왜워야되오???? [3]asdf(118.216) | 15.11.28추천 0
-
도배 알바가 병신인 이유.euㅇㅇㅇ(121.144) | 15.11.28추천 0
-
방학동안 할 공부 좀 추천해주세요 ㅠㅠ익명(182.218) | 15.11.28추천 0
-
단폴조져?ㅋㅋㅋ ㅊ초연진(14.52) | 15.11.28추천 0
-
현업 프로그래머들의 수준이 어느정도인지 모르것다. [1]늦깍이(115.160) | 15.11.28추천 0
-
메리트있는 사이트 지금 아니면 기회 없습니다. ㅅ창재진(14.52) | 15.11.28추천 0
-
우리집 VHDL modelsim이 이상한데 테스트벤치한번만 시뮬좀..ㅠㅠ이건머야(222.238) | 15.11.28추천 0
댓글 0