* [[openpower/isa/svfixedarith]]
<!-- show -->
-# Twin Butterfly Integer DCT Instruction(s)
+# Rationale for Twin Butterfly Integer DCT Instruction(s)
The goal is to implement instructions that calculate the expression:
## Integer Butterfly Multiply Add/Sub FFT/DCT
+**Add the following to Book I Section 3.3.9.1**
+
A-Form
```
|0 |6 |11 |16 |21 |26 |31 |
- | PO | RT | RA | RB | SH | XO |Rc |
+ | PO | RT | RA | RB | SH | XO |/ |
```
## Floating Twin Multiply-Add DCT [Single]
+**Add the following to Book I Section 4.6.6.3 **
+
X-Form
```
|0 |6 |11 |16 |21 |31 |
- | PO | FRT | FRA | FRB | XO | Rc|
+ | PO | FRT | FRA | FRB | XO |/ |
```
* fdmadds FRT,FRA,FRB (Rc=0)
-* fdmadds. FRT,FRA,FRB (Rc=1)
Pseudo-code:
FPRF FR FI
FX OX UX XX
VXSNAN VXISI VXIMZ
- CR1 (if Rc=1)
```
## Floating Multiply-Add FFT [Single]
+**Add the following to Book I Section 4.6.6.3 **
+
X-Form
```
|0 |6 |11 |16 |21 |31 |
- | PO | FRT | FRA | FRB | XO | Rc|
+ | PO | FRT | FRA | FRB | XO |/ |
```
* ffmadds FRT,FRA,FRB (Rc=0)
-* ffmadds. FRT,FRA,FRB (Rc=1)
Pseudo-code:
FPRF FR FI
FX OX UX XX
VXSNAN VXISI VXIMZ
- CR1 (if Rc=1)
```