# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-clusters-output-file=- -analysis-clustering-epsilon=0.1 -analysis-inconsistency-epsilon=0.1 -analysis-numpoints=1 | FileCheck -check-prefixes=CHECK-CLUSTERS %s # RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-inconsistencies-output-file=- -analysis-clustering-epsilon=0.5 -analysis-inconsistency-epsilon=0.5 -analysis-numpoints=1 | FileCheck -check-prefixes=CHECK-INCONSISTENCIES-STABLE %s # RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-inconsistencies-output-file=- -analysis-clustering-epsilon=0.5 -analysis-inconsistency-epsilon=0.5 -analysis-display-unstable-clusters -analysis-numpoints=1 | FileCheck -check-prefixes=CHECK-INCONSISTENCIES-UNSTABLE %s # We have one ADD32rr measurement, and two measurements for SQRTSSr. # The ADD32rr measurement and one of the SQRTSSr measurements are identical, # and thus will be be in the same cluster. But the second SQRTSSr measurement # is different from the first SQRTSSr measurement, and thus it will be in it's # own cluster. We do reclusterization, and thus since there is more than one # measurement from SQRTSSr, and they are not in the same cluster, we move # all two SQRTSSr measurements into their own cluster, and mark it as unstable. # By default, we do not show such unstable clusters. # If told to show, we *only* show such unstable clusters. # CHECK-CLUSTERS: {{^}}cluster_id,opcode_name,config,sched_class,latency{{$}} # CHECK-CLUSTERS-NEXT: {{^}}0, # CHECK-CLUSTERS-SAME: ,90.00{{$}} # CHECK-CLUSTERS: {{^}}3, # CHECK-CLUSTERS-SAME: ,90.11{{$}} # CHECK-CLUSTERS-NEXT: {{^}}3, # CHECK-CLUSTERS-SAME: ,100.00{{$}} # CHECK-INCONSISTENCIES-STABLE: ADD32rr # CHECK-INCONSISTENCIES-STABLE-NOT: ADD32rr # CHECK-INCONSISTENCIES-STABLE-NOT: SQRTSSr # CHECK-INCONSISTENCIES-UNSTABLE: SQRTSSr # CHECK-INCONSISTENCIES-UNSTABLE: SQRTSSr # CHECK-INCONSISTENCIES-UNSTABLE-NOT: SQRTSSr # CHECK-INCONSISTENCIES-UNSTABLE-NOT: ADD32rr --- mode: latency key: instructions: - 'ADD32rr EDX EDX EAX' config: '' register_initial_values: - 'EDX=0x0' - 'EAX=0x0' cpu_name: bdver2 llvm_triple: x86_64-unknown-linux-gnu num_repetitions: 10000 measurements: - { key: latency, value: 90.0000, per_snippet_value: 90.0000 } error: '' info: Repeating a single implicitly serial instruction assembled_snippet: BA00000000B80000000001C201C201C201C201C201C201C201C201C201C201C201C201C201C201C201C2C3 --- mode: latency key: instructions: - 'SQRTSSr XMM11 XMM11' config: '' register_initial_values: - 'XMM11=0x0' cpu_name: bdver2 llvm_triple: x86_64-unknown-linux-gnu num_repetitions: 10000 measurements: - { key: latency, value: 90.1111, per_snippet_value: 90.1111 } error: '' info: Repeating a single explicitly serial instruction assembled_snippet: 4883EC10C7042400000000C744240400000000C744240800000000C744240C00000000C57A6F1C244883C410F3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBC3 ... --- mode: latency key: instructions: - 'SQRTSSr XMM11 XMM11' config: '' register_initial_values: - 'XMM11=0x0' cpu_name: bdver2 llvm_triple: x86_64-unknown-linux-gnu num_repetitions: 10000 measurements: - { key: latency, value: 100, per_snippet_value: 100 } error: '' info: Repeating a single explicitly serial instruction assembled_snippet: 4883EC10C7042400000000C744240400000000C744240800000000C744240C00000000C57A6F1C244883C410F3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBF3450F51DBC3 ...