finished allocating fptrans XO values
authorJacob Lifshay <programmerjake@gmail.com>
Tue, 6 Sep 2022 11:30:45 +0000 (04:30 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Tue, 6 Sep 2022 11:30:45 +0000 (04:30 -0700)
openpower/power_trans_ops.mdwn
openpower/power_trans_ops_copy_from_PO59_table.py

index d35ba9f844d8d516288fb2c781f52e41b2b68600..de0818bea2fe4cd27178c3dcc614dff29c36ba48 100644 (file)
@@ -14,23 +14,23 @@ Entries whose mnemonic ends in `(s)` are in both PO=59 and PO=63.
 |-----------------------------------------------|---------------------------------------------------|---------------------------------------------------|-----------------------------------------------------|----------------------------------------------------|
 | 10000                                         | <small>`10000 01100`</small><br>(ffadds) (draft)  | <small>`10000 01101`</small><br>fsinpi(s) (draft) | <small>`10000 01110`</small><br>fatan2pi(s) (draft) | <small>`10000 01111`</small><br>fasinpi(s) (draft) |
 | 10001                                         | <small>`10001 01100`</small><br>fcospi(s) (draft) | <small>`10001 01101`</small><br>ftanpi(s) (draft) | <small>`10001 01110`</small><br>facospi(s) (draft)  | <small>`10001 01111`</small><br>fatanpi(s) (draft) |
-| 10010                                         | <small>`10010 01100`</small><br>**TBD** (draft)   | <small>`10010 01101`</small><br>fsin(s) (draft)   | <small>`10010 01110`</small><br>fatan2(s) (draft)   | <small>`10010 01111`</small><br>fasin(s) (draft)   |
+| 10010                                         | <small>`10010 01100`</small><br>frsqrt(s) (draft) | <small>`10010 01101`</small><br>fsin(s) (draft)   | <small>`10010 01110`</small><br>fatan2(s) (draft)   | <small>`10010 01111`</small><br>fasin(s) (draft)   |
 | 10011                                         | <small>`10011 01100`</small><br>fcos(s) (draft)   | <small>`10011 01101`</small><br>ftan(s) (draft)   | <small>`10011 01110`</small><br>facos(s) (draft)    | <small>`10011 01111`</small><br>fatan(s) (draft)   |
-| 10100                                         | <small>`10100 01100`</small><br>**TBD** (draft)   | <small>`10100 01101`</small><br>fsinh(s) (draft)  | <small>`10100 01110`</small><br>fhypot(s) (draft)   | <small>`10100 01111`</small><br>fasinh(s) (draft)  |
+| 10100                                         | <small>`10100 01100`</small><br>frecip(s) (draft) | <small>`10100 01101`</small><br>fsinh(s) (draft)  | <small>`10100 01110`</small><br>fhypot(s) (draft)   | <small>`10100 01111`</small><br>fasinh(s) (draft)  |
 | 10101                                         | <small>`10101 01100`</small><br>fcosh(s) (draft)  | <small>`10101 01101`</small><br>ftanh(s) (draft)  | <small>`10101 01110`</small><br>facosh(s) (draft)   | <small>`10101 01111`</small><br>fatanh(s) (draft)  |
-| 10110                                         | <small>`10110 01100`</small><br>**TBD** (draft)   | <small>`10110 01101`</small><br>**TBD** (draft)   | <small>`10110 01110`</small><br>**TBD** (draft)     | <small>`10110 01111`</small><br>**TBD** (draft)    |
-| 10111                                         | <small>`10111 01100`</small><br>**TBD** (draft)   | <small>`10111 01101`</small><br>**TBD** (draft)   | <small>`10111 01110`</small><br>**TBD** (draft)     | <small>`10111 01111`</small><br>**TBD** (draft)    |
-
-| XO LSB half &#x2192;<br> XO MSB half &#x2193; | 01100                                             | 01101                                             | 01110                                               | 01111                                              |
-|-----------------------------------------------|---------------------------------------------------|---------------------------------------------------|-----------------------------------------------------|----------------------------------------------------|
-| 11000                                         | <small>`11000 01100`</small><br>**TBD** (draft)   | <small>`11000 01101`</small><br>**TBD** (draft)   | <small>`11000 01110`</small><br>**TBD** (draft)     | <small>`11000 01111`</small><br>**TBD** (draft)    |
-| 11001                                         | <small>`11001 01100`</small><br>**TBD** (draft)   | <small>`11001 01101`</small><br>**TBD** (draft)   | <small>`11001 01110`</small><br>(fctid)             | <small>`11001 01111`</small><br>(fctidz)           |
-| 11010                                         | <small>`11010 01100`</small><br>**TBD** (draft)   | <small>`11010 01101`</small><br>**TBD** (draft)   | <small>`11010 01110`</small><br>(fcfid(s))          | <small>`11010 01111`</small><br>**TBD** (draft)    |
-| 11011                                         | <small>`11011 01100`</small><br>**TBD** (draft)   | <small>`11011 01101`</small><br>**TBD** (draft)   | <small>`11011 01110`</small><br>**TBD** (draft)     | <small>`11011 01111`</small><br>**TBD** (draft)    |
-| 11100                                         | <small>`11100 01100`</small><br>**TBD** (draft)   | <small>`11100 01101`</small><br>**TBD** (draft)   | <small>`11100 01110`</small><br>**TBD** (draft)     | <small>`11100 01111`</small><br>**TBD** (draft)    |
-| 11101                                         | <small>`11101 01100`</small><br>**TBD** (draft)   | <small>`11101 01101`</small><br>**TBD** (draft)   | <small>`11101 01110`</small><br>(fctidu)            | <small>`11101 01111`</small><br>(fctiduz)          |
-| 11110                                         | <small>`11110 01100`</small><br>**TBD** (draft)   | <small>`11110 01101`</small><br>**TBD** (draft)   | <small>`11110 01110`</small><br>(fcfidu(s))         | <small>`11110 01111`</small><br>**TBD** (draft)    |
-| 11111                                         | <small>`11111 01100`</small><br>**TBD** (draft)   | <small>`11111 01101`</small><br>**TBD** (draft)   | <small>`11111 01110`</small><br>**TBD** (draft)     | <small>`11111 01111`</small><br>**TBD** (draft)    |
+| 10110                                         | <small>`10110 01100`</small><br>fcbrt(s) (draft)  |                                                   |                                                     |                                                    |
+| 10111                                         |                                                   |                                                   |                                                     |                                                    |
+
+| XO LSB half &#x2192;<br> XO MSB half &#x2193; | 01100                                              | 01101                                              | 01110                                               | 01111                                              |
+|-----------------------------------------------|----------------------------------------------------|----------------------------------------------------|-----------------------------------------------------|----------------------------------------------------|
+| 11000                                         | <small>`11000 01100`</small><br>fexp2m1(s) (draft) | <small>`11000 01101`</small><br>flog2p1(s) (draft) |                                                     |                                                    |
+| 11001                                         | <small>`11001 01100`</small><br>fexpm1(s) (draft)  | <small>`11001 01101`</small><br>flogp1(s) (draft)  | <small>`11001 01110`</small><br>(fctid)             | <small>`11001 01111`</small><br>(fctidz)           |
+| 11010                                         | <small>`11010 01100`</small><br>fexp10m1(s) (draft)| <small>`11010 01101`</small><br>flog10p1(s) (draft)| <small>`11010 01110`</small><br>(fcfid(s))          |                                                    |
+| 11011                                         | <small>`11011 01100`</small><br>fpown(s) (draft)   | <small>`11011 01101`</small><br>frootn(s) (draft)  |                                                     |                                                    |
+| 11100                                         | <small>`11100 01100`</small><br>fexp2(s) (draft)   | <small>`11100 01101`</small><br>flog2(s) (draft)   |                                                     |                                                    |
+| 11101                                         | <small>`11101 01100`</small><br>fexp(s) (draft)    | <small>`11101 01101`</small><br>flog(s) (draft)    | <small>`11101 01110`</small><br>(fctidu)            | <small>`11101 01111`</small><br>(fctiduz)          |
+| 11110                                         | <small>`11110 01100`</small><br>fexp10(s) (draft)  | <small>`11110 01101`</small><br>flog10(s) (draft)  | <small>`11110 01110`</small><br>(fcfidu(s))         |                                                    |
+| 11111                                         | <small>`11111 01100`</small><br>fpowr(s) (draft)   | <small>`11111 01101`</small><br>fpow(s) (draft)    |                                                     |                                                    |
 
 # DRAFT List of 2-arg opcodes
 
@@ -41,7 +41,8 @@ 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 | 10xxx011xx  |Rc| transcendental | X-Form  |
+| NN |FRT | FRA | FRB | 1xxxx011xx  |Rc| transcendental | X-Form  |
+| NN |FRT | FRA | RB  | 1xxxx011xx  |Rc| transcendental | X-Form  |
 
 As shown in Power ISA 3.1 Book III Appendix D Table 28 p1190
 and Table 23 p1368,
@@ -51,15 +52,15 @@ Major Opcode 59 has 11 5-bit XO instructions,
 with some overlap leading to a partially orthogonal
 set across full and half width.
 
-| opcode     | Description                             | Major 59 and 63 |
-|------------|-----------------------------------------|-----------------|
-| fatan2(s)  | atan2 arc tangent                       | 10010 01110     |
-| fatan2pi(s)| atan2 arc tangent / &pi;                | 10000 01110     |
-| fpow(s)    | x<sup>y</sup>                           |      |
-| fpown(s)   | x<sup>n</sup> (n &in; &#x2124;)         |      |
-| fpowr(s)   | x<sup>y</sup> (x >= 0)                  |      |
-| frootn(s)  | <sup>n</sup>&#x221A;x (n &in; &#x2124;) |      |
-| fhypot(s)  | &#x221A;(x<sup>2</sup> + y<sup>2</sup>) | 10100 01110     |
+| opcode     | Description                             | Major 59 and 63 | bits 16..20 |
+|------------|-----------------------------------------|-----------------|-------------|
+| fatan2(s)  | atan2 arc tangent                       | 10010 01110     | FRB         |
+| fatan2pi(s)| atan2 arc tangent / &pi;                | 10000 01110     | FRB         |
+| fpow(s)    | x<sup>y</sup>                           | 11111 01101     | FRB         |
+| fpown(s)   | x<sup>n</sup> (n &in; &#x2124;)         | 11011 01100     | RB          |
+| fpowr(s)   | x<sup>y</sup> (x >= 0)                  | 11111 01100     | FRB         |
+| frootn(s)  | <sup>n</sup>&#x221A;x (n &in; &#x2124;) | 11011 01101     | RB          |
+| fhypot(s)  | &#x221A;(x<sup>2</sup> + y<sup>2</sup>) | 10100 01110     | FRB         |
 
 # DRAFT List of 1-arg transcendental opcodes
 
@@ -76,27 +77,27 @@ Special Registers Altered:
 
 | 0.5|6.10|11.15|16.20| 21..30      |31| name      |  Form   |
 | -- | -- | --- | --- | ----------  |--| ----      | ------- |
-| NN |FRT | /// | FRB  | 10xxx011xx |Rc| transcendental | X-Form  |
+| NN |FRT | /// | FRB  | 1xxxx011xx |Rc| transcendental | X-Form  |
 
 Recommended 10-bit XO with the low 5 LSBs 01100:
 
 | opcode     | Description              | Major 59 and 63 |
 |------------|--------------------------|-----------------|
-| frsqrt(s)  | 1 / &#x221A;x            |      |
-| fcbrt(s)   | &#x221B;x                |      |
-| frecip(s)  | 1 / x                    |      |
-| fexp2m1(s) | 2<sup>x</sup> - 1        |      |
-| flog2p1(s) | log<sub>2</sub> (x + 1)  |      |
-| fexp2(s)   | 2<sup>x</sup>            |      |
-| flog2(s)   | log<sub>2</sub> x        |      |
-| fexpm1(s)  | e<sup>x</sup> - 1        |      |
-| flogp1(s)  | log<sub>e</sub> (x + 1)  |      |
-| fexp(s)    | e<sup>x</sup>            |      |
-| flog(s)    | log<sub>e</sub> x        |      |
-| fexp10m1(s)| 10<sup>x</sup> - 1       |      |
-| flog10p1(s)| log<sub>10</sub> (x + 1) |      |
-| fexp10(s)  | 10<sup>x</sup>           |      |
-| flog10(s)  | log<sub>10</sub> x       |      |
+| frsqrt(s)  | 1 / &#x221A;x            | 10010 01100     |
+| fcbrt(s)   | &#x221B;x                | 10110 01100     |
+| frecip(s)  | 1 / x                    | 10100 01100     |
+| fexp2m1(s) | 2<sup>x</sup> - 1        | 11000 01100     |
+| flog2p1(s) | log<sub>2</sub> (x + 1)  | 11000 01101     |
+| fexp2(s)   | 2<sup>x</sup>            | 11100 01100     |
+| flog2(s)   | log<sub>2</sub> x        | 11100 01101     |
+| fexpm1(s)  | e<sup>x</sup> - 1        | 11001 01100     |
+| flogp1(s)  | log<sub>e</sub> (x + 1)  | 11001 01101     |
+| fexp(s)    | e<sup>x</sup>            | 11101 01100     |
+| flog(s)    | log<sub>e</sub> x        | 11101 01101     |
+| fexp10m1(s)| 10<sup>x</sup> - 1       | 11010 01100     |
+| flog10p1(s)| log<sub>10</sub> (x + 1) | 11010 01101     |
+| fexp10(s)  | 10<sup>x</sup>           | 11110 01100     |
+| flog10(s)  | log<sub>10</sub> x       | 11110 01101     |
 
 # DRAFT List of 1-arg trigonometric opcodes
 
@@ -113,7 +114,7 @@ Special Registers Altered:
 
 | 0.5|6.10|11.15|16.20| 21..30      |31| name      |  Form   |
 | -- | -- | --- | --- | ----------  |--| ----      | ------- |
-| NN |FRT | /// | FRB  | 10xxx011xx |Rc| trigonometric | X-Form  |
+| NN |FRT | /// | FRB  | 1xxxx011xx |Rc| trigonometric | X-Form  |
 
 Recommended 10-bit XO with the low 5 LSBs 01101 to 01111:
 
index af7503eb6fd08425df5f4d92d7bb2f72086e4a3a..f3a25c1a86b5ffdf43a61a2391039a54a59d0987 100644 (file)
@@ -92,6 +92,8 @@ def process(lr):
                                              f"binary string: {row}")
             for i, column in zip(columns_range, columns):
                 cell = line_parts[i]
+                if cell.strip() == "":
+                    continue
                 match = re.fullmatch(
                     r" *<small> *` *(?P<xo>[01][01 ]*[01]) *` *</small>"
                     r" *<br/?> *(?P<mnemonic>[a-zA-Z0-9_.][a-zA-Z0-9_.()]*)?"