comparison README @ 36:677c03c382b8

Backed out changeset e26874655738
author Paper <paper@tflc.us>
date Fri, 25 Apr 2025 17:40:55 -0400
parents e26874655738
children fd42f9b1b95e
comparison
equal deleted inserted replaced
35:99e4539f922f 36:677c03c382b8
1 vec - a tiny SIMD vector library written in C99 1 vec - a tiny SIMD vector header-only library written in C99
2 2
3 it comes with an extremely basic API that is similar to other intrinsics 3 it comes with an extremely basic API that is similar to other intrinsics
4 libraries; each type is in the exact same format: 4 libraries; each type is in the exact same format:
5 5
6 v[sign][bits]x[size] 6 v[sign][bits]x[size]
9 and `size' is the how many integers are in the vector 9 and `size' is the how many integers are in the vector
10 10
11 vec provides types for 64-bit, 128-bit, 256-bit, and 512-bit SIMD intrinsics 11 vec provides types for 64-bit, 128-bit, 256-bit, and 512-bit SIMD intrinsics
12 on processors where vec has an implementation and falls back to array-based 12 on processors where vec has an implementation and falls back to array-based
13 implementations where they are not. 13 implementations where they are not.
14
15 to initialize vec, you MUST call `vec_init()' when your program starts up.
16
17 note that `vec_init()' is NOT thread-safe, and things can and will
18 blow up if you call it simultaneously from different threads (i.e. you
19 try to only initialize it when you need to... please just initialize
20 it on startup so you don't have to worry about that!!!)
21 14
22 all of these have many operations that are prefixed with the name of the 15 all of these have many operations that are prefixed with the name of the
23 type and an underscore, for example: 16 type and an underscore, for example:
24 17
25 vint8x16 vint8x16_splat(uint8_t x) 18 vint8x16 vint8x16_splat(uint8_t x)
111 v[u]intAxB cmpge(v[u]intAxB vec1, v[u]intAxB vec2) 104 v[u]intAxB cmpge(v[u]intAxB vec1, v[u]intAxB vec2)
112 turns on all bits of the corresponding value in 105 turns on all bits of the corresponding value in
113 the result vector if the value in `vec1' is greater 106 the result vector if the value in `vec1' is greater
114 than or equal to the corresponding value in `vec2', 107 than or equal to the corresponding value in `vec2',
115 else all of the bits are turned off. 108 else all of the bits are turned off.
109
110 to initialize vec, you MUST call `vec_init()' when your programs starts up.
111
112 note that `vec_init()' is NOT thread-safe, and things can and will
113 blow up if you call it simultaneously from different threads (i.e. you
114 try to only initialize it when you need to... please just initialize
115 it on startup so you don't have to worry about that!!!)