## Float estimates
-vec_expte - float 2^x
-vec_loge - float log2(x)
-vec_re - float 1/x
-vec_rsqrte - float 1/sqrt(x)
+ vec_expte - float 2^x
+ vec_loge - float log2(x)
+ vec_re - float 1/x
+ vec_rsqrte - float 1/sqrt(x)
The spec says the max relative inaccuracy is 1/4096.
## vec_madd(s) - FMA, multiply-add, optionally saturated
-a * b + c
+ a * b + c
## vec_msum(s) - horizontal gather multiply-add, optionally saturated
This should be separated to a horizontal multiply and a horizontal add. How a horizontal operation would work in SV is TBD, how wide is it, etc.
-a.x + a.y + a.z ...
-a.x * a.y * a.z ...
+ a.x + a.y + a.z ...
+ a.x * a.y * a.z ...
## vec_mul*
There should be both a same-width multiply and a widening multiply. Signed and unsigned versions. Optionally saturated.
-u8 * u8 = u8
-u8 * u8 = u16
+
+ u8 * u8 = u8
+ u8 * u8 = u16
For 8,16,32,64, resulting in 8,16,32,64,128.
## vec_rl - rotate left
-(a << x) | (a >> (WIDTH - x)
+ (a << x) | (a >> (WIDTH - x)
## vec_sel - bitwise select
-(a ? b : c)
+ (a ? b : c)
## vec_splat - scatter