Opcode Tables for PO=59/63 XO=1---011--

Power ISA v3.1B opcodes extracted from:

  • Power ISA v3.1B Appendix D Table 23 sheet 2 of 4 page 1391
  • Power ISA v3.1B Appendix D Table 25 sheet 2 of 4 page 1399

Parenthesized entries are not part of fptrans.

  • Entries whose mnemonic ends in s are only in PO=59.
  • Entries whose mnemonic does not end in s are only in PO=63.
  • Entries whose mnemonic ends in (s) are in both PO=59 and PO=63.
XO LSB half →
XO MSB half ↓
01100 01101 01110 01111
10000 10000 01100
fcbrt(s) (draft)
10000 01101
fsinpi(s) (draft)
10000 01110
fatan2pi(s) (draft)
10000 01111
fasinpi(s) (draft)
10001 10001 01100
fcospi(s) (draft)
10001 01101
ftanpi(s) (draft)
10001 01110
facospi(s) (draft)
10001 01111
fatanpi(s) (draft)
10010 10010 01100
frsqrt(s) (draft)
10010 01101
fsin(s) (draft)
10010 01110
fatan2(s) (draft)
10010 01111
fasin(s) (draft)
10011 10011 01100
fcos(s) (draft)
10011 01101
ftan(s) (draft)
10011 01110
facos(s) (draft)
10011 01111
fatan(s) (draft)
10100 10100 01100
frecip(s) (draft)
10100 01101
fsinh(s) (draft)
10100 01110
fhypot(s) (draft)
10100 01111
fasinh(s) (draft)
10101 10101 01100
fcosh(s) (draft)
10101 01101
ftanh(s) (draft)
10101 01110
facosh(s) (draft)
10101 01111
fatanh(s) (draft)
10110 10110 01100
fminnum08(s) (draft)
10110 01101
fmin19(s) (draft)
10110 01110
fminnum19(s) (draft)
10110 01111
fminc(s) (draft)
10111 10111 01100
fmaxnum08(s) (draft)
10111 01101
fmax19(s) (draft)
10111 01110
fmaxnum19(s) (draft)
10111 01111
fmaxc(s) (draft)
XO LSB half →
XO MSB half ↓
01100 01101 01110 01111
11000 11000 01100
fexp2m1(s) (draft)
11000 01101
flog2p1(s) (draft)
11000 01110
fminmagnum08(s) (draft)
11000 01111
fmaxmagnum08(s) (draft)
11001 11001 01100
fexpm1(s) (draft)
11001 01101
flogp1(s) (draft)
11001 01110
(fctid)
11001 01111
(fctidz)
11010 11010 01100
fexp10m1(s) (draft)
11010 01101
flog10p1(s) (draft)
11010 01110
(fcfid(s))
11010 01111
fmod(s) (draft)
11011 11011 01100
fpown(s) (draft)
11011 01101
frootn(s) (draft)
11011 01110
fminmag19(s) (draft)
11011 01111
fmaxmag19(s) (draft)
11100 11100 01100
fexp2(s) (draft)
11100 01101
flog2(s) (draft)
11100 01110
fminmagnum19(s) (draft)
11100 01111
fmaxmagnum19(s) (draft)
11101 11101 01100
fexp(s) (draft)
11101 01101
flog(s) (draft)
11101 01110
(fctidu)
11101 01111
(fctiduz)
11110 11110 01100
fexp10(s) (draft)
11110 01101
flog10(s) (draft)
11110 01110
(fcfidu(s))
11110 01111
fremainder(s) (draft)
11111 11111 01100
fpowr(s) (draft)
11111 01101
fpow(s) (draft)
11111 01110
fminmagc(s) (draft)
11111 01111
fmaxmagc(s) (draft)

DRAFT List of 2-arg opcodes

These are X-Form, recommended Major Opcode 63 for full-width and 59 for half-width (ending in s).

0.5 6.10 11.15 16.20 21..30 31 name Form
NN FRT FRA FRB 1xxxx011xx Rc transcendental X-Form
NN FRT FRA RB 1xxxx011xx Rc transcendental X-Form

Recommended 10-bit XO assignments:

opcode Description Major 59 and 63 bits 16..20
fatan2(s) atan2 arc tangent 10010 01110 FRB
fatan2pi(s) atan2 arc tangent / π 10000 01110 FRB
fpow(s) xy 11111 01101 FRB
fpown(s) xn (n ∈ ℤ) 11011 01100 RB
fpowr(s) xy (x >= 0) 11111 01100 FRB
frootn(s) n√x (n ∈ ℤ) 11011 01101 RB
fhypot(s) √(x2 + y2) 10100 01110 FRB
fminnum08(s) IEEE 754-2008 minNum 10110 01100 FRB
fmaxnum08(s) IEEE 754-2008 maxNum 10111 01100 FRB
fmin19(s) IEEE 754-2019 minimum 10110 01101 FRB
fmax19(s) IEEE 754-2019 maximum 10111 01101 FRB
fminnum19(s) IEEE 754-2019 minimumNumber 10110 01110 FRB
fmaxnum19(s) IEEE 754-2019 maximumNumber 10111 01110 FRB
fminc(s) C ternary-op minimum 10110 01111 FRB
fmaxc(s) C ternary-op maximum 10111 01111 FRB
fminmagnum08(s) IEEE 754-2008 minNumMag 11000 01110 FRB
fmaxmagnum08(s) IEEE 754-2008 maxNumMag 11000 01111 FRB
fminmag19(s) IEEE 754-2019 minimumMagnitude 11011 01110 FRB
fmaxmag19(s) IEEE 754-2019 maximumMagnitude 11011 01111 FRB
fminmagnum19(s) IEEE 754-2019 minimumMagnitudeNumber 11100 01110 FRB
fmaxmagnum19(s) IEEE 754-2019 maximumMagnitudeNumber 11100 01111 FRB
fminmagc(s) C ternary-op minimum magnitude 11111 01110 FRB
fmaxmagc(s) C ternary-op maximum magnitude 11111 01111 FRB
fmod(s) modulus 11010 01111 FRB
fremainder(s) IEEE 754 remainder 11110 01111 FRB

DRAFT List of 1-arg transcendental opcodes

These are X-Form, and are mostly identical in Special Registers Altered to fsqrt (the exact fp exceptions they can produce differ). Recommended Major Opcode 63 for full-width and 59 for half-width (ending in s).

Special Registers Altered (FIXME: come up with correct list):

FPRF FR FI FX OX UX XX
VXSNAN VXIMZ VXZDZ
CR1                    (if Rc=1)
0.5 6.10 11.15 16.20 21..30 31 name Form
NN FRT /// FRB 1xxxx011xx Rc transcendental X-Form

Recommended 10-bit XO assignments:

opcode Description Major 59 and 63
frsqrt(s) 1 / √x 10010 01100
fcbrt(s) ∛x 10000 01100
frecip(s) 1 / x 10100 01100
fexp2m1(s) 2x - 1 11000 01100
flog2p1(s) log2 (x + 1) 11000 01101
fexp2(s) 2x 11100 01100
flog2(s) log2 x 11100 01101
fexpm1(s) ex - 1 11001 01100
flogp1(s) loge (x + 1) 11001 01101
fexp(s) ex 11101 01100
flog(s) loge x 11101 01101
fexp10m1(s) 10x - 1 11010 01100
flog10p1(s) log10 (x + 1) 11010 01101
fexp10(s) 10x 11110 01100
flog10(s) log10 x 11110 01101

DRAFT List of 1-arg trigonometric opcodes

These are X-Form, and are mostly identical in Special Registers Altered to fsqrt (the exact fp exceptions they can produce differ). Recommended Major Opcode 63 for full-width and 59 for half-width (ending in s)

Special Registers Altered:

FPRF FR FI FX OX UX XX
VXSNAN VXIMZ VXZDZ
CR1                    (if Rc=1)
0.5 6.10 11.15 16.20 21..30 31 name Form
NN FRT /// FRB 1xxxx011xx Rc trigonometric X-Form

Recommended 10-bit XO assignments:

opcode Description Major 59 and 63
fsin(s) sin (radians) 10010 01101
fcos(s) cos (radians) 10011 01100
ftan(s) tan (radians) 10011 01101
fasin(s) arcsin (radians) 10010 01111
facos(s) arccos (radians) 10011 01110
fatan(s) arctan (radians) 10011 01111
fsinpi(s) sin(π * x) 10000 01101
fcospi(s) cos(π * x) 10001 01100
ftanpi(s) tan(π * x) 10001 01101
fasinpi(s) arcsin(x) / π 10000 01111
facospi(s) arccos(x) / π 10001 01110
fatanpi(s) arctan(x) / π 10001 01111
fsinh(s) hyperbolic sin 10100 01101
fcosh(s) hyperbolic cos 10101 01100
ftanh(s) hyperbolic tan 10101 01101
fasinh(s) inverse hyperbolic sin 10100 01111
facosh(s) inverse hyperbolic cos 10101 01110
fatanh(s) inverse hyperbolic tan 10101 01111