From: lkcl Date: Mon, 19 Jun 2023 11:06:40 +0000 (+0100) Subject: (no commit message) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=300d72236b01e32ef1f4adf093435aee2392883c;p=libreriscv.git --- diff --git a/openpower/sv/po9_encoding/discussion.mdwn b/openpower/sv/po9_encoding/discussion.mdwn index 78f256513..aa2993fc1 100644 --- a/openpower/sv/po9_encoding/discussion.mdwn +++ b/openpower/sv/po9_encoding/discussion.mdwn @@ -279,7 +279,9 @@ test. Only EXT000-063 is not by a "process of elimination" (if ... return True) # alternative 32-64 encoding (4) **current** this idea gets even simpler. the 55-bit area is eliminated and may only be -reintroduced by sacrificing parts of EXT200-263. +reintroduced by sacrificing parts of EXT200-263. however doing so **WILL** damage +high-performance decode + ``` |0-5| 6-29 |30 31|32-37 | 38-663 | Description | @@ -308,22 +310,17 @@ test. Only EXT000-063 is not by a "process of elimination" (if ... return True) ``` if PO1 return 64 - elif not PO9 return 32 - elif Word[30:31] = 0b00 return 32 - else return 64 + elif PO9 return 64 + else return 32 ``` **EXT232-263:** ``` if not PO9 return False - # eliminate EXT900 - if Word[30:31] == 0b00 return False # eliminate EXT0xx if Word[31] == 0b1 return False - # eliminate EXT900 and reserved areas - if Word[33:37] != 0b10001 return False - # + # remaining is EXT2xx return True ``` @@ -334,34 +331,46 @@ test. Only EXT000-063 is not by a "process of elimination" (if ... return True) ``` if PO1 return False # or other reserved if not PO9 return True # prefixed needs more - # eliminate EXT900 - if Word[30:31] = 0b00 return False - # eliminate Prefixed-EXT900, RESERVED and EXT200 + # eliminate EXT2xx if Word[31] = 0b0 return False - # eliminate 32-bit Unvec in 64b area - if Word[30:31] = 0b01 and - Word[6:29 ] = 0x000000 return False + # remaining is EXT0xx return True ``` **SVP64**: +|0-5| 6-29 |30 31|32-37 | 38-663 | Description | +|---|--------|-----|--------|--------|------------------| +|PO9| xxxx | x x | 010001 | //// | RESERVED | +|PO9| xxxx | x x | 000001 | //// | RESERVED | +|PO9| !ZERO | 1 1 | !PO9 | xxxx | SSingle:EXT232-263 | +|PO9| 0000 | 1 1 | !PO9 | xxxx | Scalar EXT232-263 | +|PO9| SVRM | 1 0 | !PO9 | xxxx | SVP64:EXT232-263 | +|PO9| 0000 | 0 1 | Defined Word-instruction | 32-bit EXT300-363 | +|PO9| !ZERO | 0 1 | Defined Word-instruction | SSingle:EXT000-063 | +|PO9| SVRM | 0 0 | Defined Word-instruction | SVP64:EXT000-063 | ``` # easy-elimination, first if not PO9 return False - if Word[30] = 0b0 return False - # eliminate anything not SVP64:EXT900 - if Word[30:31] = 0b10 and - Word[33:37] = 0b10001 and - Word[62:63] != 0b01 return False - # eliminate anything not SVP64:EXT200-231 - if Word[31:32] = 0b00 return False - # all remaining combinations are SVP64:EXTnnn + # eliminate anything not SVP64: + if Word[31] = 0b1 return False + # all remaining are SVP64:EXT0xx/EXT2xx return True ``` **SVP64Single**: +|0-5| 6-29 |30 31|32-37 | 38-663 | Description | +|---|--------|-----|--------|--------|------------------| +|PO9| xxxx | x x | 010001 | //// | RESERVED | +|PO9| xxxx | x x | 000001 | //// | RESERVED | +|PO9| !ZERO | 1 1 | !PO9 | xxxx | SSingle:EXT232-263 | +|PO9| 0000 | 1 1 | !PO9 | xxxx | Scalar EXT232-263 | +|PO9| SVRM | 1 0 | !PO9 | xxxx | SVP64:EXT232-263 | +|PO9| 0000 | 0 1 | Defined Word-instruction | 32-bit EXT300-363 | +|PO9| !ZERO | 0 1 | Defined Word-instruction | SSingle:EXT000-063 | +|PO9| SVRM | 0 0 | Defined Word-instruction | SVP64:EXT000-063 | + ``` # easy-elimination, first if not PO9 return False