Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6479927
Votes 0
Synopsis 2x slowdown in loop storing float constant
Category hotspot:compiler2
Reported Against
Release Fixed hs10(b03), 6u4(b03) (Bug ID:2171851) , 7(b03) (Bug ID:2176786)
State 10-Fix Delivered, bug
Priority: 4-Low
Related Bugs 6490942
Submit Date 09-OCT-2006
Description
2x slowdown from 6.0 to 7.0

   for (int i = 0; i < 10000; i++) {
         array[i] = 1234.5678f;

Possible issue with costs in ad file.

6.0 code

080   B8: #	B8 B9 <- B7 B8 	Loop: B8-B8 inner stride: not constant main Freq: 5.46993e+06
080   	MOV    [EBX + #12 + EDI << #2],#1234.567749	# store float
088   	MOV    [EBX + #16 + EDI << #2],#1234.567749	# store float
090   	MOV    [EBX + #20 + EDI << #2],#1234.567749	# store float
098   	MOV    [EBX + #24 + EDI << #2],#1234.567749	# store float
0a0   	MOV    [EBX + #28 + EDI << #2],#1234.567749	# store float
0a8   	MOV    [EBX + #32 + EDI << #2],#1234.567749	# store float
0b0   	MOV    [EBX + #36 + EDI << #2],#1234.567749	# store float
0b8   	MOV    [EBX + #40 + EDI << #2],#1234.567749	# store float
0c0   	MOV    [EBX + #44 + EDI << #2],#1234.567749	# store float
0c8   	MOV    [EBX + #48 + EDI << #2],#1234.567749	# store float
0d0   	MOV    [EBX + #52 + EDI << #2],#1234.567749	# store float
0d8   	MOV    [EBX + #56 + EDI << #2],#1234.567749	# store float
0e0   	MOV    [EBX + #60 + EDI << #2],#1234.567749	# store float
0e8   	MOV    [EBX + #64 + EDI << #2],#1234.567749	# store float
0f0   	MOV    [EBX + #68 + EDI << #2],#1234.567749	# store float
0f8   	MOV    [EBX + #72 + EDI << #2],#1234.567749	# store float
100   	ADD    EDI,#16
103   	CMP    EDI,ECX
105   	Jlt    B8	# Loop end  P=0.999900 C=5470208.000000

1.7 code

0c0   B8: #	B8 B9 <- B7 B8 	Loop: B8-B8 inner stride: not constant main of N70 Freq: 191478
0c0   	MOVSS  [EAX + #12 + EBP << #2],XMM4a
0c6   	MOVSS  [EAX + #16 + EBP << #2],XMM5a
0cc   	MOVSS  [EAX + #20 + EBP << #2],XMM2a
0d2   	MOVSS  [EAX + #24 + EBP << #2],XMM3a
0d8   	MOVSS  [EAX + #28 + EBP << #2],XMM0a
0de   	MOVSS  XMM1a,[#1234.567749]
0e6   	MOVSS  [EAX + #32 + EBP << #2],XMM1a
0ec   	MOVSS  XMM1a,[#1234.567749]
0f4   	MOVSS  [EAX + #36 + EBP << #2],XMM1a
0fa   	MOVSS  XMM1a,[#1234.567749]
102   	MOVSS  [EAX + #40 + EBP << #2],XMM1a
108   	MOVSS  XMM1a,[#1234.567749]
110   	MOVSS  [EAX + #44 + EBP << #2],XMM1a
116   	MOVSS  XMM1a,[#1234.567749]
11e   	MOVSS  [EAX + #48 + EBP << #2],XMM1a
124   	MOVSS  XMM1a,[#1234.567749]
12c   	MOVSS  [EAX + #52 + EBP << #2],XMM1a
132   	MOVSS  XMM1a,[#1234.567749]
13a   	MOVSS  [EAX + #56 + EBP << #2],XMM1a
140   	MOVSS  XMM1a,[#1234.567749]
148   	MOVSS  [EAX + #60 + EBP << #2],XMM1a
14e   	MOVSS  XMM1a,[#1234.567749]
156   	MOVSS  [EAX + #64 + EBP << #2],XMM1a
15c   	MOVSS  XMM1a,[#1234.567749]
164   	MOVSS  [EAX + #68 + EBP << #2],XMM1a
16a   	MOVSS  XMM1a,[#1234.567749]
172   	MOVSS  [EAX + #72 + EBP << #2],XMM1a
178   	ADD    EBP,#16
17b   	CMP    EBP,ECX
17d   	Jlt    B8	# Loop end  P=0.999901 C=191488.000000
Posted Date : 2006-10-09 22:12:00.0
Work Around
N/A
Evaluation
Introduced during the fix for 6452568.
The cost of load float constant into XMM and store it into a memory
dominates the move from immediate 32bits bits value to a memory:
  instruct storeF_imm( memory mem, immF src)
Posted Date : 2006-10-09 22:40:15.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang