-
Enhancement
-
Resolution: Duplicate
-
P3
-
None
-
hs25, 8, 9, 10
-
generic
-
generic
LCM place all loads at the beginning of the loop and then use loaded values. And loaded values are spilled on stack since there are not enough registers :
java -server ChecksumTime 10000
281 B19: # B19 B20 <- B18 B19 Loop: B19-B19 inner main of N145 Freq: 607.991
281 MOV ECX,[ESP + #4]
285 MOVZX8 ECX,[ECX + #12 + EBX] # ubyte -> int
28a MOV [ESP + #56],ECX
28e MOV EDI,[ESP + #4]
292 MOVZX8 ECX,[EDI + #13 + EBX] # ubyte -> int
297 MOV [ESP + #96],ECX
29b MOVZX8 ECX,[EDI + #14 + EBX] # ubyte -> int
2a0 MOV [ESP + #100],ECX
2a4 MOVZX8 ECX,[EDI + #27 + EBX] # ubyte -> int
2a9 MOV [ESP + #12],ECX
2ad MOVZX8 ECX,[EDI + #26 + EBX] # ubyte -> int
2b2 MOV [ESP + #16],ECX
2b6 MOVZX8 ECX,[EDI + #25 + EBX] # ubyte -> int
2bb MOV [ESP + #20],ECX
2bf MOVZX8 ECX,[EDI + #24 + EBX] # ubyte -> int
2c4 MOV [ESP + #24],ECX
2c8 MOVZX8 ECX,[EDI + #23 + EBX] # ubyte -> int
2cd MOV [ESP + #28],ECX
2d1 MOVZX8 ECX,[EDI + #22 + EBX] # ubyte -> int
2d6 MOV [ESP + #32],ECX
2da MOVZX8 ECX,[EDI + #21 + EBX] # ubyte -> int
2df MOV [ESP + #36],ECX
2e3 MOVZX8 ECX,[EDI + #20 + EBX] # ubyte -> int
2e8 MOV [ESP + #40],ECX
2ec MOVZX8 ECX,[EDI + #19 + EBX] # ubyte -> int
2f1 MOV [ESP + #44],ECX
2f5 MOVZX8 ECX,[EDI + #18 + EBX] # ubyte -> int
2fa MOV [ESP + #48],ECX
2fe MOVZX8 EAX,[EDI + #17 + EBX] # ubyte -> int
303 MOVZX8 ECX,[EDI + #16 + EBX] # ubyte -> int
308 MOV EDX,EDI
30a MOVZX8 EDX,[EDX + #15 + EBX] # ubyte -> int
30f MOV EDI,[ESP + #8]
313 ADD EDI,[ESP + #56]
317 MOV [ESP + #8],EDI
31b ADD EBP,EDI
31d MOV EDI,[ESP + #96]
321 ADD EDI,[ESP + #8]
325 MOV [ESP + #96],EDI
329 ADD EBP,EDI
32b MOV EDI,[ESP + #100]
32f ADD EDI,[ESP + #96]
333 ADD EBP,EDI
335 ADD EDX,EDI
337 ADD EBP,EDX
339 ADD ECX,EDX
33b ADD EBP,ECX
33d ADD EAX,ECX
33f ADD EBP,EAX
341 MOV ECX,[ESP + #48]
345 ADD ECX,EAX
347 ADD EBP,ECX
349 MOV EDI,[ESP + #44]
34d ADD EDI,ECX
34f ADD EBP,EDI
351 MOV ECX,[ESP + #40]
355 ADD ECX,EDI
357 ADD EBP,ECX
359 MOV EDI,[ESP + #36]
35d ADD EDI,ECX
35f ADD EBP,EDI
361 MOV ECX,[ESP + #32]
365 ADD ECX,EDI
367 ADD EBP,ECX
369 MOV EDI,[ESP + #28]
36d ADD EDI,ECX
36f ADD EBP,EDI
371 MOV ECX,[ESP + #24]
375 ADD ECX,EDI
377 ADD EBP,ECX
379 MOV EDI,[ESP + #20]
37d ADD EDI,ECX
37f ADD EBP,EDI
381 MOV ECX,[ESP + #16]
385 ADD ECX,EDI
387 ADD EBP,ECX
389 MOV EAX,[ESP + #12]
38d ADD EAX,ECX
38f MOV [ESP + #8],EAX
393 MOV ECX,[ESP + #0]
396 MOV [ECX + #8],EAX ! Field Adler32J.adler
399 ADD EBP,EAX
39b ADD EBX,#16
39e CMP EBX,ESI
3a0 Jl B19 # Loop end P=0.998358 C=257792.000000
java -server ChecksumTime 10000
281 B19: # B19 B20 <- B18 B19 Loop: B19-B19 inner main of N145 Freq: 607.991
281 MOV ECX,[ESP + #4]
285 MOVZX8 ECX,[ECX + #12 + EBX] # ubyte -> int
28a MOV [ESP + #56],ECX
28e MOV EDI,[ESP + #4]
292 MOVZX8 ECX,[EDI + #13 + EBX] # ubyte -> int
297 MOV [ESP + #96],ECX
29b MOVZX8 ECX,[EDI + #14 + EBX] # ubyte -> int
2a0 MOV [ESP + #100],ECX
2a4 MOVZX8 ECX,[EDI + #27 + EBX] # ubyte -> int
2a9 MOV [ESP + #12],ECX
2ad MOVZX8 ECX,[EDI + #26 + EBX] # ubyte -> int
2b2 MOV [ESP + #16],ECX
2b6 MOVZX8 ECX,[EDI + #25 + EBX] # ubyte -> int
2bb MOV [ESP + #20],ECX
2bf MOVZX8 ECX,[EDI + #24 + EBX] # ubyte -> int
2c4 MOV [ESP + #24],ECX
2c8 MOVZX8 ECX,[EDI + #23 + EBX] # ubyte -> int
2cd MOV [ESP + #28],ECX
2d1 MOVZX8 ECX,[EDI + #22 + EBX] # ubyte -> int
2d6 MOV [ESP + #32],ECX
2da MOVZX8 ECX,[EDI + #21 + EBX] # ubyte -> int
2df MOV [ESP + #36],ECX
2e3 MOVZX8 ECX,[EDI + #20 + EBX] # ubyte -> int
2e8 MOV [ESP + #40],ECX
2ec MOVZX8 ECX,[EDI + #19 + EBX] # ubyte -> int
2f1 MOV [ESP + #44],ECX
2f5 MOVZX8 ECX,[EDI + #18 + EBX] # ubyte -> int
2fa MOV [ESP + #48],ECX
2fe MOVZX8 EAX,[EDI + #17 + EBX] # ubyte -> int
303 MOVZX8 ECX,[EDI + #16 + EBX] # ubyte -> int
308 MOV EDX,EDI
30a MOVZX8 EDX,[EDX + #15 + EBX] # ubyte -> int
30f MOV EDI,[ESP + #8]
313 ADD EDI,[ESP + #56]
317 MOV [ESP + #8],EDI
31b ADD EBP,EDI
31d MOV EDI,[ESP + #96]
321 ADD EDI,[ESP + #8]
325 MOV [ESP + #96],EDI
329 ADD EBP,EDI
32b MOV EDI,[ESP + #100]
32f ADD EDI,[ESP + #96]
333 ADD EBP,EDI
335 ADD EDX,EDI
337 ADD EBP,EDX
339 ADD ECX,EDX
33b ADD EBP,ECX
33d ADD EAX,ECX
33f ADD EBP,EAX
341 MOV ECX,[ESP + #48]
345 ADD ECX,EAX
347 ADD EBP,ECX
349 MOV EDI,[ESP + #44]
34d ADD EDI,ECX
34f ADD EBP,EDI
351 MOV ECX,[ESP + #40]
355 ADD ECX,EDI
357 ADD EBP,ECX
359 MOV EDI,[ESP + #36]
35d ADD EDI,ECX
35f ADD EBP,EDI
361 MOV ECX,[ESP + #32]
365 ADD ECX,EDI
367 ADD EBP,ECX
369 MOV EDI,[ESP + #28]
36d ADD EDI,ECX
36f ADD EBP,EDI
371 MOV ECX,[ESP + #24]
375 ADD ECX,EDI
377 ADD EBP,ECX
379 MOV EDI,[ESP + #20]
37d ADD EDI,ECX
37f ADD EBP,EDI
381 MOV ECX,[ESP + #16]
385 ADD ECX,EDI
387 ADD EBP,ECX
389 MOV EAX,[ESP + #12]
38d ADD EAX,ECX
38f MOV [ESP + #8],EAX
393 MOV ECX,[ESP + #0]
396 MOV [ECX + #8],EAX ! Field Adler32J.adler
399 ADD EBP,EAX
39b ADD EBX,#16
39e CMP EBX,ESI
3a0 Jl B19 # Loop end P=0.998358 C=257792.000000
- duplicates
-
JDK-8134802 LCM register pressure scheduling
-
- Resolved
-