comparison README @ 2:f12b5dd4e18c

*: many new operations and a real test suite
author Paper <paper@tflc.us>
date Tue, 22 Oct 2024 22:39:05 -0400
parents 02a517e4c492
children e05c257c6a23
comparison
equal deleted inserted replaced
1:1d9d2308c1d2 2:f12b5dd4e18c
42 subtracts the value of `vec2' from `vec1' and returns it 42 subtracts the value of `vec2' from `vec1' and returns it
43 43
44 v[u]intAxB mul(v[u]intAxB vec1, v[u]intAxB vec2) 44 v[u]intAxB mul(v[u]intAxB vec1, v[u]intAxB vec2)
45 multiplies the values of `vec1' and `vec2' together and 45 multiplies the values of `vec1' and `vec2' together and
46 returns it 46 returns it
47
48 v[u]intAxB div(v[u]intAxB vec1, v[u]intAxB vec2)
49 divides vec1 by the values in vec2. dividing by zero is
50 considered defined behavior and should result in a zero;
51 if this doesn't happen it's considered a bug
52
53 v[u]intAxB and(v[u]intAxB vec1, v[u]intAxB vec2)
54 bitwise AND (&) of the values in both vectors
55
56 v[u]intAxB or(v[u]intAxB vec1, v[u]intAxB vec2)
57 bitwise OR (|) of the values in both vectors
58
59 v[u]intAxB xor(v[u]intAxB vec1, v[u]intAxB vec2)
60 bitwise XOR (^) of the values in both vectors
61
62 v[u]intAxB rshift(v[u]intAxB vec1, vuintAxB vec2)
63 arithmetic right shift of the values in vec1 by
64 the corresponding values in vec2
65
66 v[u]intAxB lshift(v[u]intAxB vec1, vuintAxB vec2)
67 arithmetic left shift of the values in vec1 by
68 the corresponding values in vec2
69
70 v[u]intAxB lrshift(v[u]intAxB vec1, vuintAxB vec2)
71 logical right shift of the values in vec1 by
72 the corresponding values in vec2
73
74 v[u]intAxB avg(v[u]intAxB vec1, v[u]intAxB vec2)
75 returns the average of the values in both vectors
76 i.e., div(mul(vec1, vec2), splat(2))
77
78 there are also a number of comparisons possible:
79
80 v[u]intAxB cmplt(v[u]intAxB vec1, v[u]intAxB vec2)
81 turns on all bits of the corresponding value in
82 the result vector if the value in `vec1' is less
83 than the corresponding value in `vec2', else all
84 of the bits are turned off.
85
86 v[u]intAxB cmpgt(v[u]intAxB vec1, v[u]intAxB vec2)
87 turns on all bits of the corresponding value in
88 the result vector if the value in `vec1' is greater
89 than the corresponding value in `vec2', else all
90 of the bits are turned off.
91
92 v[u]intAxB cmpeq(v[u]intAxB vec1, v[u]intAxB vec2)
93 turns on all bits of the corresponding value in
94 the result vector if the value in `vec1' are equal
95 to the corresponding value in `vec2', else all
96 of the bits are turned off.
97
98 v[u]intAxB cmple(v[u]intAxB vec1, v[u]intAxB vec2)
99 turns on all bits of the corresponding value in
100 the result vector if the value in `vec1' is less
101 than or equal to the corresponding value in `vec2',
102 else all of the bits are turned off.
103
104 v[u]intAxB cmpge(v[u]intAxB vec1, v[u]intAxB vec2)
105 turns on all bits of the corresponding value in
106 the result vector if the value in `vec1' is greater
107 than or equal to the corresponding value in `vec2',
108 else all of the bits are turned off.