[DRAFT] Floating Add FFT/DCT [Single]

A-Form

  • ffadds FRT,FRA,FRB (Rc=0)
  • ffadds. FRT,FRA,FRB (Rc=1)

Pseudo-code:

FRT <- FPADD32(FRA, FRB)
FRS <- FPSUB32(FRB, FRA)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI
CR1          (if Rc=1)

[DRAFT] Floating Add FFT/DCT [Double]

A-Form

  • ffadd FRT,FRA,FRB (Rc=0)
  • ffadd. FRT,FRA,FRB (Rc=1)

Pseudo-code:

FRT <- FPADD64(FRA, FRB)
FRS <- FPSUB64(FRB, FRA)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI
CR1          (if Rc=1)

[DRAFT] Floating Subtract FFT/DCT [Single]

A-Form

  • ffsubs FRT,FRA,FRB (Rc=0)
  • ffsubs. FRT,FRA,FRB (Rc=1)

Pseudo-code:

FRT <- FPSUB32(FRB, FRA)
FRS <- FPADD32(FRA, FRB)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI
CR1          (if Rc=1)

[DRAFT] Floating Subtract FFT/DCT [Double]

A-Form

  • ffsub FRT,FRA,FRB (Rc=0)
  • ffsub. FRT,FRA,FRB (Rc=1)

Pseudo-code:

FRT <- FPSUB64(FRB, FRA)
FRS <- FPADD64(FRA, FRB)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI
CR1          (if Rc=1)

[DRAFT] Floating Multiply FFT/DCT [Single]

A-Form

  • ffmuls FRT,FRA,FRC (Rc=0)
  • ffmuls. FRT,FRA,FRC (Rc=1)

Pseudo-code:

FRT <- FPMUL32(FRA, FRC)
FRS <- FPMUL32(FRA, FRC, -1)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI
CR1          (if Rc=1)

[DRAFT] Floating Multiply FFT/DCT [Double]

A-Form

  • ffmul FRT,FRA,FRC (Rc=0)
  • ffmul. FRT,FRA,FRC (Rc=1)

Pseudo-code:

FRT <- FPMUL64(FRA, FRC)
FRS <- FPMUL64(FRA, FRC, -1)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI
CR1          (if Rc=1)

[DRAFT] Floating Divide FFT/DCT [Single]

A-Form

  • ffdivs FRT,FRA,FRB (Rc=0)
  • ffdivs. FRT,FRA,FRB (Rc=1)

Pseudo-code:

FRT <- FPDIV32(FRA, FRB)
FRS <- FPDIV32(FRA, FRB, -1)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI
CR1          (if Rc=1)

[DRAFT] Floating Divide FFT/DCT [Double]

A-Form

  • ffdiv FRT,FRA,FRB (Rc=0)
  • ffdiv. FRT,FRA,FRB (Rc=1)

Pseudo-code:

FRT <- FPDIV64(FRA, FRB)
FRS <- FPDIV64(FRA, FRB, -1)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI
CR1          (if Rc=1)

[DRAFT] Floating Twin Multiply-Add DCT [Single]

DCT-Form

  • fdmadds FRT,FRA,FRB (Rc=0)
  • fdmadds. FRT,FRA,FRB (Rc=1)

Pseudo-code:

FRS <- FPADD32(FRT, FRB)
sub <- FPSUB32(FRT, FRB)
FRT <- FPMUL32(FRA, sub)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI VXIMZ
CR1          (if Rc=1)

[DRAFT] Floating Multiply-Add FFT [Single]

A-Form

  • ffmadds FRT,FRA,FRB (Rc=0)
  • ffmadds. FRT,FRA,FRB (Rc=1)

Pseudo-code:

tmp <- FRT
FRT <- FPMULADD32(tmp, FRA, FRB, 1, 1)
FRS <- FPMULADD32(tmp, FRA, FRB, -1, 1)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI VXIMZ
CR1          (if Rc=1)

[DRAFT] Floating Multiply-Sub FFT [Single]

A-Form

  • ffmsubs FRT,FRA,FRB (Rc=0)
  • ffmsubs. FRT,FRA,FRB (Rc=1)

Pseudo-code:

tmp <- FRT
FRT <- FPMULADD32(tmp, FRA, FRB, 1, -1)
FRS <- FPMULADD32(tmp, FRA, FRB, -1, -1)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI VXIMZ
CR1          (if Rc=1)

[DRAFT] Floating Negative Multiply-Add FFT [Single]

A-Form

  • ffnmadds FRT,FRA,FRB (Rc=0)
  • ffnmadds. FRT,FRA,FRB (Rc=1)

Pseudo-code:

tmp <- FRT
FRT <- FPMULADD32(tmp, FRA, FRB, -1, -1)
FRS <- FPMULADD32(tmp, FRA, FRB, 1, -1)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI VXIMZ
CR1          (if Rc=1)

[DRAFT] Floating Negative Multiply-Sub FFT [Single]

A-Form

  • ffnmsubs FRT,FRA,FRB (Rc=0)
  • ffnmsubs. FRT,FRA,FRB (Rc=1)

Pseudo-code:

tmp <- FRT
FRT <- FPMULADD32(tmp, FRA, FRB, -1, 1)
FRS <- FPMULADD32(tmp, FRA, FRB, 1, 1)

Special Registers Altered:

FPRF FR FI
FX OX UX XX
VXSNAN VXISI VXIMZ
CR1          (if Rc=1)