xref: /llvm-project/llvm/test/tools/llvm-mca/JSON/X86/views-custom-parameters.s (revision 42386dc46d8217b2dfed8dfc41afeec366ec2015)
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2# Verify that we create proper JSON for the MCA views TimelineView, ResourcePressureview,
3# InstructionInfoView and SummaryView.
4
5# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=haswell -lqueue=12 -squeue=12 --json --timeline-max-iterations=1 --timeline --all-stats --all-views < %s | FileCheck %s
6# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=haswell -lqueue=12 -squeue=12 --json --timeline-max-iterations=1 --timeline --all-stats --all-views -o %t.json < %s
7# RUN: cat %t.json \
8# RUN:  | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \
9# RUN:  | FileCheck %s
10
11add %eax, %eax
12add %ebx, %ebx
13add %ecx, %ecx
14add %edx, %edx
15
16# CHECK:      {
17# CHECK-NEXT:   "CodeRegions": [
18# CHECK-NEXT:     {
19# CHECK-NEXT:       "BottleneckAnalysis": {
20# CHECK-NEXT:         "PressureIncreaseCycles": 0
21# CHECK-NEXT:       },
22# CHECK-NEXT:       "DispatchStatistics": {
23# CHECK-NEXT:         "GROUP": 0,
24# CHECK-NEXT:         "LQ": 0,
25# CHECK-NEXT:         "RAT": 0,
26# CHECK-NEXT:         "RCU": 0,
27# CHECK-NEXT:         "SCHEDQ": 0,
28# CHECK-NEXT:         "SQ": 0,
29# CHECK-NEXT:         "USH": 0
30# CHECK-NEXT:       },
31# CHECK-NEXT:       "InstructionInfoView": {
32# CHECK-NEXT:         "InstructionList": [
33# CHECK-NEXT:           {
34# CHECK-NEXT:             "Instruction": 0,
35# CHECK-NEXT:             "Latency": 1,
36# CHECK-NEXT:             "NumMicroOpcodes": 1,
37# CHECK-NEXT:             "RThroughput": 0.25,
38# CHECK-NEXT:             "hasUnmodeledSideEffects": false,
39# CHECK-NEXT:             "mayLoad": false,
40# CHECK-NEXT:             "mayStore": false
41# CHECK-NEXT:           },
42# CHECK-NEXT:           {
43# CHECK-NEXT:             "Instruction": 1,
44# CHECK-NEXT:             "Latency": 1,
45# CHECK-NEXT:             "NumMicroOpcodes": 1,
46# CHECK-NEXT:             "RThroughput": 0.25,
47# CHECK-NEXT:             "hasUnmodeledSideEffects": false,
48# CHECK-NEXT:             "mayLoad": false,
49# CHECK-NEXT:             "mayStore": false
50# CHECK-NEXT:           },
51# CHECK-NEXT:           {
52# CHECK-NEXT:             "Instruction": 2,
53# CHECK-NEXT:             "Latency": 1,
54# CHECK-NEXT:             "NumMicroOpcodes": 1,
55# CHECK-NEXT:             "RThroughput": 0.25,
56# CHECK-NEXT:             "hasUnmodeledSideEffects": false,
57# CHECK-NEXT:             "mayLoad": false,
58# CHECK-NEXT:             "mayStore": false
59# CHECK-NEXT:           },
60# CHECK-NEXT:           {
61# CHECK-NEXT:             "Instruction": 3,
62# CHECK-NEXT:             "Latency": 1,
63# CHECK-NEXT:             "NumMicroOpcodes": 1,
64# CHECK-NEXT:             "RThroughput": 0.25,
65# CHECK-NEXT:             "hasUnmodeledSideEffects": false,
66# CHECK-NEXT:             "mayLoad": false,
67# CHECK-NEXT:             "mayStore": false
68# CHECK-NEXT:           }
69# CHECK-NEXT:         ]
70# CHECK-NEXT:       },
71# CHECK-NEXT:       "Instructions": [
72# CHECK-NEXT:         "addl\t%eax, %eax",
73# CHECK-NEXT:         "addl\t%ebx, %ebx",
74# CHECK-NEXT:         "addl\t%ecx, %ecx",
75# CHECK-NEXT:         "addl\t%edx, %edx"
76# CHECK-NEXT:       ],
77# CHECK-NEXT:       "Name": "",
78# CHECK-NEXT:       "ResourcePressureView": {
79# CHECK-NEXT:         "ResourcePressureInfo": [
80# CHECK-NEXT:           {
81# CHECK-NEXT:             "InstructionIndex": 0,
82# CHECK-NEXT:             "ResourceIndex": 8,
83# CHECK-NEXT:             "ResourceUsage": 1
84# CHECK-NEXT:           },
85# CHECK-NEXT:           {
86# CHECK-NEXT:             "InstructionIndex": 1,
87# CHECK-NEXT:             "ResourceIndex": 7,
88# CHECK-NEXT:             "ResourceUsage": 1
89# CHECK-NEXT:           },
90# CHECK-NEXT:           {
91# CHECK-NEXT:             "InstructionIndex": 2,
92# CHECK-NEXT:             "ResourceIndex": 3,
93# CHECK-NEXT:             "ResourceUsage": 1
94# CHECK-NEXT:           },
95# CHECK-NEXT:           {
96# CHECK-NEXT:             "InstructionIndex": 3,
97# CHECK-NEXT:             "ResourceIndex": 2,
98# CHECK-NEXT:             "ResourceUsage": 1
99# CHECK-NEXT:           },
100# CHECK-NEXT:           {
101# CHECK-NEXT:             "InstructionIndex": 4,
102# CHECK-NEXT:             "ResourceIndex": 2,
103# CHECK-NEXT:             "ResourceUsage": 1
104# CHECK-NEXT:           },
105# CHECK-NEXT:           {
106# CHECK-NEXT:             "InstructionIndex": 4,
107# CHECK-NEXT:             "ResourceIndex": 3,
108# CHECK-NEXT:             "ResourceUsage": 1
109# CHECK-NEXT:           },
110# CHECK-NEXT:           {
111# CHECK-NEXT:             "InstructionIndex": 4,
112# CHECK-NEXT:             "ResourceIndex": 7,
113# CHECK-NEXT:             "ResourceUsage": 1
114# CHECK-NEXT:           },
115# CHECK-NEXT:           {
116# CHECK-NEXT:             "InstructionIndex": 4,
117# CHECK-NEXT:             "ResourceIndex": 8,
118# CHECK-NEXT:             "ResourceUsage": 1
119# CHECK-NEXT:           }
120# CHECK-NEXT:         ]
121# CHECK-NEXT:       },
122# CHECK-NEXT:       "SummaryView": {
123# CHECK-NEXT:         "BlockRThroughput": 1,
124# CHECK-NEXT:         "DispatchWidth": 4,
125# CHECK-NEXT:         "IPC": 3.883495145631068,
126# CHECK-NEXT:         "Instructions": 400,
127# CHECK-NEXT:         "Iterations": 100,
128# CHECK-NEXT:         "TotalCycles": 103,
129# CHECK-NEXT:         "TotaluOps": 400,
130# CHECK-NEXT:         "uOpsPerCycle": 3.883495145631068
131# CHECK-NEXT:       },
132# CHECK-NEXT:       "TimelineView": {
133# CHECK-NEXT:         "TimelineInfo": [
134# CHECK-NEXT:           {
135# CHECK-NEXT:             "CycleDispatched": 0,
136# CHECK-NEXT:             "CycleExecuted": 2,
137# CHECK-NEXT:             "CycleIssued": 1,
138# CHECK-NEXT:             "CycleReady": 0,
139# CHECK-NEXT:             "CycleRetired": 3
140# CHECK-NEXT:           },
141# CHECK-NEXT:           {
142# CHECK-NEXT:             "CycleDispatched": 0,
143# CHECK-NEXT:             "CycleExecuted": 2,
144# CHECK-NEXT:             "CycleIssued": 1,
145# CHECK-NEXT:             "CycleReady": 0,
146# CHECK-NEXT:             "CycleRetired": 3
147# CHECK-NEXT:           },
148# CHECK-NEXT:           {
149# CHECK-NEXT:             "CycleDispatched": 0,
150# CHECK-NEXT:             "CycleExecuted": 2,
151# CHECK-NEXT:             "CycleIssued": 1,
152# CHECK-NEXT:             "CycleReady": 0,
153# CHECK-NEXT:             "CycleRetired": 3
154# CHECK-NEXT:           },
155# CHECK-NEXT:           {
156# CHECK-NEXT:             "CycleDispatched": 0,
157# CHECK-NEXT:             "CycleExecuted": 2,
158# CHECK-NEXT:             "CycleIssued": 1,
159# CHECK-NEXT:             "CycleReady": 0,
160# CHECK-NEXT:             "CycleRetired": 3
161# CHECK-NEXT:           }
162# CHECK-NEXT:         ]
163# CHECK-NEXT:       }
164# CHECK-NEXT:     }
165# CHECK-NEXT:   ],
166# CHECK-NEXT:   "SimulationParameters": {
167# CHECK-NEXT:     "-lqueue": 12,
168# CHECK-NEXT:     "-march": "x86_64",
169# CHECK-NEXT:     "-mcpu": "haswell",
170# CHECK-NEXT:     "-mtriple": "x86_64-unknown-unknown",
171# CHECK-NEXT:     "-squeue": 12
172# CHECK-NEXT:   },
173# CHECK-NEXT:   "TargetInfo": {
174# CHECK-NEXT:     "CPUName": "haswell",
175# CHECK-NEXT:     "Resources": [
176# CHECK-NEXT:       "HWDivider",
177# CHECK-NEXT:       "HWFPDivider",
178# CHECK-NEXT:       "HWPort0",
179# CHECK-NEXT:       "HWPort1",
180# CHECK-NEXT:       "HWPort2",
181# CHECK-NEXT:       "HWPort3",
182# CHECK-NEXT:       "HWPort4",
183# CHECK-NEXT:       "HWPort5",
184# CHECK-NEXT:       "HWPort6",
185# CHECK-NEXT:       "HWPort7"
186# CHECK-NEXT:     ]
187# CHECK-NEXT:   }
188# CHECK-NEXT: }
189