Iterations: 100 Instructions: 4900 Total Cycles: 2831 Total uOps: 6400 Dispatch Width: 6 uOps Per Cycle: 2.26 IPC: 1.73 Block RThroughput: 10.7 Cycles with backend pressure increase [ 23.63% ] Throughput Bottlenecks: Resource Pressure [ 18.05% ] - SKLPort0 [ 14.34% ] - SKLPort1 [ 12.19% ] - SKLPort2 [ 0.53% ] - SKLPort3 [ 0.53% ] - SKLPort5 [ 12.19% ] - SKLPort6 [ 17.06% ] Data Dependencies: [ 9.25% ] - Register Dependencies [ 9.25% ] - Memory Dependencies [ 0.00% ] Critical sequence based on the simulation: Instruction Dependency Information +----< 47. mov esi, 5 | | < loop carried > | | 0. lea rcx, [rdi + 44] +----> 1. test esi, esi ## REGISTER dependency: esi +----> 2. cmove rcx, rdi ## REGISTER dependency: flags | 3. movzx edi, word ptr [rcx + 8] | 4. cmp rdi, 6 | 5. jae .LBB162_20 | 6. xor eax, eax | 7. test rdi, rdi | 8. je .LBB162_19 +----> 9. add rcx, 8 ## REGISTER dependency: rcx +----> 10. cmp dword ptr [rcx + 4], edx ## REGISTER dependency: rcx +----> 11. jne .LBB162_4 ## REGISTER dependency: flags | 12. add rcx, 4 | 13. mov eax, dword ptr [rcx + 4] | 14. ret | 15. lea rsi, [8*rdi + 4] | 16. cmp esi, 12 | 17. jne .LBB162_5 | 18. ret | 19. cmp dword ptr [rcx + 12], edx | 20. jne .LBB162_7 | 21. add rcx, 12 | 22. jmp .LBB162_18 | 23. cmp esi, 20 | 24. je .LBB162_19 +----> 25. cmp dword ptr [rcx + 20], edx ## RESOURCE interference: SKLPort6 [ probability: 2% ] +----> 26. jne .LBB162_10 ## REGISTER dependency: flags | 27. add rcx, 20 | 28. jmp .LBB162_18 | 29. cmp esi, 28 | 30. je .LBB162_19 | 31. cmp dword ptr [rcx + 28], edx | 32. jne .LBB162_13 | 33. add rcx, 28 +----> 34. jmp .LBB162_18 ## RESOURCE interference: SKLPort0 [ probability: 15% ] +----> 35. cmp esi, 36 ## RESOURCE interference: SKLPort0 [ probability: 28% ] | 36. je .LBB162_19 +----> 37. cmp dword ptr [rcx + 36], edx ## RESOURCE interference: SKLPort5 [ probability: 15% ] +----> 38. jne .LBB162_16 ## REGISTER dependency: flags | 39. add rcx, 36 +----> 40. jmp .LBB162_18 ## RESOURCE interference: SKLPort0 [ probability: 1% ] +----> 41. cmp esi, 44 ## RESOURCE interference: SKLPort0 [ probability: 6% ] +----> 42. je .LBB162_19 ## REGISTER dependency: flags | 43. add rcx, 44 +----> 44. jmp .LBB162_18 ## RESOURCE interference: SKLPort0 [ probability: 27% ] +----> 45. push rax ## RESOURCE interference: SKLPort0 [ probability: 5% ] | 46. lea rdx, [rip + .L__unnamed_65] | 47. mov esi, 5 +----> 48. call qword ptr [rip + core::slice::index::slice_end_index_len_fail@GOTPCREL] ## REGISTER dependency: rsp | | < loop carried > | +----> 0. lea rcx, [rdi + 44] ## RESOURCE interference: SKLPort5 [ probability: 25% ] Instruction Info: [1]: #uOps [2]: Latency [3]: RThroughput [4]: MayLoad [5]: MayStore [6]: HasSideEffects (U) [1] [2] [3] [4] [5] [6] Instructions: 1 1 0.50 lea rcx, [rdi + 44] 1 1 0.25 test esi, esi 1 1 0.50 cmove rcx, rdi 1 5 0.50 * movzx edi, word ptr [rcx + 8] 1 1 0.25 cmp rdi, 6 1 1 0.50 jae .LBB162_20 1 0 0.17 xor eax, eax 1 1 0.25 test rdi, rdi 1 1 0.50 je .LBB162_19 1 1 0.25 add rcx, 8 2 6 0.50 * cmp dword ptr [rcx + 4], edx 1 1 0.50 jne .LBB162_4 1 1 0.25 add rcx, 4 1 5 0.50 * mov eax, dword ptr [rcx + 4] 3 7 1.00 U ret 1 1 0.50 lea rsi, [8*rdi + 4] 1 1 0.25 cmp esi, 12 1 1 0.50 jne .LBB162_5 3 7 1.00 U ret 2 6 0.50 * cmp dword ptr [rcx + 12], edx 1 1 0.50 jne .LBB162_7 1 1 0.25 add rcx, 12 1 1 0.50 jmp .LBB162_18 1 1 0.25 cmp esi, 20 1 1 0.50 je .LBB162_19 2 6 0.50 * cmp dword ptr [rcx + 20], edx 1 1 0.50 jne .LBB162_10 1 1 0.25 add rcx, 20 1 1 0.50 jmp .LBB162_18 1 1 0.25 cmp esi, 28 1 1 0.50 je .LBB162_19 2 6 0.50 * cmp dword ptr [rcx + 28], edx 1 1 0.50 jne .LBB162_13 1 1 0.25 add rcx, 28 1 1 0.50 jmp .LBB162_18 1 1 0.25 cmp esi, 36 1 1 0.50 je .LBB162_19 2 6 0.50 * cmp dword ptr [rcx + 36], edx 1 1 0.50 jne .LBB162_16 1 1 0.25 add rcx, 36 1 1 0.50 jmp .LBB162_18 1 1 0.25 cmp esi, 44 1 1 0.50 je .LBB162_19 1 1 0.25 add rcx, 44 1 1 0.50 jmp .LBB162_18 3 2 1.00 * push rax 1 1 0.50 lea rdx, [rip + .L__unnamed_65] 1 1 0.25 mov esi, 5 5 7 1.00 * call qword ptr [rip + core::slice::index::slice_end_index_len_fail@GOTPCREL] Resources: [0] - SKLDivider [1] - SKLFPDivider [2] - SKLPort0 [3] - SKLPort1 [4] - SKLPort2 [5] - SKLPort3 [6] - SKLPort4 [7] - SKLPort5 [8] - SKLPort6 [9] - SKLPort7 Resource pressure per iteration: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] - - 12.69 11.61 5.00 5.00 2.00 12.03 12.67 2.00 Resource pressure by instruction: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions: - - - 0.94 - - - 0.06 - - lea rcx, [rdi + 44] - - 0.21 0.24 - - - 0.28 0.27 - test esi, esi - - 0.57 - - - - - 0.43 - cmove rcx, rdi - - - - 0.44 0.56 - - - - movzx edi, word ptr [rcx + 8] - - 0.27 0.51 - - - 0.18 0.04 - cmp rdi, 6 - - 0.45 - - - - - 0.55 - jae .LBB162_20 - - - - - - - - - - xor eax, eax - - 0.47 0.18 - - - 0.31 0.04 - test rdi, rdi - - 0.55 - - - - - 0.45 - je .LBB162_19 - - - 0.52 - - - 0.48 - - add rcx, 8 - - - 0.51 0.53 0.47 - 0.48 0.01 - cmp dword ptr [rcx + 4], edx - - 0.45 - - - - - 0.55 - jne .LBB162_4 - - 0.65 0.31 - - - 0.03 0.01 - add rcx, 4 - - - - 0.06 0.94 - - - - mov eax, dword ptr [rcx + 4] - - 0.05 0.27 0.67 0.33 - 0.68 1.00 - ret - - - 0.48 - - - 0.52 - - lea rsi, [8*rdi + 4] - - - 0.47 - - - 0.53 - - cmp esi, 12 - - 0.71 - - - - - 0.29 - jne .LBB162_5 - - 0.24 0.23 0.47 0.53 - 0.53 1.00 - ret - - 0.22 0.29 1.00 - - 0.48 0.01 - cmp dword ptr [rcx + 12], edx - - 0.45 - - - - - 0.55 - jne .LBB162_7 - - 0.03 0.29 - - - 0.63 0.05 - add rcx, 12 - - 0.71 - - - - - 0.29 - jmp .LBB162_18 - - - 0.72 - - - 0.28 - - cmp esi, 20 - - 0.28 - - - - - 0.72 - je .LBB162_19 - - 0.03 0.42 - 1.00 - 0.51 0.04 - cmp dword ptr [rcx + 20], edx - - 0.70 - - - - - 0.30 - jne .LBB162_10 - - 0.01 0.51 - - - 0.33 0.15 - add rcx, 20 - - 0.72 - - - - - 0.28 - jmp .LBB162_18 - - - 0.30 - - - 0.55 0.15 - cmp esi, 28 - - 0.32 - - - - - 0.68 - je .LBB162_19 - - 0.20 0.50 1.00 - - 0.10 0.20 - cmp dword ptr [rcx + 28], edx - - 0.74 - - - - - 0.26 - jne .LBB162_13 - - 0.19 0.12 - - - 0.68 0.01 - add rcx, 28 - - 0.37 - - - - - 0.63 - jmp .LBB162_18 - - - 0.55 - - - 0.45 - - cmp esi, 36 - - 0.32 - - - - - 0.68 - je .LBB162_19 - - 0.03 0.45 - 1.00 - 0.51 0.01 - cmp dword ptr [rcx + 36], edx - - 0.74 - - - - - 0.26 - jne .LBB162_16 - - 0.21 0.30 - - - 0.26 0.23 - add rcx, 36 - - 0.72 - - - - - 0.28 - jmp .LBB162_18 - - - 0.26 - - - 0.50 0.24 - cmp esi, 44 - - 0.32 - - - - - 0.68 - je .LBB162_19 - - - 0.46 - - - 0.54 - - add rcx, 44 - - 0.69 - - - - - 0.31 - jmp .LBB162_18 - - - 0.54 - - 1.00 0.46 - 1.00 push rax - - - 0.70 - - - 0.30 - - lea rdx, [rip + .L__unnamed_65] - - - 0.32 - - - 0.66 0.02 - mov esi, 5 - - 0.07 0.22 0.83 0.17 1.00 0.71 1.00 1.00 call qword ptr [rip + core::slice::index::slice_end_index_len_fail@GOTPCREL] Timeline view: 0123456789 0123456789 0123456789 Index 0123456789 0123456789 0123456789 0123456 [0,0] DeER . . . . . . . . . . . . .. lea rcx, [rdi + 44] [0,1] DeER . . . . . . . . . . . . .. test esi, esi [0,2] D=eER. . . . . . . . . . . . .. cmove rcx, rdi [0,3] D==eeeeeER. . . . . . . . . . . .. movzx edi, word ptr [rcx + 8] [0,4] D=======eER . . . . . . . . . . .. cmp rdi, 6 [0,5] D========eER . . . . . . . . . . .. jae .LBB162_20 [0,6] .D---------R . . . . . . . . . . .. xor eax, eax [0,7] .D======eE-R . . . . . . . . . . .. test rdi, rdi [0,8] .D=======eER . . . . . . . . . . .. je .LBB162_19 [0,9] .D=eE------R . . . . . . . . . . .. add rcx, 8 [0,10] .D==eeeeeeER . . . . . . . . . . .. cmp dword ptr [rcx + 4], edx [0,11] . D=======eER . . . . . . . . . . .. jne .LBB162_4 [0,12] . D=eE------R . . . . . . . . . . .. add rcx, 4 [0,13] . D==eeeeeE-R . . . . . . . . . . .. mov eax, dword ptr [rcx + 4] [0,14] . DeeeeeeeE-R . . . . . . . . . . .. ret [0,15] . D====eE--R . . . . . . . . . . .. lea rsi, [8*rdi + 4] [0,16] . D=====eE-R . . . . . . . . . . .. cmp esi, 12 [0,17] . D======eER . . . . . . . . . . .. jne .LBB162_5 [0,18] . DeeeeeeeER . . . . . . . . . . .. ret [0,19] . DeeeeeeER . . . . . . . . . . .. cmp dword ptr [rcx + 12], edx [0,20] . D======eER . . . . . . . . . . .. jne .LBB162_7 [0,21] . DeE------R . . . . . . . . . . .. add rcx, 12 [0,22] . DeE------R . . . . . . . . . . .. jmp .LBB162_18 [0,23] . D====eE--R . . . . . . . . . . .. cmp esi, 20 [0,24] . D=====eER . . . . . . . . . . .. je .LBB162_19 [0,25] . DeeeeeeER . . . . . . . . . . .. cmp dword ptr [rcx + 20], edx [0,26] . D======eER. . . . . . . . . . .. jne .LBB162_10 [0,27] . DeE------R. . . . . . . . . . .. add rcx, 20 [0,28] . DeE------R. . . . . . . . . . .. jmp .LBB162_18 [0,29] . .D===eE--R. . . . . . . . . . .. cmp esi, 28 [0,30] . .D=====eER. . . . . . . . . . .. je .LBB162_19 [0,31] . .DeeeeeeER. . . . . . . . . . .. cmp dword ptr [rcx + 28], edx [0,32] . .D======eER . . . . . . . . . .. jne .LBB162_13 [0,33] . .DeE------R . . . . . . . . . .. add rcx, 28 [0,34] . . DeE-----R . . . . . . . . . .. jmp .LBB162_18 [0,35] . . D==eE---R . . . . . . . . . .. cmp esi, 36 [0,36] . . D=====eER . . . . . . . . . .. je .LBB162_19 [0,37] . . D===eeeeeeER . . . . . . . . . .. cmp dword ptr [rcx + 36], edx [0,38] . . D=========eER. . . . . . . . . .. jne .LBB162_16 [0,39] . . D==eE------R. . . . . . . . . .. add rcx, 36 [0,40] . . D=====eE---R. . . . . . . . . .. jmp .LBB162_18 [0,41] . . D===eE-----R. . . . . . . . . .. cmp esi, 44 [0,42] . . D=====eE---R. . . . . . . . . .. je .LBB162_19 [0,43] . . D===eE-----R. . . . . . . . . .. add rcx, 44 [0,44] . . D======eE--R. . . . . . . . . .. jmp .LBB162_18 [0,45] . . D===eeE---R. . . . . . . . . .. push rax [0,46] . . D===eE----R. . . . . . . . . .. lea rdx, [rip + .L__unnamed_65] [0,47] . . D====eE---R. . . . . . . . . .. mov esi, 5 Truncated display due to cycle limit Average Wait times (based on the timeline view): [0]: Executions [1]: Average time spent waiting in a scheduler's queue [2]: Average time spent waiting in a scheduler's queue while ready [3]: Average time elapsed from WB until retire stage [0] [1] [2] [3] 0. 10 4.2 3.3 90.6 lea rcx, [rdi + 44] 1. 10 3.2 0.1 90.7 test esi, esi 2. 10 5.1 0.3 88.9 cmove rcx, rdi 3. 10 6.1 0.0 84.4 movzx edi, word ptr [rcx + 8] 4. 10 11.1 0.0 83.5 cmp rdi, 6 5. 10 12.1 0.0 82.6 jae .LBB162_20 6. 10 0.0 0.0 95.6 xor eax, eax 7. 10 10.1 0.0 83.6 test rdi, rdi 8. 10 11.1 0.0 82.6 je .LBB162_19 9. 10 5.1 0.0 88.6 add rcx, 8 10. 10 6.1 0.0 82.6 cmp dword ptr [rcx + 4], edx 11. 10 12.0 0.0 81.7 jne .LBB162_4 12. 10 5.1 0.0 87.7 add rcx, 4 13. 10 6.1 0.0 82.7 mov eax, dword ptr [rcx + 4] 14. 10 4.2 4.2 82.6 ret 15. 10 9.1 0.1 83.6 lea rsi, [8*rdi + 4] 16. 10 9.2 0.0 82.6 cmp esi, 12 17. 10 10.2 0.0 81.6 jne .LBB162_5 18. 10 4.2 4.2 81.6 ret 19. 10 4.3 0.2 81.5 cmp dword ptr [rcx + 12], edx 20. 10 10.3 0.0 80.6 jne .LBB162_7 21. 10 2.5 0.5 74.6 add rcx, 12 22. 10 2.4 2.4 74.7 jmp .LBB162_18 23. 10 4.9 0.3 72.2 cmp esi, 20 24. 10 6.4 0.9 70.3 je .LBB162_19 25. 10 3.3 0.2 68.4 cmp dword ptr [rcx + 20], edx 26. 10 8.7 0.0 67.5 jne .LBB162_10 27. 10 2.6 0.1 73.6 add rcx, 20 28. 10 2.4 2.4 73.8 jmp .LBB162_18 29. 10 4.9 1.4 70.9 cmp esi, 28 30. 10 6.5 0.6 69.3 je .LBB162_19 31. 10 2.6 0.0 67.6 cmp dword ptr [rcx + 28], edx 32. 10 8.6 0.0 66.7 jne .LBB162_13 33. 10 3.0 0.4 72.3 add rcx, 28 34. 10 2.5 2.5 72.4 jmp .LBB162_18 35. 10 4.4 1.6 70.5 cmp esi, 36 36. 10 5.9 1.1 68.4 je .LBB162_19 37. 10 3.3 0.3 66.3 cmp dword ptr [rcx + 36], edx 38. 10 9.3 0.0 65.4 jne .LBB162_16 39. 10 4.2 1.6 70.1 add rcx, 36 40. 10 4.0 4.0 70.3 jmp .LBB162_18 41. 10 4.1 2.1 69.6 cmp esi, 44 42. 10 6.3 1.2 67.4 je .LBB162_19 43. 10 4.6 0.0 69.1 add rcx, 44 44. 10 5.8 5.8 67.9 jmp .LBB162_18 45. 10 4.0 1.7 67.7 push rax 46. 10 2.4 2.4 70.3 lea rdx, [rip + .L__unnamed_65] 47. 10 4.2 4.2 68.5 mov esi, 5 48. 10 5.8 0.8 0.0 call qword ptr [rip + core::slice::index::slice_end_index_len_fail@GOTPCREL] 10 5.7 1.0 74.8