summaryrefslogtreecommitdiff
path: root/scriptc
diff options
context:
space:
mode:
Diffstat (limited to 'scriptc')
-rw-r--r--scriptc/rs_geom.rsh26
-rw-r--r--scriptc/rs_graphics.rsh21
-rw-r--r--scriptc/rs_math.rsh806
3 files changed, 604 insertions, 249 deletions
diff --git a/scriptc/rs_geom.rsh b/scriptc/rs_geom.rsh
deleted file mode 100644
index 6e9e9fca..00000000
--- a/scriptc/rs_geom.rsh
+++ /dev/null
@@ -1,26 +0,0 @@
-
-extern float3 __attribute__((overloadable)) cross(float3, float3);
-extern float4 __attribute__((overloadable)) cross(float4, float4);
-
-//extern float __attribute__((overloadable)) dot(float, float);
-extern float __attribute__((overloadable)) dot(float2, float2);
-extern float __attribute__((overloadable)) dot(float3, float3);
-extern float __attribute__((overloadable)) dot(float4, float4);
-
-//extern float __attribute__((overloadable)) distance(float, float);
-extern float __attribute__((overloadable)) distance(float2, float2);
-extern float __attribute__((overloadable)) distance(float3, float3);
-extern float __attribute__((overloadable)) distance(float4, float4);
-
-//extern float __attribute__((overloadable)) length(float);
-extern float __attribute__((overloadable)) length(float2);
-extern float __attribute__((overloadable)) length(float3);
-extern float __attribute__((overloadable)) length(float4);
-
-extern float2 __attribute__((overloadable)) normalize(float2);
-extern float3 __attribute__((overloadable)) normalize(float3);
-extern float4 __attribute__((overloadable)) normalize(float4);
-
-
-
-
diff --git a/scriptc/rs_graphics.rsh b/scriptc/rs_graphics.rsh
index 0f03732a..4696fb33 100644
--- a/scriptc/rs_graphics.rsh
+++ b/scriptc/rs_graphics.rsh
@@ -2,6 +2,7 @@
extern float rand(float max);
+//extern void vec2Rand(float *, float len);
extern float2 vec2Rand(float len);
extern float3 float3Norm(float3);
@@ -59,9 +60,21 @@ extern int getHeight();
extern int sendToClient(void *data, int cmdID, int len, int waitForSpace);
-extern void debugF(const char *, float);
-extern void debugI32(const char *, int);
-extern void debugHexI32(const char *, int);
-
+extern uint32_t allocGetDimX(rs_allocation);
+extern uint32_t allocGetDimY(rs_allocation);
+extern uint32_t allocGetDimZ(rs_allocation);
+extern uint32_t allocGetDimLOD(rs_allocation);
+extern uint32_t allocGetDimFaces(rs_allocation);
+
+//
+extern float normf(float start, float stop, float value);
+extern float clampf(float amount, float low, float high);
+extern float turbulencef2(float x, float y, float octaves);
+extern float turbulencef3(float x, float y, float z, float octaves);
+
+extern uchar4 __attribute__((overloadable)) convertColorTo8888(float r, float g, float b);
+extern uchar4 __attribute__((overloadable)) convertColorTo8888(float r, float g, float b, float a);
+extern uchar4 __attribute__((overloadable)) convertColorTo8888(float3);
+extern uchar4 __attribute__((overloadable)) convertColorTo8888(float4);
diff --git a/scriptc/rs_math.rsh b/scriptc/rs_math.rsh
index fba0f8f7..48ab0666 100644
--- a/scriptc/rs_math.rsh
+++ b/scriptc/rs_math.rsh
@@ -1,285 +1,653 @@
-// Float ops
-
-extern float __attribute__((overloadable)) abs(float);
-//extern float2 __attribute__((overloadable)) abs(float2);
-//extern float3 __attribute__((overloadable)) abs(float3);
-//extern float4 __attribute__((overloadable)) abs(float4);
-//extern float8 __attribute__((overloadable)) abs(float8);
-//extern float16 __attribute__((overloadable)) abs(float16);
+// Float ops, 6.11.2
extern float __attribute__((overloadable)) acos(float);
-//extern float2 __attribute__((overloadable)) acos(float2);
-//extern float3 __attribute__((overloadable)) acos(float3);
-//extern float4 __attribute__((overloadable)) acos(float4);
-//extern float8 __attribute__((overloadable)) acos(float8);
-//extern float16 __attribute__((overloadable)) acos(float16);
+extern float2 __attribute__((overloadable)) acos(float2);
+extern float3 __attribute__((overloadable)) acos(float3);
+extern float4 __attribute__((overloadable)) acos(float4);
+extern float8 __attribute__((overloadable)) acos(float8);
+extern float16 __attribute__((overloadable)) acos(float16);
+
+extern float __attribute__((overloadable)) acosh(float);
+extern float2 __attribute__((overloadable)) acosh(float2);
+extern float3 __attribute__((overloadable)) acosh(float3);
+extern float4 __attribute__((overloadable)) acosh(float4);
+extern float8 __attribute__((overloadable)) acosh(float8);
+extern float16 __attribute__((overloadable)) acosh(float16);
+
+extern float __attribute__((overloadable)) acospi(float);
+extern float2 __attribute__((overloadable)) acospi(float2);
+extern float3 __attribute__((overloadable)) acospi(float3);
+extern float4 __attribute__((overloadable)) acospi(float4);
+extern float8 __attribute__((overloadable)) acospi(float8);
+extern float16 __attribute__((overloadable)) acospi(float16);
extern float __attribute__((overloadable)) asin(float);
-//extern float2 __attribute__((overloadable)) asin(float2);
-//extern float3 __attribute__((overloadable)) asin(float3);
-//extern float4 __attribute__((overloadable)) asin(float4);
-//extern float8 __attribute__((overloadable)) asin(float8);
-//extern float16 __attribute__((overloadable)) asin(float16);
+extern float2 __attribute__((overloadable)) asin(float2);
+extern float3 __attribute__((overloadable)) asin(float3);
+extern float4 __attribute__((overloadable)) asin(float4);
+extern float8 __attribute__((overloadable)) asin(float8);
+extern float16 __attribute__((overloadable)) asin(float16);
+
+extern float __attribute__((overloadable)) asinh(float);
+extern float2 __attribute__((overloadable)) asinh(float2);
+extern float3 __attribute__((overloadable)) asinh(float3);
+extern float4 __attribute__((overloadable)) asinh(float4);
+extern float8 __attribute__((overloadable)) asinh(float8);
+extern float16 __attribute__((overloadable)) asinh(float16);
+
+extern float __attribute__((overloadable)) asinpi(float);
+extern float2 __attribute__((overloadable)) asinpi(float2);
+extern float3 __attribute__((overloadable)) asinpi(float3);
+extern float4 __attribute__((overloadable)) asinpi(float4);
+extern float8 __attribute__((overloadable)) asinpi(float8);
+extern float16 __attribute__((overloadable)) asinpi(float16);
extern float __attribute__((overloadable)) atan(float);
-//extern float2 __attribute__((overloadable)) atan(float2);
-//extern float3 __attribute__((overloadable)) atan(float3);
-//extern float4 __attribute__((overloadable)) atan(float4);
-//extern float8 __attribute__((overloadable)) atan(float8);
-//extern float16 __attribute__((overloadable)) atan(float16);
+extern float2 __attribute__((overloadable)) atan(float2);
+extern float3 __attribute__((overloadable)) atan(float3);
+extern float4 __attribute__((overloadable)) atan(float4);
+extern float8 __attribute__((overloadable)) atan(float8);
+extern float16 __attribute__((overloadable)) atan(float16);
extern float __attribute__((overloadable)) atan2(float, float);
-//extern float2 __attribute__((overloadable)) atan2(float2, float2);
-//extern float3 __attribute__((overloadable)) atan2(float3, float3);
-//extern float4 __attribute__((overloadable)) atan2(float4, float4);
-//extern float8 __attribute__((overloadable)) atan2(float8, float8);
-//extern float16 __attribute__((overloadable)) atan2(float16, float16);
+extern float2 __attribute__((overloadable)) atan2(float2, float2);
+extern float3 __attribute__((overloadable)) atan2(float3, float3);
+extern float4 __attribute__((overloadable)) atan2(float4, float4);
+extern float8 __attribute__((overloadable)) atan2(float8, float8);
+extern float16 __attribute__((overloadable)) atan2(float16, float16);
+
+extern float __attribute__((overloadable)) atanh(float);
+extern float2 __attribute__((overloadable)) atanh(float2);
+extern float3 __attribute__((overloadable)) atanh(float3);
+extern float4 __attribute__((overloadable)) atanh(float4);
+extern float8 __attribute__((overloadable)) atanh(float8);
+extern float16 __attribute__((overloadable)) atanh(float16);
+
+extern float __attribute__((overloadable)) atanpi(float);
+extern float2 __attribute__((overloadable)) atanpi(float2);
+extern float3 __attribute__((overloadable)) atanpi(float3);
+extern float4 __attribute__((overloadable)) atanpi(float4);
+extern float8 __attribute__((overloadable)) atanpi(float8);
+extern float16 __attribute__((overloadable)) atanpi(float16);
+
+extern float __attribute__((overloadable)) atan2pi(float, float);
+extern float2 __attribute__((overloadable)) atan2pi(float2, float2);
+extern float3 __attribute__((overloadable)) atan2pi(float3, float3);
+extern float4 __attribute__((overloadable)) atan2pi(float4, float4);
+extern float8 __attribute__((overloadable)) atan2pi(float8, float8);
+extern float16 __attribute__((overloadable)) atan2pi(float16, float16);
+
+extern float __attribute__((overloadable)) cbrt(float);
+extern float2 __attribute__((overloadable)) cbrt(float2);
+extern float3 __attribute__((overloadable)) cbrt(float3);
+extern float4 __attribute__((overloadable)) cbrt(float4);
+extern float8 __attribute__((overloadable)) cbrt(float8);
+extern float16 __attribute__((overloadable)) cbrt(float16);
extern float __attribute__((overloadable)) ceil(float);
-//extern float2 __attribute__((overloadable)) ceil(float2);
-//extern float3 __attribute__((overloadable)) ceil(float3);
-//extern float4 __attribute__((overloadable)) ceil(float4);
-//extern float8 __attribute__((overloadable)) ceil(float8);
-//extern float16 __attribute__((overloadable)) ceil(float16);
-
-extern float __attribute__((overloadable)) clamp(float, float, float);
-//extern float2 __attribute__((overloadable)) clamp(float2, float2, float2);
-//extern float3 __attribute__((overloadable)) clamp(float3, float3, float3);
-//extern float4 __attribute__((overloadable)) clamp(float4, float4, float4);
-//extern float8 __attribute__((overloadable)) clamp(float8, float8, float8);
-//extern float16 __attribute__((overloadable)) clamp(float16, float16, float16);
-//extern float2 __attribute__((overloadable)) clamp(float2, float, float);
-//extern float3 __attribute__((overloadable)) clamp(float3, float, float);
-//extern float4 __attribute__((overloadable)) clamp(float4, float, float);
-//extern float8 __attribute__((overloadable)) clamp(float8, float, float);
-//extern float16 __attribute__((overloadable)) clamp(float16, float, float);
+extern float2 __attribute__((overloadable)) ceil(float2);
+extern float3 __attribute__((overloadable)) ceil(float3);
+extern float4 __attribute__((overloadable)) ceil(float4);
+extern float8 __attribute__((overloadable)) ceil(float8);
+extern float16 __attribute__((overloadable)) ceil(float16);
extern float __attribute__((overloadable)) copysign(float, float);
-//extern float2 __attribute__((overloadable)) copysign(float2, float2);
-//extern float3 __attribute__((overloadable)) copysign(float3, float3);
-//extern float4 __attribute__((overloadable)) copysign(float4, float4);
-//extern float8 __attribute__((overloadable)) copysign(float8, float8);
-//extern float16 __attribute__((overloadable)) copysign(float16, float16);
+extern float2 __attribute__((overloadable)) copysign(float2, float2);
+extern float3 __attribute__((overloadable)) copysign(float3, float3);
+extern float4 __attribute__((overloadable)) copysign(float4, float4);
+extern float8 __attribute__((overloadable)) copysign(float8, float8);
+extern float16 __attribute__((overloadable)) copysign(float16, float16);
extern float __attribute__((overloadable)) cos(float);
-//extern float2 __attribute__((overloadable)) cos(float2);
-//extern float3 __attribute__((overloadable)) cos(float3);
-//extern float4 __attribute__((overloadable)) cos(float4);
-//extern float8 __attribute__((overloadable)) cos(float8);
-//extern float16 __attribute__((overloadable)) cos(float16);
-
-extern float __attribute__((overloadable)) degrees(float);
-//extern float2 __attribute__((overloadable)) degrees(float2);
-//extern float3 __attribute__((overloadable)) degrees(float3);
-//extern float4 __attribute__((overloadable)) degrees(float4);
-//extern float8 __attribute__((overloadable)) degrees(float8);
-//extern float16 __attribute__((overloadable)) degrees(float16);
+extern float2 __attribute__((overloadable)) cos(float2);
+extern float3 __attribute__((overloadable)) cos(float3);
+extern float4 __attribute__((overloadable)) cos(float4);
+extern float8 __attribute__((overloadable)) cos(float8);
+extern float16 __attribute__((overloadable)) cos(float16);
+
+extern float __attribute__((overloadable)) cosh(float);
+extern float2 __attribute__((overloadable)) cosh(float2);
+extern float3 __attribute__((overloadable)) cosh(float3);
+extern float4 __attribute__((overloadable)) cosh(float4);
+extern float8 __attribute__((overloadable)) cosh(float8);
+extern float16 __attribute__((overloadable)) cosh(float16);
+
+extern float __attribute__((overloadable)) cospi(float);
+extern float2 __attribute__((overloadable)) cospi(float2);
+extern float3 __attribute__((overloadable)) cospi(float3);
+extern float4 __attribute__((overloadable)) cospi(float4);
+extern float8 __attribute__((overloadable)) cospi(float8);
+extern float16 __attribute__((overloadable)) cospi(float16);
+
+extern float __attribute__((overloadable)) erfc(float);
+extern float2 __attribute__((overloadable)) erfc(float2);
+extern float3 __attribute__((overloadable)) erfc(float3);
+extern float4 __attribute__((overloadable)) erfc(float4);
+extern float8 __attribute__((overloadable)) erfc(float8);
+extern float16 __attribute__((overloadable)) erfc(float16);
+
+extern float __attribute__((overloadable)) erf(float);
+extern float2 __attribute__((overloadable)) erf(float2);
+extern float3 __attribute__((overloadable)) erf(float3);
+extern float4 __attribute__((overloadable)) erf(float4);
+extern float8 __attribute__((overloadable)) erf(float8);
+extern float16 __attribute__((overloadable)) erf(float16);
extern float __attribute__((overloadable)) exp(float);
-//extern float2 __attribute__((overloadable)) exp(float2);
-//extern float3 __attribute__((overloadable)) exp(float3);
-//extern float4 __attribute__((overloadable)) exp(float4);
-//extern float8 __attribute__((overloadable)) exp(float8);
-//extern float16 __attribute__((overloadable)) exp(float16);
+extern float2 __attribute__((overloadable)) exp(float2);
+extern float3 __attribute__((overloadable)) exp(float3);
+extern float4 __attribute__((overloadable)) exp(float4);
+extern float8 __attribute__((overloadable)) exp(float8);
+extern float16 __attribute__((overloadable)) exp(float16);
extern float __attribute__((overloadable)) exp2(float);
-//extern float2 __attribute__((overloadable)) exp2(float2);
-//extern float3 __attribute__((overloadable)) exp2(float3);
-//extern float4 __attribute__((overloadable)) exp2(float4);
-//extern float8 __attribute__((overloadable)) exp2(float8);
-//extern float16 __attribute__((overloadable)) exp2(float16);
+extern float2 __attribute__((overloadable)) exp2(float2);
+extern float3 __attribute__((overloadable)) exp2(float3);
+extern float4 __attribute__((overloadable)) exp2(float4);
+extern float8 __attribute__((overloadable)) exp2(float8);
+extern float16 __attribute__((overloadable)) exp2(float16);
extern float __attribute__((overloadable)) exp10(float);
-//extern float2 __attribute__((overloadable)) exp10(float2);
-//extern float3 __attribute__((overloadable)) exp10(float3);
-//extern float4 __attribute__((overloadable)) exp10(float4);
-//extern float8 __attribute__((overloadable)) exp10(float8);
-//extern float16 __attribute__((overloadable)) exp10(float16);
+extern float2 __attribute__((overloadable)) exp10(float2);
+extern float3 __attribute__((overloadable)) exp10(float3);
+extern float4 __attribute__((overloadable)) exp10(float4);
+extern float8 __attribute__((overloadable)) exp10(float8);
+extern float16 __attribute__((overloadable)) exp10(float16);
+
+extern float __attribute__((overloadable)) expm1(float);
+extern float2 __attribute__((overloadable)) expm1(float2);
+extern float3 __attribute__((overloadable)) expm1(float3);
+extern float4 __attribute__((overloadable)) expm1(float4);
+extern float8 __attribute__((overloadable)) expm1(float8);
+extern float16 __attribute__((overloadable)) expm1(float16);
extern float __attribute__((overloadable)) fabs(float);
-//extern float2 __attribute__((overloadable)) fabs(float2);
-//extern float3 __attribute__((overloadable)) fabs(float3);
-//extern float4 __attribute__((overloadable)) fabs(float4);
-//extern float8 __attribute__((overloadable)) fabs(float8);
-//extern float16 __attribute__((overloadable)) fabs(float16);
+extern float2 __attribute__((overloadable)) fabs(float2);
+extern float3 __attribute__((overloadable)) fabs(float3);
+extern float4 __attribute__((overloadable)) fabs(float4);
+extern float8 __attribute__((overloadable)) fabs(float8);
+extern float16 __attribute__((overloadable)) fabs(float16);
+
+extern float __attribute__((overloadable)) fdim(float, float);
+extern float2 __attribute__((overloadable)) fdim(float2, float2);
+extern float3 __attribute__((overloadable)) fdim(float3, float3);
+extern float4 __attribute__((overloadable)) fdim(float4, float4);
+extern float8 __attribute__((overloadable)) fdim(float8, float8);
+extern float16 __attribute__((overloadable)) fdim(float16, float16);
extern float __attribute__((overloadable)) floor(float);
-//extern float2 __attribute__((overloadable)) floor(float2);
-//extern float3 __attribute__((overloadable)) floor(float3);
-//extern float4 __attribute__((overloadable)) floor(float4);
-//extern float8 __attribute__((overloadable)) floor(float8);
-//extern float16 __attribute__((overloadable)) floor(float16);
+extern float2 __attribute__((overloadable)) floor(float2);
+extern float3 __attribute__((overloadable)) floor(float3);
+extern float4 __attribute__((overloadable)) floor(float4);
+extern float8 __attribute__((overloadable)) floor(float8);
+extern float16 __attribute__((overloadable)) floor(float16);
+
+extern float __attribute__((overloadable)) fma(float, float, float);
+extern float2 __attribute__((overloadable)) fma(float2, float2, float2);
+extern float3 __attribute__((overloadable)) fma(float3, float3, float3);
+extern float4 __attribute__((overloadable)) fma(float4, float4, float4);
+extern float8 __attribute__((overloadable)) fma(float8, float8, float8);
+extern float16 __attribute__((overloadable)) fma(float16, float16, float16);
extern float __attribute__((overloadable)) fmax(float, float);
-//extern float2 __attribute__((overloadable)) fmax(float2, float2);
-//extern float3 __attribute__((overloadable)) fmax(float3, float3);
-//extern float4 __attribute__((overloadable)) fmax(float4, float4);
-//extern float8 __attribute__((overloadable)) fmax(float8, float8);
-//extern float16 __attribute__((overloadable)) fmax(float16, float16);
-//extern float2 __attribute__((overloadable)) fmax(float2, float);
-//extern float3 __attribute__((overloadable)) fmax(float3, float);
-//extern float4 __attribute__((overloadable)) fmax(float4, float);
-//extern float8 __attribute__((overloadable)) fmax(float8, float);
-//extern float16 __attribute__((overloadable)) fmax(float16, float);
+extern float2 __attribute__((overloadable)) fmax(float2, float2);
+extern float3 __attribute__((overloadable)) fmax(float3, float3);
+extern float4 __attribute__((overloadable)) fmax(float4, float4);
+extern float8 __attribute__((overloadable)) fmax(float8, float8);
+extern float16 __attribute__((overloadable)) fmax(float16, float16);
+extern float2 __attribute__((overloadable)) fmax(float2, float);
+extern float3 __attribute__((overloadable)) fmax(float3, float);
+extern float4 __attribute__((overloadable)) fmax(float4, float);
+extern float8 __attribute__((overloadable)) fmax(float8, float);
+extern float16 __attribute__((overloadable)) fmax(float16, float);
extern float __attribute__((overloadable)) fmin(float, float);
-//extern float2 __attribute__((overloadable)) fmin(float2, float2);
-//extern float3 __attribute__((overloadable)) fmin(float3, float3);
-//extern float4 __attribute__((overloadable)) fmin(float4, float4);
-//extern float8 __attribute__((overloadable)) fmin(float8, float8);
-//extern float16 __attribute__((overloadable)) fmin(float16, float16);
-//extern float2 __attribute__((overloadable)) fmin(float2, float);
-//extern float3 __attribute__((overloadable)) fmin(float3, float);
-//extern float4 __attribute__((overloadable)) fmin(float4, float);
-//extern float8 __attribute__((overloadable)) fmin(float8, float);
-//extern float16 __attribute__((overloadable)) fmin(float16, float);
+extern float2 __attribute__((overloadable)) fmin(float2, float2);
+extern float3 __attribute__((overloadable)) fmin(float3, float3);
+extern float4 __attribute__((overloadable)) fmin(float4, float4);
+extern float8 __attribute__((overloadable)) fmin(float8, float8);
+extern float16 __attribute__((overloadable)) fmin(float16, float16);
+extern float2 __attribute__((overloadable)) fmin(float2, float);
+extern float3 __attribute__((overloadable)) fmin(float3, float);
+extern float4 __attribute__((overloadable)) fmin(float4, float);
+extern float8 __attribute__((overloadable)) fmin(float8, float);
+extern float16 __attribute__((overloadable)) fmin(float16, float);
extern float __attribute__((overloadable)) fmod(float, float);
-//extern float2 __attribute__((overloadable)) fmod(float2, float2);
-//extern float3 __attribute__((overloadable)) fmod(float3, float3);
-//extern float4 __attribute__((overloadable)) fmod(float4, float4);
-//extern float8 __attribute__((overloadable)) fmod(float8, float8);
-//extern float16 __attribute__((overloadable)) fmod(float16, float16);
+extern float2 __attribute__((overloadable)) fmod(float2, float2);
+extern float3 __attribute__((overloadable)) fmod(float3, float3);
+extern float4 __attribute__((overloadable)) fmod(float4, float4);
+extern float8 __attribute__((overloadable)) fmod(float8, float8);
+extern float16 __attribute__((overloadable)) fmod(float16, float16);
+
+extern float __attribute__((overloadable)) fract(float, float *);
+extern float2 __attribute__((overloadable)) fract(float2, float2 *);
+extern float3 __attribute__((overloadable)) fract(float3, float3 *);
+extern float4 __attribute__((overloadable)) fract(float4, float4 *);
+extern float8 __attribute__((overloadable)) fract(float8, float8 *);
+extern float16 __attribute__((overloadable)) fract(float16, float16 *);
+
+extern float __attribute__((overloadable)) frexp(float, float *);
+extern float2 __attribute__((overloadable)) frexp(float2, float2 *);
+extern float3 __attribute__((overloadable)) frexp(float3, float3 *);
+extern float4 __attribute__((overloadable)) frexp(float4, float4 *);
+extern float8 __attribute__((overloadable)) frexp(float8, float8 *);
+extern float16 __attribute__((overloadable)) frexp(float16, float16 *);
+
+extern float __attribute__((overloadable)) hypot(float, float);
+extern float2 __attribute__((overloadable)) hypot(float2, float2);
+extern float3 __attribute__((overloadable)) hypot(float3, float3);
+extern float4 __attribute__((overloadable)) hypot(float4, float4);
+extern float8 __attribute__((overloadable)) hypot(float8, float8);
+extern float16 __attribute__((overloadable)) hypot(float16, float16);
+
+extern int __attribute__((overloadable)) ilogb(float);
+extern int2 __attribute__((overloadable)) ilogb(float2);
+extern int3 __attribute__((overloadable)) ilogb(float3);
+extern int4 __attribute__((overloadable)) ilogb(float4);
+extern int8 __attribute__((overloadable)) ilogb(float8);
+extern int16 __attribute__((overloadable)) ilogb(float16);
+
+extern float __attribute__((overloadable)) ldexp(float, int);
+extern float2 __attribute__((overloadable)) ldexp(float2, int2);
+extern float3 __attribute__((overloadable)) ldexp(float3, int3);
+extern float4 __attribute__((overloadable)) ldexp(float4, int4);
+extern float8 __attribute__((overloadable)) ldexp(float8, int8);
+extern float16 __attribute__((overloadable)) ldexp(float16, int16);
+extern float2 __attribute__((overloadable)) ldexp(float2, int);
+extern float3 __attribute__((overloadable)) ldexp(float3, int);
+extern float4 __attribute__((overloadable)) ldexp(float4, int);
+extern float8 __attribute__((overloadable)) ldexp(float8, int);
+extern float16 __attribute__((overloadable)) ldexp(float16, int);
+
+extern float __attribute__((overloadable)) lgamma(float);
+extern float2 __attribute__((overloadable)) lgamma(float2);
+extern float3 __attribute__((overloadable)) lgamma(float3);
+extern float4 __attribute__((overloadable)) lgamma(float4);
+extern float8 __attribute__((overloadable)) lgamma(float8);
+extern float16 __attribute__((overloadable)) lgamma(float16);
+extern float __attribute__((overloadable)) lgamma(float, float *);
+extern float2 __attribute__((overloadable)) lgamma(float2, float2 *);
+extern float3 __attribute__((overloadable)) lgamma(float3, float3 *);
+extern float4 __attribute__((overloadable)) lgamma(float4, float4 *);
+extern float8 __attribute__((overloadable)) lgamma(float8, float8 *);
+extern float16 __attribute__((overloadable)) lgamma(float16, float16 *);
extern float __attribute__((overloadable)) log(float);
-//extern float2 __attribute__((overloadable)) log(float2);
-//extern float3 __attribute__((overloadable)) log(float3);
-//extern float4 __attribute__((overloadable)) log(float4);
-//extern float8 __attribute__((overloadable)) log(float8);
-//extern float16 __attribute__((overloadable)) log(float16);
+extern float2 __attribute__((overloadable)) log(float2);
+extern float3 __attribute__((overloadable)) log(float3);
+extern float4 __attribute__((overloadable)) log(float4);
+extern float8 __attribute__((overloadable)) log(float8);
+extern float16 __attribute__((overloadable)) log(float16);
extern float __attribute__((overloadable)) log2(float);
-//extern float2 __attribute__((overloadable)) log2(float2);
-//extern float3 __attribute__((overloadable)) log2(float3);
-//extern float4 __attribute__((overloadable)) log2(float4);
-//extern float8 __attribute__((overloadable)) log2(float8);
-//extern float16 __attribute__((overloadable)) log2(float16);
+extern float2 __attribute__((overloadable)) log2(float2);
+extern float3 __attribute__((overloadable)) log2(float3);
+extern float4 __attribute__((overloadable)) log2(float4);
+extern float8 __attribute__((overloadable)) log2(float8);
+extern float16 __attribute__((overloadable)) log2(float16);
extern float __attribute__((overloadable)) log10(float);
-//extern float2 __attribute__((overloadable)) log10(float2);
-//extern float3 __attribute__((overloadable)) log10(float3);
-//extern float4 __attribute__((overloadable)) log10(float4);
-//extern float8 __attribute__((overloadable)) log10(float8);
-//extern float16 __attribute__((overloadable)) log10(float16);
-
-extern float __attribute__((overloadable)) max(float, float);
-//extern float2 __attribute__((overloadable)) max(float2, float2);
-//extern float3 __attribute__((overloadable)) max(float3, float3);
-//extern float4 __attribute__((overloadable)) max(float4, float4);
-//extern float8 __attribute__((overloadable)) max(float8, float8);
-//extern float16 __attribute__((overloadable)) max(float16, float16);
-
-extern float __attribute__((overloadable)) min(float, float);
-//extern float2 __attribute__((overloadable)) min(float2, float2);
-//extern float3 __attribute__((overloadable)) min(float3, float3);
-//extern float4 __attribute__((overloadable)) min(float4, float4);
-//extern float8 __attribute__((overloadable)) min(float8, float8);
-//extern float16 __attribute__((overloadable)) min(float16, float16);
-
-extern float __attribute__((overloadable)) mix(float, float, float);
-//extern float2 __attribute__((overloadable)) mix(float2, float2, float2);
-//extern float3 __attribute__((overloadable)) mix(float3, float3, float3);
-//extern float4 __attribute__((overloadable)) mix(float4, float4, float4);
-//extern float8 __attribute__((overloadable)) mix(float8, float8, float8);
-//extern float16 __attribute__((overloadable)) mix(float16, float16, float16);
-//extern float2 __attribute__((overloadable)) mix(float2, float2, float);
-//extern float3 __attribute__((overloadable)) mix(float3, float3, float);
-//extern float4 __attribute__((overloadable)) mix(float4, float4, float);
-//extern float8 __attribute__((overloadable)) mix(float8, float8, float);
-//extern float16 __attribute__((overloadable)) mix(float16, float16, float);
+extern float2 __attribute__((overloadable)) log10(float2);
+extern float3 __attribute__((overloadable)) log10(float3);
+extern float4 __attribute__((overloadable)) log10(float4);
+extern float8 __attribute__((overloadable)) log10(float8);
+extern float16 __attribute__((overloadable)) log10(float16);
+
+extern float __attribute__((overloadable)) log1p(float);
+extern float2 __attribute__((overloadable)) log1p(float2);
+extern float3 __attribute__((overloadable)) log1p(float3);
+extern float4 __attribute__((overloadable)) log1p(float4);
+extern float8 __attribute__((overloadable)) log1p(float8);
+extern float16 __attribute__((overloadable)) log1p(float16);
+
+extern float __attribute__((overloadable)) logb(float);
+extern float2 __attribute__((overloadable)) logb(float2);
+extern float3 __attribute__((overloadable)) logb(float3);
+extern float4 __attribute__((overloadable)) logb(float4);
+extern float8 __attribute__((overloadable)) logb(float8);
+extern float16 __attribute__((overloadable)) logb(float16);
+
+extern float __attribute__((overloadable)) mad(float, float, float);
+extern float2 __attribute__((overloadable)) mad(float2, float2, float2);
+extern float3 __attribute__((overloadable)) mad(float3, float3, float3);
+extern float4 __attribute__((overloadable)) mad(float4, float4, float4);
+extern float8 __attribute__((overloadable)) mad(float8, float8, float8);
+extern float16 __attribute__((overloadable)) mad(float16, float16, float16);
+
+extern float __attribute__((overloadable)) modf(float, float *);
+extern float2 __attribute__((overloadable)) modf(float2, float2 *);
+extern float3 __attribute__((overloadable)) modf(float3, float3 *);
+extern float4 __attribute__((overloadable)) modf(float4, float4 *);
+extern float8 __attribute__((overloadable)) modf(float8, float8 *);
+extern float16 __attribute__((overloadable)) modf(float16, float16 *);
+
+extern float __attribute__((overloadable)) nan(uint);
+extern float2 __attribute__((overloadable)) nan(uint2);
+extern float3 __attribute__((overloadable)) nan(uint3);
+extern float4 __attribute__((overloadable)) nan(uint4);
+extern float8 __attribute__((overloadable)) nan(uint8);
+extern float16 __attribute__((overloadable)) nan(uint16);
+
+extern float __attribute__((overloadable)) nextafter(float, float);
+extern float2 __attribute__((overloadable)) nextafter(float2, float2);
+extern float3 __attribute__((overloadable)) nextafter(float3, float3);
+extern float4 __attribute__((overloadable)) nextafter(float4, float4);
+extern float8 __attribute__((overloadable)) nextafter(float8, float8);
+extern float16 __attribute__((overloadable)) nextafter(float16, float16);
extern float __attribute__((overloadable)) pow(float, float);
-//extern float2 __attribute__((overloadable)) pow(float2, float2);
-//extern float3 __attribute__((overloadable)) pow(float3, float3);
-//extern float4 __attribute__((overloadable)) pow(float4, float4);
-//extern float8 __attribute__((overloadable)) pow(float8, float8);
-//extern float16 __attribute__((overloadable)) pow(float16, float16);
-
-extern float __attribute__((overloadable)) radians(float);
-//extern float2 __attribute__((overloadable)) radians(float2);
-//extern float3 __attribute__((overloadable)) radians(float3);
-//extern float4 __attribute__((overloadable)) radians(float4);
-//extern float8 __attribute__((overloadable)) radians(float8);
-//extern float16 __attribute__((overloadable)) radians(float16);
+extern float2 __attribute__((overloadable)) pow(float2, float2);
+extern float3 __attribute__((overloadable)) pow(float3, float3);
+extern float4 __attribute__((overloadable)) pow(float4, float4);
+extern float8 __attribute__((overloadable)) pow(float8, float8);
+extern float16 __attribute__((overloadable)) pow(float16, float16);
+
+extern float __attribute__((overloadable)) pown(float, int);
+extern float2 __attribute__((overloadable)) pown(float2, int2);
+extern float3 __attribute__((overloadable)) pown(float3, int3);
+extern float4 __attribute__((overloadable)) pown(float4, int4);
+extern float8 __attribute__((overloadable)) pown(float8, int8);
+extern float16 __attribute__((overloadable)) pown(float16, int16);
+
+extern float __attribute__((overloadable)) powr(float, float);
+extern float2 __attribute__((overloadable)) powr(float2, float2);
+extern float3 __attribute__((overloadable)) powr(float3, float3);
+extern float4 __attribute__((overloadable)) powr(float4, float4);
+extern float8 __attribute__((overloadable)) powr(float8, float8);
+extern float16 __attribute__((overloadable)) powr(float16, float16);
+
+extern float __attribute__((overloadable)) remainder(float, float);
+extern float2 __attribute__((overloadable)) remainder(float2, float2);
+extern float3 __attribute__((overloadable)) remainder(float3, float3);
+extern float4 __attribute__((overloadable)) remainder(float4, float4);
+extern float8 __attribute__((overloadable)) remainder(float8, float8);
+extern float16 __attribute__((overloadable)) remainder(float16, float16);
+
+extern float __attribute__((overloadable)) remquo(float, float, float *);
+extern float2 __attribute__((overloadable)) remquo(float2, float2, float2 *);
+extern float3 __attribute__((overloadable)) remquo(float3, float3, float3 *);
+extern float4 __attribute__((overloadable)) remquo(float4, float4, float4 *);
+extern float8 __attribute__((overloadable)) remquo(float8, float8, float8 *);
+extern float16 __attribute__((overloadable)) remquo(float16, float16, float16 *);
extern float __attribute__((overloadable)) rint(float);
-//extern float2 __attribute__((overloadable)) rint(float2);
-//extern float3 __attribute__((overloadable)) rint(float3);
-//extern float4 __attribute__((overloadable)) rint(float4);
-//extern float8 __attribute__((overloadable)) rint(float8);
-//extern float16 __attribute__((overloadable)) rint(float16);
+extern float2 __attribute__((overloadable)) rint(float2);
+extern float3 __attribute__((overloadable)) rint(float3);
+extern float4 __attribute__((overloadable)) rint(float4);
+extern float8 __attribute__((overloadable)) rint(float8);
+extern float16 __attribute__((overloadable)) rint(float16);
+
+extern float __attribute__((overloadable)) rootn(float, int);
+extern float2 __attribute__((overloadable)) rootn(float2, int2);
+extern float3 __attribute__((overloadable)) rootn(float3, int3);
+extern float4 __attribute__((overloadable)) rootn(float4, int4);
+extern float8 __attribute__((overloadable)) rootn(float8, int8);
+extern float16 __attribute__((overloadable)) rootn(float16, int16);
extern float __attribute__((overloadable)) round(float);
-//extern float2 __attribute__((overloadable)) round(float2);
-//extern float3 __attribute__((overloadable)) round(float3);
-//extern float4 __attribute__((overloadable)) round(float4);
-//extern float8 __attribute__((overloadable)) round(float8);
-//extern float16 __attribute__((overloadable)) round(float16);
+extern float2 __attribute__((overloadable)) round(float2);
+extern float3 __attribute__((overloadable)) round(float3);
+extern float4 __attribute__((overloadable)) round(float4);
+extern float8 __attribute__((overloadable)) round(float8);
+extern float16 __attribute__((overloadable)) round(float16);
extern float __attribute__((overloadable)) rsqrt(float);
-//extern float2 __attribute__((overloadable)) rsqrt(float2);
-//extern float3 __attribute__((overloadable)) rsqrt(float3);
-//extern float4 __attribute__((overloadable)) rsqrt(float4);
-//extern float8 __attribute__((overloadable)) rsqrt(float8);
-//extern float16 __attribute__((overloadable)) rsqrt(float16);
-
-extern float __attribute__((overloadable)) sign(float);
-//extern float2 __attribute__((overloadable)) sign(float2);
-//extern float3 __attribute__((overloadable)) sign(float3);
-//extern float4 __attribute__((overloadable)) sign(float4);
-//extern float8 __attribute__((overloadable)) sign(float8);
-//extern float16 __attribute__((overloadable)) sign(float16);
+extern float2 __attribute__((overloadable)) rsqrt(float2);
+extern float3 __attribute__((overloadable)) rsqrt(float3);
+extern float4 __attribute__((overloadable)) rsqrt(float4);
+extern float8 __attribute__((overloadable)) rsqrt(float8);
+extern float16 __attribute__((overloadable)) rsqrt(float16);
extern float __attribute__((overloadable)) sin(float);
-//extern float2 __attribute__((overloadable)) sin(float2);
-//extern float3 __attribute__((overloadable)) sin(float3);
-//extern float4 __attribute__((overloadable)) sin(float4);
-//extern float8 __attribute__((overloadable)) sin(float8);
-//extern float16 __attribute__((overloadable)) sin(float16);
+extern float2 __attribute__((overloadable)) sin(float2);
+extern float3 __attribute__((overloadable)) sin(float3);
+extern float4 __attribute__((overloadable)) sin(float4);
+extern float8 __attribute__((overloadable)) sin(float8);
+extern float16 __attribute__((overloadable)) sin(float16);
+
+extern float __attribute__((overloadable)) sincos(float, float *);
+extern float2 __attribute__((overloadable)) sincos(float2, float2 *);
+extern float3 __attribute__((overloadable)) sincos(float3, float3 *);
+extern float4 __attribute__((overloadable)) sincos(float4, float4 *);
+extern float8 __attribute__((overloadable)) sincos(float8, float8 *);
+extern float16 __attribute__((overloadable)) sincos(float16, float16 *);
+
+extern float __attribute__((overloadable)) sinh(float);
+extern float2 __attribute__((overloadable)) sinh(float2);
+extern float3 __attribute__((overloadable)) sinh(float3);
+extern float4 __attribute__((overloadable)) sinh(float4);
+extern float8 __attribute__((overloadable)) sinh(float8);
+extern float16 __attribute__((overloadable)) sinh(float16);
+
+extern float __attribute__((overloadable)) sinpi(float);
+extern float2 __attribute__((overloadable)) sinpi(float2);
+extern float3 __attribute__((overloadable)) sinpi(float3);
+extern float4 __attribute__((overloadable)) sinpi(float4);
+extern float8 __attribute__((overloadable)) sinpi(float8);
+extern float16 __attribute__((overloadable)) sinpi(float16);
extern float __attribute__((overloadable)) sqrt(float);
-//extern float2 __attribute__((overloadable)) sqrt(float2);
-//extern float3 __attribute__((overloadable)) sqrt(float3);
-//extern float4 __attribute__((overloadable)) sqrt(float4);
-//extern float8 __attribute__((overloadable)) sqrt(float8);
-//extern float16 __attribute__((overloadable)) sqrt(float16);
+extern float2 __attribute__((overloadable)) sqrt(float2);
+extern float3 __attribute__((overloadable)) sqrt(float3);
+extern float4 __attribute__((overloadable)) sqrt(float4);
+extern float8 __attribute__((overloadable)) sqrt(float8);
+extern float16 __attribute__((overloadable)) sqrt(float16);
extern float __attribute__((overloadable)) tan(float);
-//extern float2 __attribute__((overloadable)) tan(float2);
-//extern float3 __attribute__((overloadable)) tan(float3);
-//extern float4 __attribute__((overloadable)) tan(float4);
-//extern float8 __attribute__((overloadable)) tan(float8);
-//extern float16 __attribute__((overloadable)) tan(float16);
+extern float2 __attribute__((overloadable)) tan(float2);
+extern float3 __attribute__((overloadable)) tan(float3);
+extern float4 __attribute__((overloadable)) tan(float4);
+extern float8 __attribute__((overloadable)) tan(float8);
+extern float16 __attribute__((overloadable)) tan(float16);
+
+extern float __attribute__((overloadable)) tanh(float);
+extern float2 __attribute__((overloadable)) tanh(float2);
+extern float3 __attribute__((overloadable)) tanh(float3);
+extern float4 __attribute__((overloadable)) tanh(float4);
+extern float8 __attribute__((overloadable)) tanh(float8);
+extern float16 __attribute__((overloadable)) tanh(float16);
+
+extern float __attribute__((overloadable)) tanpi(float);
+extern float2 __attribute__((overloadable)) tanpi(float2);
+extern float3 __attribute__((overloadable)) tanpi(float3);
+extern float4 __attribute__((overloadable)) tanpi(float4);
+extern float8 __attribute__((overloadable)) tanpi(float8);
+extern float16 __attribute__((overloadable)) tanpi(float16);
+
+extern float __attribute__((overloadable)) tgamma(float);
+extern float2 __attribute__((overloadable)) tgamma(float2);
+extern float3 __attribute__((overloadable)) tgamma(float3);
+extern float4 __attribute__((overloadable)) tgamma(float4);
+extern float8 __attribute__((overloadable)) tgamma(float8);
+extern float16 __attribute__((overloadable)) tgamma(float16);
extern float __attribute__((overloadable)) trunc(float);
-//extern float2 __attribute__((overloadable)) trunc(float2);
-//extern float3 __attribute__((overloadable)) trunc(float3);
-//extern float4 __attribute__((overloadable)) trunc(float4);
-//extern float8 __attribute__((overloadable)) trunc(float8);
-//extern float16 __attribute__((overloadable)) trunc(float16);
+extern float2 __attribute__((overloadable)) trunc(float2);
+extern float3 __attribute__((overloadable)) trunc(float3);
+extern float4 __attribute__((overloadable)) trunc(float4);
+extern float8 __attribute__((overloadable)) trunc(float8);
+extern float16 __attribute__((overloadable)) trunc(float16);
+
+
+// Int ops (partial), 6.11.3
+extern uint __attribute__((overloadable)) abs(int);
+extern ushort __attribute__((overloadable)) abs(short);
+extern uchar __attribute__((overloadable)) abs(char);
+extern uint __attribute__((overloadable)) clz(uint);
+extern int __attribute__((overloadable)) clz(int);
+extern ushort __attribute__((overloadable)) clz(ushort);
+extern short __attribute__((overloadable)) clz(short);
+extern uchar __attribute__((overloadable)) clz(uchar);
+extern char __attribute__((overloadable)) clz(char);
-// Int ops
+extern uint __attribute__((overloadable)) min(uint);
+extern int __attribute__((overloadable)) min(int);
+extern ushort __attribute__((overloadable)) min(ushort);
+extern short __attribute__((overloadable)) min(short);
+extern uchar __attribute__((overloadable)) min(uchar);
+extern char __attribute__((overloadable)) min(char);
-extern int __attribute__((overloadable)) abs(int);
-//extern int2 __attribute__((overloadable)) abs(int2);
-//extern int3 __attribute__((overloadable)) abs(int3);
-//extern int4 __attribute__((overloadable)) abs(int4);
-//extern int8 __attribute__((overloadable)) abs(int8);
-//extern int16 __attribute__((overloadable)) abs(int16);
+extern uint __attribute__((overloadable)) max(uint);
+extern int __attribute__((overloadable)) max(int);
+extern ushort __attribute__((overloadable)) max(ushort);
+extern short __attribute__((overloadable)) max(short);
+extern uchar __attribute__((overloadable)) max(uchar);
+extern char __attribute__((overloadable)) max(char);
-/*
-extern float modf(float, float);
+
+// 6.11.4
+
+extern float __attribute__((overloadable)) clamp(float, float, float);
+extern float2 __attribute__((overloadable)) clamp(float2, float2, float2);
+extern float3 __attribute__((overloadable)) clamp(float3, float3, float3);
+extern float4 __attribute__((overloadable)) clamp(float4, float4, float4);
+extern float8 __attribute__((overloadable)) clamp(float8, float8, float8);
+extern float16 __attribute__((overloadable)) clamp(float16, float16, float16);
+extern float2 __attribute__((overloadable)) clamp(float2, float, float);
+extern float3 __attribute__((overloadable)) clamp(float3, float, float);
+extern float4 __attribute__((overloadable)) clamp(float4, float, float);
+extern float8 __attribute__((overloadable)) clamp(float8, float, float);
+extern float16 __attribute__((overloadable)) clamp(float16, float, float);
+
+extern float __attribute__((overloadable)) degrees(float);
+extern float2 __attribute__((overloadable)) degrees(float2);
+extern float3 __attribute__((overloadable)) degrees(float3);
+extern float4 __attribute__((overloadable)) degrees(float4);
+extern float8 __attribute__((overloadable)) degrees(float8);
+extern float16 __attribute__((overloadable)) degrees(float16);
+
+extern float __attribute__((overloadable)) max(float, float);
+extern float2 __attribute__((overloadable)) max(float2, float2);
+extern float3 __attribute__((overloadable)) max(float3, float3);
+extern float4 __attribute__((overloadable)) max(float4, float4);
+extern float8 __attribute__((overloadable)) max(float8, float8);
+extern float16 __attribute__((overloadable)) max(float16, float16);
+extern float2 __attribute__((overloadable)) max(float2, float);
+extern float3 __attribute__((overloadable)) max(float3, float);
+extern float4 __attribute__((overloadable)) max(float4, float);
+extern float8 __attribute__((overloadable)) max(float8, float);
+extern float16 __attribute__((overloadable)) max(float16, float);
+
+extern float __attribute__((overloadable)) min(float, float);
+extern float2 __attribute__((overloadable)) min(float2, float2);
+extern float3 __attribute__((overloadable)) min(float3, float3);
+extern float4 __attribute__((overloadable)) min(float4, float4);
+extern float8 __attribute__((overloadable)) min(float8, float8);
+extern float16 __attribute__((overloadable)) min(float16, float16);
+extern float2 __attribute__((overloadable)) min(float2, float);
+extern float3 __attribute__((overloadable)) min(float3, float);
+extern float4 __attribute__((overloadable)) min(float4, float);
+extern float8 __attribute__((overloadable)) min(float8, float);
+extern float16 __attribute__((overloadable)) min(float16, float);
+
+extern float __attribute__((overloadable)) mix(float, float, float);
+extern float2 __attribute__((overloadable)) mix(float2, float2, float2);
+extern float3 __attribute__((overloadable)) mix(float3, float3, float3);
+extern float4 __attribute__((overloadable)) mix(float4, float4, float4);
+extern float8 __attribute__((overloadable)) mix(float8, float8, float8);
+extern float16 __attribute__((overloadable)) mix(float16, float16, float16);
+extern float2 __attribute__((overloadable)) mix(float2, float2, float);
+extern float3 __attribute__((overloadable)) mix(float3, float3, float);
+extern float4 __attribute__((overloadable)) mix(float4, float4, float);
+extern float8 __attribute__((overloadable)) mix(float8, float8, float);
+extern float16 __attribute__((overloadable)) mix(float16, float16, float);
+
+extern float __attribute__((overloadable)) radians(float);
+extern float2 __attribute__((overloadable)) radians(float2);
+extern float3 __attribute__((overloadable)) radians(float3);
+extern float4 __attribute__((overloadable)) radians(float4);
+extern float8 __attribute__((overloadable)) radians(float8);
+extern float16 __attribute__((overloadable)) radians(float16);
+
+extern float __attribute__((overloadable)) step(float, float);
+extern float2 __attribute__((overloadable)) step(float2, float2);
+extern float3 __attribute__((overloadable)) step(float3, float3);
+extern float4 __attribute__((overloadable)) step(float4, float4);
+extern float8 __attribute__((overloadable)) step(float8, float8);
+extern float16 __attribute__((overloadable)) step(float16, float16);
+extern float2 __attribute__((overloadable)) step(float, float2);
+extern float3 __attribute__((overloadable)) step(float, float3);
+extern float4 __attribute__((overloadable)) step(float, float4);
+extern float8 __attribute__((overloadable)) step(float, float8);
+extern float16 __attribute__((overloadable)) step(float, float16);
+
+extern float __attribute__((overloadable)) smoothstep(float, float, float);
+extern float2 __attribute__((overloadable)) smoothstep(float2, float2, float2);
+extern float3 __attribute__((overloadable)) smoothstep(float3, float3, float3);
+extern float4 __attribute__((overloadable)) smoothstep(float4, float4, float4);
+extern float8 __attribute__((overloadable)) smoothstep(float8, float8, float8);
+extern float16 __attribute__((overloadable)) smoothstep(float16, float16, float16);
+extern float2 __attribute__((overloadable)) smoothstep(float, float, float2);
+extern float3 __attribute__((overloadable)) smoothstep(float, float, float3);
+extern float4 __attribute__((overloadable)) smoothstep(float, float, float4);
+extern float8 __attribute__((overloadable)) smoothstep(float, float, float8);
+extern float16 __attribute__((overloadable)) smoothstep(float, float, float16);
+
+extern float __attribute__((overloadable)) sign(float);
+extern float2 __attribute__((overloadable)) sign(float2);
+extern float3 __attribute__((overloadable)) sign(float3);
+extern float4 __attribute__((overloadable)) sign(float4);
+extern float8 __attribute__((overloadable)) sign(float8);
+extern float16 __attribute__((overloadable)) sign(float16);
+
+// 6.11.5
+extern float3 __attribute__((overloadable)) cross(float2, float2);
+extern float3 __attribute__((overloadable)) cross(float3, float3);
+extern float4 __attribute__((overloadable)) cross(float4, float4);
+
+extern float __attribute__((overloadable)) dot(float, float);
+extern float __attribute__((overloadable)) dot(float2, float2);
+extern float __attribute__((overloadable)) dot(float3, float3);
+extern float __attribute__((overloadable)) dot(float4, float4);
+
+extern float __attribute__((overloadable)) distance(float, float);
+extern float __attribute__((overloadable)) distance(float2, float2);
+extern float __attribute__((overloadable)) distance(float3, float3);
+extern float __attribute__((overloadable)) distance(float4, float4);
+
+extern float __attribute__((overloadable)) length(float);
+extern float __attribute__((overloadable)) length(float2);
+extern float __attribute__((overloadable)) length(float3);
+extern float __attribute__((overloadable)) length(float4);
+
+extern float __attribute__((overloadable)) normalize(float);
+extern float2 __attribute__((overloadable)) normalize(float2);
+extern float3 __attribute__((overloadable)) normalize(float3);
+extern float4 __attribute__((overloadable)) normalize(float4);
+
+
+// RS specific functions
extern float randf(float);
extern float randf2(float, float);
-extern float fracf(float);
-extern float lerpf(float, float, float);
extern float mapf(float, float, float, float, float);
-*/
+
+extern float __attribute__((overloadable)) frac(float);
+
+extern void debugP(int, void *);
+extern void debugPi(int, int);
+extern void debugPf(int, float);
+extern void debugF(const char *, float);
+extern void debugI32(const char *, int);
+extern void debugHexI32(const char *, int);
+
+extern void matrixLoadIdentity(void *mat);
+extern void matrixLoadFloat(void *mat, const float *f);
+extern void matrixLoadMat(void *mat, const void *newmat);
+extern void matrixLoadRotate(void *mat, float rot, float x, float y, float z);
+extern void matrixLoadScale(void *mat, float x, float y, float z);
+extern void matrixLoadTranslate(void *mat, float x, float y, float z);
+extern void matrixLoadMultiply(void *mat, const void *lhs, const void *rhs);
+extern void matrixMultiply(void *mat, const void *rhs);
+extern void matrixRotate(void *mat, float rot, float x, float y, float z);
+extern void matrixScale(void *mat, float x, float y, float z);
+extern void matrixTranslate(void *mat, float x, float y, float z);
+