1# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-clusters-output-file=- -analysis-clustering-epsilon=0.5 -analysis-numpoints=1 -analysis-clustering=dbscan | FileCheck -check-prefixes=CHECK-CLUSTERS-ALL,CHECK-CLUSTERS-DBSCAN-05 %s 2# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-clusters-output-file=- -analysis-clustering-epsilon=0.49 -analysis-numpoints=1 -analysis-clustering=dbscan | FileCheck -check-prefixes=CHECK-CLUSTERS-ALL,CHECK-CLUSTERS-DBSCAN-049 %s 3# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-clusters-output-file=- -analysis-clustering-epsilon=0.5 -analysis-numpoints=1 -analysis-clustering=naive | FileCheck -check-prefixes=CHECK-CLUSTERS-ALL,CHECK-CLUSTERS-NAIVE %s 4# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-clusters-output-file=- -analysis-clustering-epsilon=0.49 -analysis-numpoints=1 -analysis-clustering=naive | FileCheck -check-prefixes=CHECK-CLUSTERS-ALL,CHECK-CLUSTERS-NAIVE %s 5 6# CHECK-CLUSTERS-ALL: {{^}}cluster_id,opcode_name,config,sched_class,inverse_throughput{{$}} 7 8# By default with -analysis-clustering-epsilon=0.5 everything ends up in the 9# same cluster, because each next point is a neighbour of the previous point. 10 11# CHECK-CLUSTERS-DBSCAN-05-NEXT: {{^}}0, 12# CHECK-CLUSTERS-DBSCAN-05-SAME: ,1.00{{$}} 13# CHECK-CLUSTERS-DBSCAN-05-NEXT: {{^}}0, 14# CHECK-CLUSTERS-DBSCAN-05-SAME: ,1.50{{$}} 15# CHECK-CLUSTERS-DBSCAN-05-NEXT: {{^}}0, 16# CHECK-CLUSTERS-DBSCAN-05-SAME: ,2.00{{$}} 17# CHECK-CLUSTERS-DBSCAN-05-NEXT: {{^}}0, 18# CHECK-CLUSTERS-DBSCAN-05-SAME: ,2.50{{$}} 19 20# With -analysis-clustering-epsilon=0.49 every point goes into separate cluster. 21 22# CHECK-CLUSTERS-DBSCAN-049-NEXT: {{^}}0, 23# CHECK-CLUSTERS-DBSCAN-049-SAME: ,1.00{{$}} 24# CHECK-CLUSTERS-DBSCAN-049: {{^}}1, 25# CHECK-CLUSTERS-DBSCAN-049-SAME: ,1.50{{$}} 26# CHECK-CLUSTERS-DBSCAN-049: {{^}}2, 27# CHECK-CLUSTERS-DBSCAN-049-SAME: ,2.00{{$}} 28# CHECK-CLUSTERS-DBSCAN-049: {{^}}3, 29# CHECK-CLUSTERS-DBSCAN-049-SAME: ,2.50{{$}} 30 31# And -analysis-clustering=naive every opcode goes into separate cluster. 32 33# CHECK-CLUSTERS-NAIVE-049-NEXT: {{^}}0, 34# CHECK-CLUSTERS-NAIVE-049-SAME: ,1.50{{$}} 35# CHECK-CLUSTERS-NAIVE-049: {{^}}1, 36# CHECK-CLUSTERS-NAIVE-049-SAME: ,2.00{{$}} 37# CHECK-CLUSTERS-NAIVE-049: {{^}}2, 38# CHECK-CLUSTERS-NAIVE-049-SAME: ,2.50{{$}} 39# CHECK-CLUSTERS-NAIVE-049: {{^}}3, 40# CHECK-CLUSTERS-NAIVE-049-SAME: ,1.00{{$}} 41 42# The "value" is manually specified, not measured. 43 44--- 45mode: inverse_throughput 46key: 47 instructions: 48 - 'ROL8ri AH AH i_0x1' 49 - 'ROL8ri AL AL i_0x1' 50 - 'ROL8ri BH BH i_0x1' 51 - 'ROL8ri BL BL i_0x1' 52 - 'ROL8ri BPL BPL i_0x1' 53 - 'ROL8ri CH CH i_0x1' 54 - 'ROL8ri CL CL i_0x1' 55 - 'ROL8ri DH DH i_0x1' 56 - 'ROL8ri DIL DIL i_0x1' 57 - 'ROL8ri DL DL i_0x1' 58 - 'ROL8ri SIL SIL i_0x1' 59 - 'ROL8ri R8B R8B i_0x1' 60 - 'ROL8ri R9B R9B i_0x1' 61 - 'ROL8ri R10B R10B i_0x1' 62 - 'ROL8ri R11B R11B i_0x1' 63 - 'ROL8ri R12B R12B i_0x1' 64 - 'ROL8ri R13B R13B i_0x1' 65 - 'ROL8ri R14B R14B i_0x1' 66 - 'ROL8ri R15B R15B i_0x1' 67 config: '' 68 register_initial_values: 69 - 'AH=0x0' 70 - 'AL=0x0' 71 - 'BH=0x0' 72 - 'BL=0x0' 73 - 'BPL=0x0' 74 - 'CH=0x0' 75 - 'CL=0x0' 76 - 'DH=0x0' 77 - 'DIL=0x0' 78 - 'DL=0x0' 79 - 'SIL=0x0' 80 - 'R8B=0x0' 81 - 'R9B=0x0' 82 - 'R10B=0x0' 83 - 'R11B=0x0' 84 - 'R12B=0x0' 85 - 'R13B=0x0' 86 - 'R14B=0x0' 87 - 'R15B=0x0' 88cpu_name: bdver2 89llvm_triple: x86_64-unknown-linux-gnu 90num_repetitions: 1000000 91measurements: 92 - { key: inverse_throughput, value: 1.0000, per_snippet_value: 30.4026 } 93error: '' 94info: instruction has tied variables, using static renaming. 95assembled_snippet: 55415741564155415453B400B000B700B30040B500B500B100B60040B700B20040B60041B00041B10041B20041B30041B40041B50041B60041B700C0C401C0C001C0C701C0C30140C0C501C0C501C0C101C0C60140C0C701C0C20140C0C60141C0C00141C0C10141C0C20141C0C30141C0C40141C0C50141C0C60141C0C7015B415C415D415E415F5DC3 96... 97--- 98mode: inverse_throughput 99key: 100 instructions: 101 - 'ROL16ri AX AX i_0x1' 102 - 'ROL16ri BP BP i_0x1' 103 - 'ROL16ri BX BX i_0x1' 104 - 'ROL16ri CX CX i_0x1' 105 - 'ROL16ri DI DI i_0x1' 106 - 'ROL16ri DX DX i_0x1' 107 - 'ROL16ri SI SI i_0x1' 108 - 'ROL16ri R8W R8W i_0x1' 109 - 'ROL16ri R9W R9W i_0x1' 110 - 'ROL16ri R10W R10W i_0x1' 111 - 'ROL16ri R11W R11W i_0x1' 112 - 'ROL16ri R12W R12W i_0x1' 113 - 'ROL16ri R13W R13W i_0x1' 114 - 'ROL16ri R14W R14W i_0x1' 115 - 'ROL16ri R15W R15W i_0x1' 116 config: '' 117 register_initial_values: 118 - 'AX=0x0' 119 - 'BP=0x0' 120 - 'BX=0x0' 121 - 'CX=0x0' 122 - 'DI=0x0' 123 - 'DX=0x0' 124 - 'SI=0x0' 125 - 'R8W=0x0' 126 - 'R9W=0x0' 127 - 'R10W=0x0' 128 - 'R11W=0x0' 129 - 'R12W=0x0' 130 - 'R13W=0x0' 131 - 'R14W=0x0' 132 - 'R15W=0x0' 133cpu_name: bdver2 134llvm_triple: x86_64-unknown-linux-gnu 135num_repetitions: 1000000 136measurements: 137 - { key: inverse_throughput, value: 1.5000, per_snippet_value: 30.154 } 138error: '' 139info: instruction has tied variables, using static renaming. 140assembled_snippet: 5541574156415541545366B8000066BD000066BB000066B9000066BF000066BA000066BE00006641B800006641B900006641BA00006641BB00006641BC00006641BD00006641BE00006641BF000066C1C00166C1C50166C1C30166C1C10166C1C70166C1C20166C1C6016641C1C0016641C1C1016641C1C2016641C1C3016641C1C4016641C1C5016641C1C6016641C1C70166C1C0015B415C415D415E415F5DC3 141... 142--- 143mode: inverse_throughput 144key: 145 instructions: 146 - 'ROL32ri EAX EAX i_0x1' 147 - 'ROL32ri EBP EBP i_0x1' 148 - 'ROL32ri EBX EBX i_0x1' 149 - 'ROL32ri ECX ECX i_0x1' 150 - 'ROL32ri EDI EDI i_0x1' 151 - 'ROL32ri EDX EDX i_0x1' 152 - 'ROL32ri ESI ESI i_0x1' 153 - 'ROL32ri R8D R8D i_0x1' 154 - 'ROL32ri R9D R9D i_0x1' 155 - 'ROL32ri R10D R10D i_0x1' 156 - 'ROL32ri R11D R11D i_0x1' 157 - 'ROL32ri R12D R12D i_0x1' 158 - 'ROL32ri R13D R13D i_0x1' 159 - 'ROL32ri R14D R14D i_0x1' 160 - 'ROL32ri R15D R15D i_0x1' 161 config: '' 162 register_initial_values: 163 - 'EAX=0x0' 164 - 'EBP=0x0' 165 - 'EBX=0x0' 166 - 'ECX=0x0' 167 - 'EDI=0x0' 168 - 'EDX=0x0' 169 - 'ESI=0x0' 170 - 'R8D=0x0' 171 - 'R9D=0x0' 172 - 'R10D=0x0' 173 - 'R11D=0x0' 174 - 'R12D=0x0' 175 - 'R13D=0x0' 176 - 'R14D=0x0' 177 - 'R15D=0x0' 178cpu_name: bdver2 179llvm_triple: x86_64-unknown-linux-gnu 180num_repetitions: 1000000 181measurements: 182 - { key: inverse_throughput, value: 2.0000, per_snippet_value: 23.2762 } 183error: '' 184info: instruction has tied variables, using static renaming. 185assembled_snippet: 55415741564155415453B800000000BD00000000BB00000000B900000000BF00000000BA00000000BE0000000041B80000000041B90000000041BA0000000041BB0000000041BC0000000041BD0000000041BE0000000041BF00000000C1C001C1C501C1C301C1C101C1C701C1C201C1C60141C1C00141C1C10141C1C20141C1C30141C1C40141C1C50141C1C60141C1C701C1C0015B415C415D415E415F5DC3 186... 187--- 188mode: inverse_throughput 189key: 190 instructions: 191 - 'ROL64ri RAX RAX i_0x1' 192 - 'ROL64ri RBP RBP i_0x1' 193 - 'ROL64ri RBX RBX i_0x1' 194 - 'ROL64ri RCX RCX i_0x1' 195 - 'ROL64ri RDI RDI i_0x1' 196 - 'ROL64ri RDX RDX i_0x1' 197 - 'ROL64ri RSI RSI i_0x1' 198 - 'ROL64ri R8 R8 i_0x1' 199 - 'ROL64ri R9 R9 i_0x1' 200 - 'ROL64ri R10 R10 i_0x1' 201 - 'ROL64ri R11 R11 i_0x1' 202 - 'ROL64ri R12 R12 i_0x1' 203 - 'ROL64ri R13 R13 i_0x1' 204 - 'ROL64ri R14 R14 i_0x1' 205 - 'ROL64ri R15 R15 i_0x1' 206 config: '' 207 register_initial_values: 208 - 'RAX=0x0' 209 - 'RBP=0x0' 210 - 'RBX=0x0' 211 - 'RCX=0x0' 212 - 'RDI=0x0' 213 - 'RDX=0x0' 214 - 'RSI=0x0' 215 - 'R8=0x0' 216 - 'R9=0x0' 217 - 'R10=0x0' 218 - 'R11=0x0' 219 - 'R12=0x0' 220 - 'R13=0x0' 221 - 'R14=0x0' 222 - 'R15=0x0' 223cpu_name: bdver2 224llvm_triple: x86_64-unknown-linux-gnu 225num_repetitions: 1000000 226measurements: 227 - { key: inverse_throughput, value: 2.5000, per_snippet_value: 26.2268 } 228error: '' 229info: instruction has tied variables, using static renaming. 230assembled_snippet: 5541574156415541545348B8000000000000000048BD000000000000000048BB000000000000000048B9000000000000000048BF000000000000000048BA000000000000000048BE000000000000000049B8000000000000000049B9000000000000000049BA000000000000000049BB000000000000000049BC000000000000000049BD000000000000000049BE000000000000000049BF000000000000000048C1C00148C1C50148C1C30148C1C10148C1C70148C1C20148C1C60149C1C00149C1C10149C1C20149C1C30149C1C40149C1C50149C1C60149C1C70148C1C0015B415C415D415E415F5DC3 231... 232