* Zfrsqrt - Reciprocal SQRT <http://bugs.libre-riscv.org/show_bug.cgi?id=110>
* Zftrans - see [[ztrans_proposal]]: Transcendentals
- (FSIN, FCOS, FATAN, FPOW, FEXP, FLOG, FRCP)
+ (FPOW, FEXP, FLOG, FCBRT)
<http://bugs.libre-riscv.org/show_bug.cgi?id=127>
+* Ztrig\* - see [[ztrans_proposal]]: Trigonometriics
+ (FSIN, FCOS, FTAN, arc-variants, hypotenuse-variants)
* Extension of formats to cover FP16 (RISC-V ISA Manual Table 11.3 "fmt field")
* HI-half FP MV - <https://github.com/riscv/riscv-isa-manual/pull/301>
<https://groups.google.com/a/groups.riscv.org/forum/m/#!topic/isa-dev/kXgfFqgBv-c>
01011 | xx | 10111 | rs1 | rm | rd | 1010011 | **FACOSPI.xx**|
01011 | xx | 11000 | rs1 | rm | rd | 1010011 | **FTAN.xx** |
01011 | xx | 11001 | rs1 | rm | rd | 1010011 | **FTANPI.xx** |
-01011 | xx | 11010 | rs1 | rm | rd | 1010011 | ? |
-01011 | xx | 11011 | rs1 | rm | rd | 1010011 | ? |
+01011 | xx | 11010 | rs1 | rm | rd | 1010011 | **FATAN.xx** |
+01011 | xx | 11011 | rs1 | rm | rd | 1010011 | **FATANPI.xx**|
01011 | xx | 11100 | rs1 | rm | rd | 1010011 | **FSINH.xx** |
01011 | xx | 11101 | rs1 | rm | rd | 1010011 | **FCOSH.xx** |
01011 | xx | 11110 | rs1 | rm | rd | 1010011 | **FTANH.xx** |
NONE (1) | sincos | NONE | NONE | NONE |
FASIN | asin | NONE | NONE | NONE |
FACOS | acos | NONE | NONE | NONE |
-NONE (3) | atan | NONE | NONE | NONE |
+FATAN | atan | NONE | NONE | NONE |
FSINPI | sinpi | NONE | NONE | NONE |
FCOSPI | cospi | NONE | NONE | NONE |
FTANPI | tanpi | NONE | NONE | NONE |
FASINPI | asinpi | NONE | NONE | NONE |
FACOSPI | acospi | NONE | NONE | NONE |
-NONE (2) | atanpi | NONE | NONE | NONE |
+FATANPI | atanpi | NONE | NONE | NONE |
FSINH | sinh | NONE | NONE | NONE |
FCOSH | cosh | NONE | NONE | NONE |
FTANH | tanh | NONE | NONE | NONE |
Note (1) FSINCOS is macro-op fused (see below).
-Note (2) FATANPI is a synthesised alias, below.
-
-Note (3) FATAN2 is a sythesised alias, below.
-
Note (4) FCRECIP is a sythesised alias, below.
# List of 2-arg opcodes
FTAN | tan (radians) | rd = tan(rs1) | Ztrignpi |
FASIN | arcsin (radians) | rd = asin(rs1) | Zarctrignpi |
FACOS | arccos (radians) | rd = acos(rs1) | Zarctrignpi |
+FATAN | arctan (radians) | rd = atan(rs1) | Zarctrignpi |
FSINPI | sin times pi | rd = sin(pi * rs1) | Ztrigpi |
FCOSPI | cos times pi | rd = cos(pi * rs1) | Ztrigpi |
FTANPI | tan times pi | rd = tan(pi * rs1) | Ztrigpi |
suitable code block.
* FRCP rd, rs1 - pseudo-code alias for rd = 1.0 / rs1
-* FATAN - pseudo-code alias for rd = atan2(rs1, 1.0) - FATAN2
-* FATANPI - pseudo alias for rd = atan2pi(rs1, 1.0) - FATAN2PI
* FSINCOS - fused macro-op between FSIN and FCOS (issued in that order).
* FSINCOSPI - fused macro-op between FSINPI and FCOSPI (issued in that order).
fmv.x.s ft0, t0
fatan2pi.s rd, rs1, ft0
-Hyperbolic function example (obviates need for Zfhyp except for high-performance or correctly-rounding):
+Hyperbolic function example (obviates need for Zfhyp except for
+high-performance or correctly-rounding):
ASINH( x ) = ln( x + SQRT(x**2+1))