get ls016 preamble into shape after copying from ls015
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 29 Apr 2023 12:24:05 +0000 (13:24 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sat, 29 Apr 2023 12:24:07 +0000 (13:24 +0100)
openpower/sv/rfc/ls016.mdwn [new file with mode: 0644]

diff --git a/openpower/sv/rfc/ls016.mdwn b/openpower/sv/rfc/ls016.mdwn
new file mode 100644 (file)
index 0000000..83bf481
--- /dev/null
@@ -0,0 +1,129 @@
+# RFC ls015 DCT / FFT Twin Butterfly instructions
+
+**URLs**:
+
+* <https://libre-soc.org/openpower/sv/rfc/ls016/>
+* <https://git.openpower.foundation/isa/PowerISA/issues/TODO>
+* <https://bugs.libre-soc.org/show_bug.cgi?id=1076>
+
+**Severity**: Major
+
+**Status**: New
+
+**Date**: 25 Apr 2023
+
+**Target**: v3.2B
+
+**Source**: v3.1B
+
+**Books and Section affected**:
+
+```
+    Book I Fixed-Point Instructions
+    Book I Floating-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: maddsubrs, fdmadds, ffmadds
+```
+
+**Submitter**: Luke Leighton (Libre-SOC)
+
+**Requester**: Libre-SOC
+
+**Impact on processor**:
+
+```
+    Addition of new Twin-Butterfly instructions, 3-in 2-out
+```
+
+**Impact on software**:
+
+```
+    Requires support for new instructions in assembler, debuggers,
+    and related tools.  Greatly decreases instruction count in
+    Audio/Video, DSP, Scientific Computing extremely commonly used
+    algorithms (NTT, FFT, DFT, DCT)
+```
+
+**Keywords**:
+
+```
+    CR Fields, predication, GPR
+```
+
+**Motivation**
+
+The list of uses for DCT is enormous - well over a hundred.
+<https://en.wikipedia.org/wiki/Discrete_cosine_transform#General_applications>
+The number of uses for FFT is also equally known to be extremely high
+<https://en.wikipedia.org/wiki/Fast_Fourier_transform#Applications>
+ARM has already added `vqrdmulhq_s16/32` instructions as their inclusion
+in any ISA replaces **eight** non-Twin-Butterfly instructions, which
+are often loop-unrolled, resulting in L1 I-Cache stripmining.
+
+**Notes and Observations**:
+
+1. TODO
+
+**Changes**
+
+Add the following entries to:
+
+* the Appendices of Book I
+* Book I 3.3.9.1 Fixed-Point Arithmetic DCT/FFT Twin-Butterfly Instructions
+* Book I 4.6.6.3 Floating-Point DCT/FFT Twin-Butterfly Instructions
+* Book I 1.6.1 and 1.6.2
+
+----------
+
+\newpage{}
+
+[[!inline pages="openpower/sv/twin_butterfly" raw=yes ]]
+
+----------
+
+\newpage{}
+
+# Instruction Formats
+
+Add the following entries to Book I 1.6.1 Word Instruction Formats:
+
+## A-FORM
+
+```
+    |0     |6     |11      |16     |21      |26    |31 |
+    | PO   |  RT  |   RA   |   RB  |   SH   |   XO |/  |
+```
+
+Add the following new fields to Book I 1.6.2 Word Instruction Fields:
+
+```
+    SH (21:25)
+        Field used to specify a shift amount.
+        Formats: A
+```
+
+# 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 |
+|------|------|------|---------|----------|-------------|
+| A    | I    | #    | 3.2B    | maddsubrs | Integer DCT/FFT Twin-Butterfly |
+| X    | I    | #    | 3.2B    | fdmadds   | FP DCT Twin-Butterfly |
+| X    | I    | #    | 3.2B    | ffmadds   | FP FFT Twin-Butterfly |
+
+[[!tag opf_rfc]]
+
+----------
+