A DESCRIPTION OF THE REQUEST : A common code sequence in 3d code is this: float value = ....; float result = (float)Math.sqrt(value); Disabled code obtained from 1.6.0-rc-fastdebug-b90-debug with the following options: -XX:+PrintCompilation -XX:+PrintInlining -XX:+PrintOptoAssembly JUSTIFICATION : unneccessary float point format conversion. EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - SQRTSS XMM1a,XMM0a ACTUAL - CVTSS2SD XMM0a,XMM1a # D-round SQRTSD XMM0a,XMM0a CVTSD2SS XMM1a,XMM0a # F-round ---------- BEGIN SOURCE ---------- public class Vector3f { public float x, y, z; public Vector3f normalize() { float x = this.x; float y = this.y; float z = this.z; float l = (float)Math.sqrt(x*x + y*y + z*z); this.x = x / l; this.y = y / l; this.z = z / l; return this; } } ---------- END SOURCE ----------
|