dougallj / asil

25 stars 0 forks source link

BIC (vectors, predicated): not showing predicate #3

Closed fwessels closed 3 months ago

fwessels commented 3 months ago

The diagrams in https://dougallj.github.io/asil/doc/bic_z_p_zz_32.html do not show the predicates in the diagrams.

(BTW: great documentation, thanks for putting all the work in.)

dougallj commented 3 months ago

Thanks! I'm afraid this is intended – merging and zeroing predication is typically omitted from the diagrams. They are only included where the behaviour isn't straightforward merging or zeroing.

This was a somewhat arbitrary decision inspired by Daytime's x86/x64 SIMD Instruction List – Daytime has an AVX512 Memo explaining this shared functionality in more detail.

Showing predication adds both the predicate and the original destination register to the diagram as inputs, as can be seen in the first image on the AVX512 Memo page. While this might be preferable for simpler instructions like BIC, I felt it would overcomplicate more interesting diagrams like FCMLA (vectors), and distract from the unique behaviour of the operation. So in the case of BIC, it's really just omitted for consistency.

I would however like to add a page like the "AVX512 Memo" explaining the common merging and zeroing behaviours, and probably add a link to it on pages where predicates are omitted.

fwessels commented 3 months ago

Thanks for the explanation and clarification -- granted, the behaviour in case of merging/zeroing is pretty self-explanatory (and indeed, you would need to add the original destination vector for the merging case).

I would however like to add a page like the "AVX512 Memo" explaining the common merging and zeroing behaviours, and probably add a link to it on pages where predicates are omitted.

Yes, that would be nice.

Closing the issue.

(but again, great documentation, I really like it).