On Sat, 7 Mar 2020 02:32:24 +0000, Bill Huffman <huffman@...> said:
| On 3/6/20 6:22 PM, Krste Asanovic wrote:
[...]
|| #367 Tail Agnostic
|| The discussion reviewed the proposal that long temporal vector
|| registers with renaming could be handled using vector length trimming.
||
|| The proposal was then added that masking should also be given option
|| of being agnostic giving three options:
|| 1) tail-undisturbed + masking-undisturbed
|| 2) tail-agnostic + masking-undisturbed
|| 3) tail-agnostic + masking-agnostic
| We've discussed before, but allowing the *-agnostic options means code
| can be written and tested on an implementation that supports them and
| then fail on an implementation that maps them to #1. And vice-versa.
Yes, this is the disadvantage of having implementation-dependent
options. Along with making portable
functional/verification/compliance models more complex (though this
case is not as bad as some others).
This has to be balanced against the advantage of greater efficiency on
a wider range of microarchitectures.
Unordered vector reductions and vector stores already cause issues of
this kind, as does the memory model for multithreaded code, but
obviously want to reduce the number of cases where this shows up.
Krste