FPOW | pow | NONE | NONE | NONE |
FROOT | rootn | NONE | NONE | NONE |
FHYPOT | hypot | NONE | NONE | NONE |
-NONE (4) | NONE | half\_recip | native\_recip | NONE |
+FRECIP | NONE | half\_recip | native\_recip | NONE |
"""]]
Note (1) FSINCOS is macro-op fused (see below).
-Note (4) FCRECIP is a sythesised alias, below.
-
# List of 2-arg opcodes
[[!table data="""
opcode | Description | pseudo-code | Extension |
FRSQRT | Reciprocal Square-root | rd = sqrt(rs1) | Zfrsqrt |
FCBRT | Cube Root | rd = pow(rs1, 3) | Zftrans |
+FRECIP | Reciprocal | rd = 1.0 / rs1 | Zftrans |
FEXP2 | power-of-2 | rd = pow(2, rs1) | Zftrans |
FLOG2 | log2 | rd = log2(rs1) | Zftrans |
FEXPM1 | exponential minus 1 | rd = pow(e, rs1) - 1.0 | Zftrans |
(loop invariant) set to "1.0" at the beginning of a function or other
suitable code block.
-* FRCP rd, rs1 - pseudo-code alias for rd = 1.0 / rs1
* FSINCOS - fused macro-op between FSIN and FCOS (issued in that order).
* FSINCOSPI - fused macro-op between FSINPI and FCOSPI (issued in that order).
ASINH( x ) = ln( x + SQRT(x**2+1))
+# Reciprocal
+
+Used to be an alias. Some imolementors may wish to implement divide as y times recip(x)
+
# To evaluate: should LOG be replaced with LOG1P (and EXP with EXPM1)?
RISC principle says "exclude LOG because it's covered by LOGP1 plus an ADD".