horizontal mapreduce comment
authorcand@51b69dee28eeccfe0f04790433b843689895c6e3 <cand@web>
Fri, 11 Dec 2020 08:03:27 +0000 (08:03 +0000)
committerIkiWiki <ikiwiki.info>
Fri, 11 Dec 2020 08:03:27 +0000 (08:03 +0000)
openpower/sv/av_opcodes.mdwn

index c538727a7d6862cd993201647019635f20f6f6bc..60e6ad0aee799faa1caa5aed374fed6b0972f1cc 100644 (file)
@@ -110,7 +110,9 @@ This should be separated to a horizontal multiply and a horizontal add. How a ho
     a.x + a.y + a.z ...
     a.x * a.y * a.z ...
 
-*This would realistically need to be done with a loop doing a mapreduce sequence.  I looked very early on at doing this type of operation and concluded it would be better done with a series of halvings each time, as separate instructions:  VL=16 then VL=8 then 4 then 2 and finally one scalar.  i.e. not an actual part of SV al all. An OoO multi-issue engine would be more than capable of desling with the Dependencies.*
+*This would realistically need to be done with a loop doing a mapreduce sequence.  I looked very early on at doing this type of operation and concluded it would be better done with a series of halvings each time, as separate instructions:  VL=16 then VL=8 then 4 then 2 and finally one scalar.  i.e. not an actual part of SV al all. An OoO multi-issue engine would be more than capable of dealing with the Dependencies.*
+
+That has the issue that's it's a massive PITA to code, plus it's slow. Plus there's the "access to non-4-offset regs stalls". Even if there's no ready operation, it should be made easier and faster than a manual mapreduce loop.
 
 ## vec_mul*