Commit 7c04a148 authored by Alyssa Rosenzweig's avatar Alyssa Rosenzweig 💜
Browse files

bifrost: Document pos=0xe


Signed-off-by: Alyssa Rosenzweig's avatarAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
parent 7e4016a6
......@@ -263,9 +263,15 @@ The `pos` bits describe where in the instruction stream the constants are. In pa
| b | 6 | 3
| c | 8 | 3
| d | 7 | 4
| e | 6 | 4
|============================
There is a trivial limit for the number of constants per clause: since each instruction can only load one (64-bit) constant, there can be at most as many constants as instructions. It seems that the blob compiler currently refuses to add more than 5 constants to an 8-instruction clause, although it's happy to use at least 6 constants for a 7-quadword clause. Beyond that, the limit isn't known. However, there are only two remaining values for `pos` that haven't been observed (e and f), so there isn't much space left for more constants.
There is a trivial limit for the number of constants per clause: since each instruction can only load one (64-bit) constant, there can be at most as many constants as instructions. Also:
* 7-instruction clauses may load at most 6 constants.
* 8-instruction clauses may load at most 5 constants.
However, there is only one remaining value for `pos` that haven't been observed (f), so there isn't much space left for more constants.
There is a weird restriction on the contents of the constants: when interpreted as an unsigned integer, the most-significant 4 bits of the first constant (bits 64-67 of the quadword) must be less than or equal to the most-significant 4 bits of the second constant (bits 124-127 of the quadword). If this doesn't hold, the constants need to be swapped. Experiments have shown that violating this leads to some of the bits being replaced with random values.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment