--- /dev/null
+#pragma once
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+struct oppc_value {
+ uint32_t flags;
+ uint32_t size;
+ uint64_t data[2];
+};
+
+enum oppc_attr_tag {
+ OPPC_ATTR_FPSCR_RN,
+ OPPC_ATTR_FPSCR_XX,
+ OPPC_ATTR_FPSCR_FPRF,
+ OPPC_ATTR_FPSCR_FR,
+ OPPC_ATTR_FPSCR_FI,
+ OPPC_ATTR_FPSCR_VE,
+ OPPC_ATTR_FPSCR_VXSNAN,
+ OPPC_ATTR_FPSCR_VXCVI,
+};
+
+/* Casts */
+bool
+oppc_cast_bool(struct oppc_value const *value);
+
+int64_t
+oppc_cast_int64(struct oppc_value const *value);
+
+uint64_t
+oppc_cast_uint64(struct oppc_value const *value);
+
+/* Assignments */
+struct oppc_value *
+oppc_transient(struct oppc_value *ret,
+ uint64_t value, uint8_t bits);
+
+struct oppc_value *
+oppc_assign(struct oppc_value *dst,
+ struct oppc_value const *src);
+
+/* Subscripts */
+struct oppc_value *
+oppc_subscript_assign(struct oppc_value *ret,
+ struct oppc_value const *value,
+ struct oppc_value const *index);
+
+struct oppc_value *
+oppc_range_subscript_assign(struct oppc_value *ret,
+ struct oppc_value const *value,
+ struct oppc_value const *start,
+ struct oppc_value const *end);
+
+struct oppc_value *
+oppc_subscript(struct oppc_value *ret,
+ struct oppc_value const *value,
+ struct oppc_value const *index);
+
+struct oppc_value *
+oppc_range_subscript(struct oppc_value *ret,
+ struct oppc_value const *value,
+ struct oppc_value const *start,
+ struct oppc_value const *end);
+
+/* Attributes */
+struct oppc_value *
+oppc_attr_assign(struct oppc_value *ref,
+ enum oppc_attr_tag tag,
+ struct oppc_value const *value);
+
+struct oppc_value *
+oppc_attr(struct oppc_value *ret,
+ struct oppc_value const *ref,
+ enum oppc_attr_tag tag);
+
+/* Arithmetical */
+struct oppc_value *
+oppc_plus(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+oppc_minus(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+oppc_add(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_sub(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_mul(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_div(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_mod(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+/* Comparisons */
+struct oppc_value *
+oppc_le(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_lt(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_ltu(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_eq(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_ne(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_ge(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_gt(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_gtu(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+/* Logical */
+struct oppc_value *
+oppc_not(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+oppc_and(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_or(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_xor(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+/* Helpers */
+struct oppc_value *
+oppc_concat(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+oppc_repeat(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+/* Calls */
+void
+OPPC_CALL_TRAP0(void);
+
+struct oppc_value *
+OPPC_CALL_TRAP(struct oppc_value *ret,
+ struct oppc_value const *addr,
+ struct oppc_value const *bit);
+
+struct oppc_value *
+OPPC_CALL_EXTS(struct oppc_value *ret,
+ struct oppc_value *value);
+
+struct oppc_value *
+OPPC_CALL_EXTS64(struct oppc_value *ret,
+ struct oppc_value *value);
+
+struct oppc_value *
+OPPC_CALL_EXTS128(struct oppc_value *ret,
+ struct oppc_value *value);
+
+struct oppc_value *
+OPPC_CALL_EXTSXL(struct oppc_value *ret,
+ struct oppc_value *value,
+ struct oppc_value *bits);
+
+struct oppc_value *
+OPPC_CALL_EXTZ(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_EXTZ64(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_DPD_TO_BCD(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_BCD_TO_DPD(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_MULS(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_DIVS(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_MODS(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_ROTL64(struct oppc_value *ret,
+ struct oppc_value const *value,
+ struct oppc_value const *count);
+
+struct oppc_value *
+OPPC_CALL_ROTL32(struct oppc_value *ret,
+ struct oppc_value const *value,
+ struct oppc_value const *count);
+
+struct oppc_value *
+OPPC_CALL_MASK(struct oppc_value *ret,
+ struct oppc_value const *value,
+ struct oppc_value const *mask);
+
+struct oppc_value *
+OPPC_CALL_MASK32(struct oppc_value *ret,
+ struct oppc_value const *value,
+ struct oppc_value const *mask);
+
+struct oppc_value *
+OPPC_CALL_SINGLE(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_DOUBLE(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_GPR(struct oppc_value *ret,
+ struct oppc_value const *id);
+
+struct oppc_value *
+OPPC_CALL_FPR(struct oppc_value *ret,
+ struct oppc_value const *id);
+
+struct oppc_value *
+OPPC_CALL_SPR(struct oppc_value *ret,
+ struct oppc_value const *id);
+
+struct oppc_value *
+OPPC_CALL_MEM(struct oppc_value *ret,
+ struct oppc_value const *addr,
+ struct oppc_value const *off);
+
+struct oppc_value *
+OPPC_CALL_INT2FP(struct oppc_value *ret,
+ struct oppc_value const *value,
+ char const *string);
+
+void
+OPPC_CALL_reset_xflags(void);
+
+void
+OPPC_CALL_SetFX(struct oppc_value *ret,
+ enum oppc_attr_tag tag);
+
+struct oppc_value *
+OPPC_CALL_real_addr(struct oppc_value *ret,
+ struct oppc_value const *id);
+
+struct oppc_value *
+OPPC_CALL_length(struct oppc_value *ret,
+ struct oppc_value *value);
+
+struct oppc_value *
+OPPC_CALL_random(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_IsInf(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_IsNaN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_IsNeg(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_IsSNaN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_IsZero(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_COMPARE_EQ(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp_COMPARE_GT(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp_COMPARE_LT(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_FPMULADD32(struct oppc_value *ret,
+ struct oppc_value const *FRA,
+ struct oppc_value const *FRC,
+ struct oppc_value const *FRB,
+ struct oppc_value const *mulsign,
+ struct oppc_value const *addsign);
+
+struct oppc_value *
+OPPC_CALL_FPADD32(struct oppc_value *ret,
+ struct oppc_value const *FRA,
+ struct oppc_value const *FRB);
+
+struct oppc_value *
+OPPC_CALL_FPSUB32(struct oppc_value *ret,
+ struct oppc_value const *FRA,
+ struct oppc_value const *FRB);
+
+struct oppc_value *
+OPPC_CALL_FPMUL32(struct oppc_value *ret,
+ struct oppc_value const *FRA,
+ struct oppc_value const *FRB);
+
+struct oppc_value *
+OPPC_CALL_FPDIV32(struct oppc_value *ret,
+ struct oppc_value const *FRA,
+ struct oppc_value const *FRB);
+
+struct oppc_value *
+OPPC_CALL_FPADD64(struct oppc_value *ret,
+ struct oppc_value const *FRA,
+ struct oppc_value const *FRB);
+
+struct oppc_value *
+OPPC_CALL_FPSUB64(struct oppc_value *ret,
+ struct oppc_value const *FRA,
+ struct oppc_value const *FRB);
+
+struct oppc_value *
+OPPC_CALL_FPMUL64(struct oppc_value *ret,
+ struct oppc_value const *FRA,
+ struct oppc_value const *FRB);
+
+struct oppc_value *
+OPPC_CALL_FPDIV64(struct oppc_value *ret,
+ struct oppc_value const *FRA,
+ struct oppc_value const *FRB);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ATAN2PI(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ATAN2PI(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ATAN2(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ATAN2(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_HYPOT(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_HYPOT(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MINNUM08(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MINNUM08(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MIN19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MIN19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MINNUM19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MINNUM19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MINC(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MINC(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MAXNUM08(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MAXNUM08(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MAX19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MAX19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MAXNUM19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MAXNUM19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MAXC(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MAXC(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MINMAGNUM08(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MINMAGNUM08(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MAXMAGNUM08(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MAXMAGNUM08(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MOD(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MOD(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MINMAG19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MINMAG19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MAXMAG19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MAXMAG19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MINMAGNUM19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MINMAGNUM19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MAXMAGNUM19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MAXMAGNUM19(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_REMAINDER(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_REMAINDER(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_POWR(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_POWR(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_POW(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_POW(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MINMAGC(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MINMAGC(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_MAXMAGC(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_MAXMAGC(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_POWN(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_POWN(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ROOTN(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ROOTN(struct oppc_value *ret,
+ struct oppc_value const *lhs,
+ struct oppc_value const *rhs);
+
+struct oppc_value *
+OPPC_CALL_bfp64_CBRT(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_CBRT(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_SINPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_SINPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ASINPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ASINPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_COSPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_COSPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_TANPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_TANPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ACOSPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ACOSPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ATANPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ATANPI(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_RSQRT(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_RSQRT(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_SIN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_SIN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ASIN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ASIN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_COS(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_COS(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_TAN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_TAN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ACOS(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ACOS(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ATAN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ATAN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_RECIP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_RECIP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_SINH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_SINH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ASINH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ASINH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_COSH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_COSH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_TANH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_TANH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ACOSH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ACOSH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_ATANH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_ATANH(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_EXP2M1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_EXP2M1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_LOG2P1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_LOG2P1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_EXPM1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_EXPM1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_LOGP1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_LOGP1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_EXP10M1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_EXP10M1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_LOG10P1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_LOG10P1(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_EXP2(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_EXP2(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_LOG2(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_LOG2(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_EXP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_EXP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_LOG(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_LOG(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_EXP10(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_EXP10(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_LOG10(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_LOG10(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_BFP64(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_BFP32(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_SI32(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_SI64(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_SI128(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_UI32(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_UI64(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_UI128(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_INTEGER_NEAR_EVEN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_INTEGER_TRUNC(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_INTEGER_CEIL(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_INTEGER_FLOOR(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_INTEGER_NEAR_AWAY(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ABSOLUTE(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_BFP32(struct oppc_value *ret,
+ struct oppc_value const *rmode,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_BFP64(struct oppc_value *ret,
+ struct oppc_value const *ro,
+ struct oppc_value const *rmode,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_BFP64(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_BFP32(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_SI32(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_SI64(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_SI128(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_UI32(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_UI64(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_CONVERT_FROM_UI128(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_INTEGER_NEAR_EVEN(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_INTEGER_TRUNC(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_INTEGER_CEIL(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_INTEGER_FLOOR(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ROUND_TO_INTEGER_NEAR_AWAY(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp_ABSOLUTE(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_si32_CONVERT_FROM_BFP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_si64_CONVERT_FROM_BFP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_si128_CONVERT_FROM_BFP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_ui32_CONVERT_FROM_BFP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_ui64_CONVERT_FROM_BFP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_ui128_CONVERT_FROM_BFP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp64_CONVERT_FROM_BFP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_bfp32_CONVERT_FROM_BFP(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_fprf_CLASS_BFP64(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_fprf_CLASS_BFP32(struct oppc_value *ret,
+ struct oppc_value const *value);
+
+struct oppc_value *
+OPPC_CALL_SVSTATE_NEXT(struct oppc_value *ret,
+ struct oppc_value const *SVi,
+ struct oppc_value const *vf);
+
+struct oppc_value *
+OPPC_CALL_see(struct oppc_value *ret,
+ struct oppc_value *value);
+
+struct oppc_value *
+OPPC_CALL_undefined(struct oppc_value *ret,
+ struct oppc_value *value);
+
+/* Variables */
+#define OPPC_XLEN UINT64_C(64)
+#define OPPC_GPR_RA NULL
+#define OPPC_GPR_RB NULL
+#define OPPC_GPR_RC NULL
+#define OPPC_GPR_RS NULL
+#define OPPC_GPR_RSp NULL
+#define OPPC_GPR_RT NULL
+#define OPPC_GPR_RTp NULL
+#define OPPC_FPR_FPR NULL
+#define OPPC_FPR_FRA NULL
+#define OPPC_FPR_FRAp NULL
+#define OPPC_FPR_FRB NULL
+#define OPPC_FPR_FRBp NULL
+#define OPPC_FPR_FRC NULL
+#define OPPC_FPR_FRS NULL
+#define OPPC_FPR_FRSp NULL
+#define OPPC_FPR_FRT NULL
+#define OPPC_FPR_FRTp NULL
+#define OPPC_OVERFLOW NULL
+#define OPPC_BF NULL
+#define OPPC_BFA NULL
+#define OPPC_BA NULL
+#define OPPC_BB NULL
+#define OPPC_BC NULL
+#define OPPC_BI NULL
+#define OPPC_BT NULL
+#define OPPC_OV NULL
+#define OPPC_OV32 NULL
+#define OPPC_CA NULL
+#define OPPC_CA32 NULL
+#define OPPC_SO NULL
+#define OPPC_RESERVE NULL
+#define OPPC_RESERVE_LENGTH NULL
+#define OPPC_RESERVE_ADDR NULL
+#define OPPC_REAL_PAGE_SIZE NULL
+#define OPPC_CR NULL
+#define OPPC_LR NULL
+#define OPPC_CTR NULL
+#define OPPC_TAR NULL
+#define OPPC_FPSCR NULL
+#define OPPC_MSR NULL
+#define OPPC_SVSTATE NULL
+#define OPPC_SVREMAP NULL
+#define OPPC_SRR0 NULL
+#define OPPC_SRR1 NULL
+#define OPPC_SVSHAPE0 NULL
+#define OPPC_SVSHAPE1 NULL
+#define OPPC_SVSHAPE2 NULL
+#define OPPC_SVSHAPE3 NULL