summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
588dd18)
Per a patch from Marek Olšák, we can simply multiply the incoming
value by 1/sqrt(x) instead of using rcp.
We're keeping the x==0 check to avoid generating NaN for sqrt(0).
const float nx = -x;
float r;
__asm float_rsq r, x;
const float nx = -x;
float r;
__asm float_rsq r, x;
__asm vec4_cmp __retVal, nx, r, 0.0;
}
__asm vec4_cmp __retVal, nx, r, 0.0;
}
vec2 r;
__asm float_rsq r.x, x.x;
__asm float_rsq r.y, x.y;
vec2 r;
__asm float_rsq r.x, x.x;
__asm float_rsq r.y, x.y;
- __asm float_rcp r.x, r.x;
- __asm float_rcp r.y, r.y;
__asm vec4_cmp __retVal, nx, r, zero;
}
__asm vec4_cmp __retVal, nx, r, zero;
}
__asm float_rsq r.x, x.x;
__asm float_rsq r.y, x.y;
__asm float_rsq r.z, x.z;
__asm float_rsq r.x, x.x;
__asm float_rsq r.y, x.y;
__asm float_rsq r.z, x.z;
- __asm float_rcp r.x, r.x;
- __asm float_rcp r.y, r.y;
- __asm float_rcp r.z, r.z;
__asm vec4_cmp __retVal, nx, r, zero;
}
__asm vec4_cmp __retVal, nx, r, zero;
}
__asm float_rsq r.y, x.y;
__asm float_rsq r.z, x.z;
__asm float_rsq r.w, x.w;
__asm float_rsq r.y, x.y;
__asm float_rsq r.z, x.z;
__asm float_rsq r.w, x.w;
- __asm float_rcp r.x, r.x;
- __asm float_rcp r.y, r.y;
- __asm float_rcp r.z, r.z;
- __asm float_rcp r.w, r.w;
__asm vec4_cmp __retVal, nx, r, zero;
}
__asm vec4_cmp __retVal, nx, r, zero;
}