(no commit message)
authorcand@51b69dee28eeccfe0f04790433b843689895c6e3 <cand@web>
Thu, 10 Dec 2020 18:11:47 +0000 (18:11 +0000)
committerIkiWiki <ikiwiki.info>
Thu, 10 Dec 2020 18:11:47 +0000 (18:11 +0000)
openpower/sv/av_opcodes.mdwn

index ba4b6145c180bd7120ec99dc042c659cb70b9c5d..1cef144caab6898c27fce8d12758eadfd5516834 100644 (file)
@@ -80,39 +80,40 @@ with twin predication the elwidth can be overridden on both src and dest such th
 
 ## 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