rewrite +=, -= etc for floats

This commit is contained in:
Brian
2006-12-19 08:58:56 -07:00
parent 8e20c417d4
commit 194bc5afbd
2 changed files with 536 additions and 529 deletions
+23 -17
View File
@@ -326,32 +326,38 @@ mat4 __constructor (const vec4 r0, const vec4 r1, const vec4 r2, const vec4 r3)
}
//// operator +=
void __operator += (inout float a, const float b) {
__asm float_add a, a, b;
void __operator += (inout float a, const float b)
{
__asm vec4_add a.x, a, b;
}
void __operator -= (inout float a, const float b)
{
__asm vec4_subtract a.x, a, b;
}
void __operator *= (inout float a, const float b)
{
__asm vec4_multiply a.x, a, b;
}
void __operator /= (inout float a, const float b)
{
float w; // = 1 / b
__asm float_rcp w.x, b;
__asm vec4_multiply a.x, a, w;
}
float __operator - (const float a) {
float b;
__asm float_negate b, a;
return b;
}
void __operator -= (inout float a, const float b) {
float c;
__asm float_negate c, b;
__asm float_add a, a, c;
}
void __operator *= (inout float a, const float b) {
__asm float_multiply a, a, b;
}
void __operator /= (inout float a, const float b) {
__asm float_divide a, a, b;
}
float __operator + (const float a, const float b) {
// float c;
// __asm float_add c, a, b;
File diff suppressed because it is too large Load Diff