From dfc8c93ac27352b525a158c2384d3f881ebbbc89 Mon Sep 17 00:00:00 2001 From: Jacob Lifshay Date: Fri, 9 Sep 2022 19:17:31 -0700 Subject: [PATCH] reallocate fptrans to fit all new ops --- openpower/power_trans_ops.mdwn | 62 ++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 22 deletions(-) diff --git a/openpower/power_trans_ops.mdwn b/openpower/power_trans_ops.mdwn index d7108107d..7b5563c42 100644 --- a/openpower/power_trans_ops.mdwn +++ b/openpower/power_trans_ops.mdwn @@ -10,27 +10,27 @@ Entries whose mnemonic ends in `s` are only in PO=59. Entries whose mnemonic doesn't 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 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`
fcbrt(s) (draft) | | | | -| 10111 | | | | | - -| XO LSB half →
XO MSB half ↓ | 01100 | 01101 | 01110 | 01111 | -|-----------------------------------------------|----------------------------------------------------|----------------------------------------------------|-----------------------------------------------------|----------------------------------------------------| -| 11000 | `11000 01100`
fexp2m1(s) (draft) | `11000 01101`
flog2p1(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)) | | -| 11011 | `11011 01100`
fpown(s) (draft) | `11011 01101`
frootn(s) (draft) | | | -| 11100 | `11100 01100`
fexp2(s) (draft) | `11100 01101`
flog2(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)) | | -| 11111 | `11111 01100`
fpowr(s) (draft) | `11111 01101`
fpow(s) (draft) | | | +| 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 @@ -53,6 +53,24 @@ Recommended 10-bit XO assignments: | 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 @@ -75,7 +93,7 @@ Recommended 10-bit XO assignments: | opcode | Description | Major 59 and 63 | |------------|--------------------------|-----------------| | frsqrt(s) | 1 / √x | 10010 01100 | -| fcbrt(s) | ∛x | 10110 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 | -- 2.30.2