From e6d02a085533134ee6bf1bca862b03968a83b591 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Sun, 25 Aug 2024 00:24:53 +0200 Subject: Rename isascii-avx to simd-isascii --- c/isascii-avx512/isascii.c | 99 ---------------------------------------------- 1 file changed, 99 deletions(-) delete mode 100644 c/isascii-avx512/isascii.c (limited to 'c/isascii-avx512/isascii.c') diff --git a/c/isascii-avx512/isascii.c b/c/isascii-avx512/isascii.c deleted file mode 100644 index 612aa49..0000000 --- a/c/isascii-avx512/isascii.c +++ /dev/null @@ -1,99 +0,0 @@ -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#define VECWDTH (512 / 8) - -static const unsigned char *readfile(const char *, size_t *); - -static const uint8_t charmsk[64] = { - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -}; - -bool -strisascii(const unsigned char *s, size_t n) -{ - __m512i msk = _mm512_loadu_epi8(charmsk); - while (n >= VECWDTH) { - if (_mm512_test_epi8_mask(_mm512_loadu_epi8(s), msk) != 0) - return false; - s += VECWDTH; - n -= VECWDTH; - } - for (size_t i = 0; i < n; i++) { - if (s[i] > 0x7F) - return false; - } - return true; -} - -bool -strisascii_dumb(const unsigned char *s, size_t n) -{ - for (size_t i = 0; i < n; i++) { - if (s[i] > 0x7F) - return false; - } - return true; -} - -int -main(int argc, char **argv) -{ - if (argc != 2) { - fprintf(stderr, "Usage: %s file\n", getprogname()); - exit(EXIT_FAILURE); - } - - size_t len; - int rv = EXIT_SUCCESS; - const unsigned char *beg = readfile(argv[1], &len); - - clock_t tmbeg = clock(); - if (!strisascii(beg, len)) - puts("Non-ASCII"); - printf("Elapsed time: %.3fs\n", (double)(clock() - tmbeg) / CLOCKS_PER_SEC); - - tmbeg = clock(); - if (!strisascii_dumb((const unsigned char *)beg, len)) - puts("Non-ASCII"); - printf("Elapsed time: %.3fs\n", (double)(clock() - tmbeg) / CLOCKS_PER_SEC); - - munmap((void *)beg, len); - return rv; -} - -const unsigned char * -readfile(const char *filename, size_t *n) -{ - int fd = open(filename, O_RDONLY); - if (fd == -1) - err(1, "open: %s", filename); - - struct stat sb; - if (fstat(fd, &sb) == -1) - err(1, "fstat: %s", filename); - - *n = sb.st_size; - const unsigned char *p = mmap(NULL, *n, PROT_READ, MAP_PRIVATE, fd, 0); - if (p == MAP_FAILED) - err(1, "mmap: %s", filename); - return p; -} -- cgit v1.2.3