add ls015 for cr weirds
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 25 Apr 2023 09:09:08 +0000 (10:09 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 25 Apr 2023 09:09:08 +0000 (10:09 +0100)
openpower/sv/rfc/ls015.mdwn [new file with mode: 0644]

diff --git a/openpower/sv/rfc/ls015.mdwn b/openpower/sv/rfc/ls015.mdwn
new file mode 100644 (file)
index 0000000..9cb0236
--- /dev/null
@@ -0,0 +1,135 @@
+# RFC ls014 CR Weird operations
+
+**URLs**:
+
+* <https://libre-soc.org/openpower/sv/rfc/ls015/>
+* <https://git.openpower.foundation/isa/PowerISA/issues/TODO>
+* <https://bugs.libre-soc.org/show_bug.cgi?id=TODO>
+
+**Severity**: Major
+
+**Status**: New
+
+**Date**: 25 Apr 2023
+
+**Target**: v3.2B
+
+**Source**: v3.1B
+
+**Books and Section affected**:
+
+```
+    Book I Fixed-Point Instructions
+    Appendix E Power ISA sorted by opcode
+    Appendix F Power ISA sorted by version
+    Appendix G Power ISA sorted by Compliancy Subset
+    Appendix H Power ISA sorted by mnemonic
+```
+
+**Summary**
+
+```
+    Instructions added: crweird, crweirder, mfcrfm, mfcrweird, mtcrweird
+```
+
+**Submitter**: Luke Leighton (Libre-SOC)
+
+**Requester**: Libre-SOC
+
+**Impact on processor**:
+
+```
+    Addition of new GPR-CR-based instructions
+```
+
+**Impact on software**:
+
+```
+    Requires support for new instructions in assembler, debuggers,
+    and related tools.
+```
+
+**Keywords**:
+
+```
+    CR Fields, predication, GPR
+```
+
+**Motivation**
+
+Existing Condition Register operations are somewhat anaemic if to be utilised more extensively
+as Predicate Masks in a True-Scalable Vector ISA. Merging of multiple CR Fields requires several
+operations that may be achieved with a single "weird" operation, and transfer between CR Fields
+and GPR is easier and more powerful. This mitigates the need to add dozens of duplicate Logical
+Operations.
+
+**Notes and Observations**:
+
+1. TODO
+
+**Changes**
+
+Add the following entries to:
+
+* the Appendices of Book I
+* Book I 3.3.13 Condition Register  Instructions
+* Book I 1.6.1 and 1.6.2
+
+----------
+
+\newpage{}
+
+[[!inline pages="openpower/sv/cr_int_predication" raw=yes ]]
+
+----------
+
+\newpage{}
+
+# Instruction Formats
+
+Add the following entries to Book I 1.6.1 Word Instruction Formats:
+
+## MM-FORM
+
+```
+    |0    |6    |11   |16   |21   |24 |25  |31  |
+    | PO  | FRT | FRA | FRB | FMM     | XO | Rc |
+    | PO  | RT  | RA  | RB  | MMM | / | XO | Rc |
+```
+
+Add the following new fields to Book I 1.6.2 Word Instruction Fields:
+
+```
+    FMM (21:24)
+        Field used to specify minimum/maximum mode for fminmax[s].
+
+        Formats: MM
+
+    MMM (21:23)
+        Field used to specify minimum/maximum mode for integer minmax.
+
+        Formats: MM
+```
+
+Add `MM` to the `Formats:` list for all of `FRT`, `FRA`, `FRB`, `XO (25:30)`,
+`Rc`, `RT`, `RA` and `RB`.
+
+----------
+
+\newpage{}
+
+# Appendices
+
+    Appendix E Power ISA sorted by opcode
+    Appendix F Power ISA sorted by version
+    Appendix G Power ISA sorted by Compliancy Subset
+    Appendix H Power ISA sorted by mnemonic
+
+| Form | Book | Page | Version | Mnemonic | Description |
+|------|------|------|---------|----------|-------------|
+| MM   | I    | #    | 3.2B    | fminmax  | Floating Minimum/Maximum |
+| MM   | I    | #    | 3.2B    | fminmaxs | Floating Minimum/Maximum Single |
+| MM   | I    | #    | 3.2B    | minmax   | Minimum/Maximum |
+
+[[!tag opf_rfc]]
+