From: lkcl Date: Fri, 9 Jun 2023 12:01:55 +0000 (+0100) Subject: (no commit message) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0c21d3ebd418b275f18c2ad7b36160987e44f55b;p=libreriscv.git --- diff --git a/openpower/sv/po9_encoding/discussion.mdwn b/openpower/sv/po9_encoding/discussion.mdwn index da92f8043..67df273a7 100644 --- a/openpower/sv/po9_encoding/discussion.mdwn +++ b/openpower/sv/po9_encoding/discussion.mdwn @@ -149,24 +149,51 @@ EXT200-231: EXT900: ``` + # easy first step if not PO9 return False - if Word[30:31] != 0b00 return False - if Word[62] = 0b1 return False - if Word[62:63] = 0b00 and + # eliminate EXT0xx, 32-Unvec-in-64b + if Word[31] = 0b1 return False + # eliminate EXT2xx + if Word[30:31] = 0b10 and + Word[33:37] != 0b10001 return False + # eliminate currently-RESERVED areas + if Word[30:31] = 0b10 and + Word[62] = 0b1 return False + # eliminate final RESERVED area + if Word[30:31] = 0b10 and + Word[62:63] = 0b00 and Word[6:29 ] = 0x000000 return False + # last-remaining is EXT900 return True ``` -EXT000-063: +**EXT000-063**: (includes Prefixed) ``` if PO1 return False # or other reserved - if not PO9 return False + if not PO9 return True # prefixed needs more + # eliminate EXT900 if Word[30:31] = 0b00 return False + # eliminate Prefixed-EXT900, RESERVED and EXT200 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 return True ``` +**SVP64**: +``` + # easy-elimination, first + if Word[30] = 0b0 return False + if not PO9 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 + return True +```