Interestingly the only functions missing when compared to OpenCL are
compound, exp2m1, exp10m1, log2p1, log10p1, pown (integer power) and powr.
-|opcode |OpenCL FP32|OpenCL FP16|OpenCL native|IEEE754 |Power ISA |
-|------- |-----------|-----------|-------------|------- |--------- |
-|fsin |sin |half\_sin |native\_sin |sin |NONE |
-|fcos |cos |half\_cos |native\_cos |cos |NONE |
-|ftan |tan |half\_tan |native\_tan |tan |NONE |
-|NONE (1)|sincos |NONE |NONE |NONE |NONE |
-|fasin |asin |NONE |NONE |asin |NONE |
-|facos |acos |NONE |NONE |acos |NONE |
-|fatan |atan |NONE |NONE |atan |NONE |
-|fsinpi |sinpi |NONE |NONE |sinPi |NONE |
-|fcospi |cospi |NONE |NONE |cosPi |NONE |
-|ftanpi |tanpi |NONE |NONE |tanPi |NONE |
-|fasinpi |asinpi |NONE |NONE |asinPi |NONE |
-|facospi |acospi |NONE |NONE |acosPi |NONE |
-|fatanpi |atanpi |NONE |NONE |atanPi |NONE |
-|fsinh |sinh |NONE |NONE |sinh |NONE |
-|fcosh |cosh |NONE |NONE |cosh |NONE |
-|ftanh |tanh |NONE |NONE |tanh |NONE |
-|fasinh |asinh |NONE |NONE |asinh |NONE |
-|facosh |acosh |NONE |NONE |acosh |NONE |
-|fatanh |atanh |NONE |NONE |atanh |NONE |
-|fatan2 |atan2 |NONE |NONE |atan2 |NONE |
-|fatan2pi|atan2pi |NONE |NONE |atan2pi |NONE |
-|frsqrt |rsqrt |half\_rsqrt|native\_rsqrt|rSqrt |fsqrte, fsqrtes (4) |
-|fcbrt |cbrt |NONE |NONE |NONE (2)|NONE |
-|fexp2 |exp2 |half\_exp2 |native\_exp2 |exp2 |NONE |
-|flog2 |log2 |half\_log2 |native\_log2 |log2 |NONE |
-|fexpm1 |expm1 |NONE |NONE |expm1 |NONE |
-|flog1p |log1p |NONE |NONE |logp1 |NONE |
-|fexp |exp |half\_exp |native\_exp |exp |NONE |
-|flog |log |half\_log |native\_log |log |NONE |
-|fexp10 |exp10 |half\_exp10|native\_exp10|exp10 |NONE |
-|flog10 |log10 |half\_log10|native\_log10|log10 |NONE |
-|fpow |pow |NONE |NONE |pow |NONE |
-|fpown |pown |NONE |NONE |pown |NONE |
-|fpowr |powr |half\_powr |native\_powr |powr |NONE |
-|frootn |rootn |NONE |NONE |rootn |NONE |
-|fhypot |hypot |NONE |NONE |hypot |NONE |
-|frecip |NONE |half\_recip|native\_recip|NONE (3)|fre, fres (4) |
-|NONE |NONE |NONE |NONE |compound|NONE |
-|fexp2m1 |NONE |NONE |NONE |exp2m1 |NONE |
-|fexp10m1|NONE |NONE |NONE |exp10m1 |NONE |
-|flog2p1 |NONE |NONE |NONE |log2p1 |NONE |
-|flog10p1|NONE |NONE |NONE |log10p1 |NONE |
+|opcode |OpenCL FP32|OpenCL FP16|OpenCL native|IEEE754 |Power ISA |
+|------------|-----------|-----------|-------------|-------------- |------------------------|
+|fsin |sin |half\_sin |native\_sin |sin |NONE |
+|fcos |cos |half\_cos |native\_cos |cos |NONE |
+|ftan |tan |half\_tan |native\_tan |tan |NONE |
+|NONE (1) |sincos |NONE |NONE |NONE |NONE |
+|fasin |asin |NONE |NONE |asin |NONE |
+|facos |acos |NONE |NONE |acos |NONE |
+|fatan |atan |NONE |NONE |atan |NONE |
+|fsinpi |sinpi |NONE |NONE |sinPi |NONE |
+|fcospi |cospi |NONE |NONE |cosPi |NONE |
+|ftanpi |tanpi |NONE |NONE |tanPi |NONE |
+|fasinpi |asinpi |NONE |NONE |asinPi |NONE |
+|facospi |acospi |NONE |NONE |acosPi |NONE |
+|fatanpi |atanpi |NONE |NONE |atanPi |NONE |
+|fsinh |sinh |NONE |NONE |sinh |NONE |
+|fcosh |cosh |NONE |NONE |cosh |NONE |
+|ftanh |tanh |NONE |NONE |tanh |NONE |
+|fasinh |asinh |NONE |NONE |asinh |NONE |
+|facosh |acosh |NONE |NONE |acosh |NONE |
+|fatanh |atanh |NONE |NONE |atanh |NONE |
+|fatan2 |atan2 |NONE |NONE |atan2 |NONE |
+|fatan2pi |atan2pi |NONE |NONE |atan2pi |NONE |
+|frsqrt |rsqrt |half\_rsqrt|native\_rsqrt|rSqrt |fsqrte, fsqrtes (4) |
+|fcbrt |cbrt |NONE |NONE |NONE (2) |NONE |
+|fexp2 |exp2 |half\_exp2 |native\_exp2 |exp2 |NONE |
+|flog2 |log2 |half\_log2 |native\_log2 |log2 |NONE |
+|fexpm1 |expm1 |NONE |NONE |expm1 |NONE |
+|flog1p |log1p |NONE |NONE |logp1 |NONE |
+|fexp |exp |half\_exp |native\_exp |exp |NONE |
+|flog |log |half\_log |native\_log |log |NONE |
+|fexp10 |exp10 |half\_exp10|native\_exp10|exp10 |NONE |
+|flog10 |log10 |half\_log10|native\_log10|log10 |NONE |
+|fpow |pow |NONE |NONE |pow |NONE |
+|fpown |pown |NONE |NONE |pown |NONE |
+|fpowr |powr |half\_powr |native\_powr |powr |NONE |
+|frootn |rootn |NONE |NONE |rootn |NONE |
+|fhypot |hypot |NONE |NONE |hypot |NONE |
+|frecip |NONE |half\_recip|native\_recip|NONE (3) |fre, fres (4) |
+|NONE |NONE |NONE |NONE |compound |NONE |
+|fexp2m1 |NONE |NONE |NONE |exp2m1 |NONE |
+|fexp10m1 |NONE |NONE |NONE |exp10m1 |NONE |
+|flog2p1 |NONE |NONE |NONE |log2p1 |NONE |
+|flog10p1 |NONE |NONE |NONE |log10p1 |NONE |
Note (1) fsincos is macro-op fused (see below).
## List of 2-arg opcodes
-| opcode | Description | pseudocode | Extension |
-| ------ | ---------------- | ---------------- | ----------- |
-| fatan2 | atan2 arc tangent | FRT = atan2(FRB, FRA) | Zarctrignpi |
-| fatan2pi | atan2 arc tangent / pi | FRT = atan2(FRB, FRA) / pi | Zarctrigpi |
-| fpow | x power of y | FRT = pow(FRA, FRB) | ZftransAdv |
-| fpown | x power of n (n int) | FRT = pow(FRA, RB) | ZftransAdv |
-| fpowr | x power of y (x +ve) | FRT = exp(FRA log(FRB)) | ZftransAdv |
-| frootn | x power 1/n (n integer)| FRT = pow(FRA, 1/RB) | ZftransAdv |
-| fhypot | hypotenuse | FRT = sqrt(FRA^2 + FRB^2) | ZftransAdv |
+| opcode | Description | pseudocode | Extension |
+| ------ | ---------------- | ---------------- | ----------- |
+| fatan2 | atan2 arc tangent | FRT = atan2(FRB, FRA) | Zarctrignpi |
+| fatan2pi | atan2 arc tangent / pi | FRT = atan2(FRB, FRA) / pi | Zarctrigpi |
+| fpow | x power of y | FRT = pow(FRA, FRB) | ZftransAdv |
+| fpown | x power of n (n int) | FRT = pow(FRA, RB) | ZftransAdv |
+| fpowr | x power of y (x +ve) | FRT = exp(FRA log(FRB)) | ZftransAdv |
+| frootn | x power 1/n (n integer) | FRT = pow(FRA, 1/RB) | ZftransAdv |
+| fhypot | hypotenuse | FRT = sqrt(FRA^2 + FRB^2) | ZftransAdv |
## List of 1-arg transcendental opcodes