United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6452568 i486 use SQRTSS instead of SQRTSD for (float)Math.sqrt()
JDK-6452568 : i486 use SQRTSS instead of SQRTSD for (float)Math.sqrt()

Details
Type:
Enhancement
Submit Date:
2006-07-25
Status:
Resolved
Updated Date:
2010-04-03
Project Name:
JDK
Resolved Date:
2006-11-14
Component:
hotspot
OS:
windows_xp
Sub-Component:
compiler
CPU:
x86
Priority:
P4
Resolution:
Fixed
Affected Versions:
6
Fixed Versions:
hs10 (b03)

Related Reports
Backport:
Backport:

Sub Tasks

Description
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 ----------

                                    

Comments
SUGGESTED FIX

Add the next optimization for SSE >= 1:

replace
  CVTSS2SD XMM0a,XMM1a    # D-round
  SQRTSD XMM0a,XMM0a
  CVTSD2SS XMM1a,XMM0a    # F-round

with:
  SQRTSS XMM0a,XMM1a
                                     
2006-07-28
EVALUATION

Missed optimization.
                                     
2006-07-28
SUGGESTED FIX

Webrev:                 http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2006/20060913084920.kvn.6452568/workspace/webrevs/webrev-2006.09.13/index.html
                                     
2006-09-13



Hardware and Software, Engineered to Work Together