From: lkcl Date: Fri, 9 Jun 2023 12:38:23 +0000 (+0100) Subject: (no commit message) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e3052b8acbec87cee18b959dd6faa48bedfb29e9;p=libreriscv.git --- diff --git a/openpower/sv/po9_encoding/discussion.mdwn b/openpower/sv/po9_encoding/discussion.mdwn index d394c3842..5a739b338 100644 --- a/openpower/sv/po9_encoding/discussion.mdwn +++ b/openpower/sv/po9_encoding/discussion.mdwn @@ -127,6 +127,10 @@ unavailable (used by EXT900). |PO9| nnnn | 1 1 | Defined Word-instruction | SVP64:EXT000-063 | ``` +The following identification-criteria may be easily verified by taking +a copy of the table above and striking out each line that fails each +test. Only EXT000-063 are not by a "process of elimination" + Length detection: ``` @@ -197,3 +201,53 @@ EXT200-231: # all remaining combinations are SVP64:EXTnnn return True ``` + +**SVP64Single**: + +``` + # easy-elimination, first + if not PO9 return False + # eliminate 32-bit EXT900 + if Word[30:31] = 0b00 return False + # eliminate SVP64:EXT000-063 + if Word[30:31] = 0b11 return False + # eliminate anything "Identity" + if Word[6:29 ] = 0x000000 return False + # eliminate SVP64:EXT200-231 + if Word[30:32] = 0b101 return False + # eliminate anything not SSingle:EXT900 + if Word[30:31] = 0b10 and + Word[33:37] = 0b10001 and + Word[62:63] != 0b00 return False + # everything left is SVP64Single + return True +``` + +**RESERVED**: (no need to pass for further detailed decode) + +``` + # easy-elimination, first + if not PO9 return False + # eliminate EXT900 + if Word[30:31] = 0b00 return False + # eliminate SVP64:EXT000-031 + if Word[30:31] = 0b11 return False + # eliminate SSingle:EXT000-063 + if Word[6:29 ] != 0x000000 and + Word[30:31] = 0b01 return False + # eliminate EXT200-231 + if Word[30:31] = 0b10 and + Word[33:37] = 0b10001 return False + # eliminate SSingle:EXT900 + if Word[30:31] = 0b10 and + Word[6:29 ] != 0x000000 and + Word[33:37] = 0b10001 and + Word[62:63] = 0b00 return False + # eliminate SVP64:EXT900 + if Word[30:31] = 0b10 and + Word[33:37] = 0b10001 and + Word[62:63] = 0b01 return False + # all else needs further detailed decode + return True +``` +