xref: /llvm-project/llvm/test/tools/llvm-mca/JSON/X86/views-custom-parameters.s (revision 42386dc46d8217b2dfed8dfc41afeec366ec2015)
177f2f0f9SMarcos Horro# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
277f2f0f9SMarcos Horro# Verify that we create proper JSON for the MCA views TimelineView, ResourcePressureview,
377f2f0f9SMarcos Horro# InstructionInfoView and SummaryView.
477f2f0f9SMarcos Horro
577f2f0f9SMarcos Horro# 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
677f2f0f9SMarcos Horro# 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
777f2f0f9SMarcos Horro# RUN: cat %t.json \
877f2f0f9SMarcos Horro# RUN:  | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \
977f2f0f9SMarcos Horro# RUN:  | FileCheck %s
1077f2f0f9SMarcos Horro
1177f2f0f9SMarcos Horroadd %eax, %eax
1277f2f0f9SMarcos Horroadd %ebx, %ebx
1377f2f0f9SMarcos Horroadd %ecx, %ecx
1477f2f0f9SMarcos Horroadd %edx, %edx
1577f2f0f9SMarcos Horro
1677f2f0f9SMarcos Horro# CHECK:      {
1777f2f0f9SMarcos Horro# CHECK-NEXT:   "CodeRegions": [
1877f2f0f9SMarcos Horro# CHECK-NEXT:     {
19*42386dc4SPhil Camp# CHECK-NEXT:       "BottleneckAnalysis": {
20*42386dc4SPhil Camp# CHECK-NEXT:         "PressureIncreaseCycles": 0
21*42386dc4SPhil Camp# CHECK-NEXT:       },
2277f2f0f9SMarcos Horro# CHECK-NEXT:       "DispatchStatistics": {
2377f2f0f9SMarcos Horro# CHECK-NEXT:         "GROUP": 0,
2477f2f0f9SMarcos Horro# CHECK-NEXT:         "LQ": 0,
2577f2f0f9SMarcos Horro# CHECK-NEXT:         "RAT": 0,
2677f2f0f9SMarcos Horro# CHECK-NEXT:         "RCU": 0,
2777f2f0f9SMarcos Horro# CHECK-NEXT:         "SCHEDQ": 0,
2877f2f0f9SMarcos Horro# CHECK-NEXT:         "SQ": 0,
2977f2f0f9SMarcos Horro# CHECK-NEXT:         "USH": 0
3077f2f0f9SMarcos Horro# CHECK-NEXT:       },
3177f2f0f9SMarcos Horro# CHECK-NEXT:       "InstructionInfoView": {
3277f2f0f9SMarcos Horro# CHECK-NEXT:         "InstructionList": [
3377f2f0f9SMarcos Horro# CHECK-NEXT:           {
3477f2f0f9SMarcos Horro# CHECK-NEXT:             "Instruction": 0,
3577f2f0f9SMarcos Horro# CHECK-NEXT:             "Latency": 1,
3677f2f0f9SMarcos Horro# CHECK-NEXT:             "NumMicroOpcodes": 1,
3777f2f0f9SMarcos Horro# CHECK-NEXT:             "RThroughput": 0.25,
3877f2f0f9SMarcos Horro# CHECK-NEXT:             "hasUnmodeledSideEffects": false,
3977f2f0f9SMarcos Horro# CHECK-NEXT:             "mayLoad": false,
4077f2f0f9SMarcos Horro# CHECK-NEXT:             "mayStore": false
4177f2f0f9SMarcos Horro# CHECK-NEXT:           },
4277f2f0f9SMarcos Horro# CHECK-NEXT:           {
4377f2f0f9SMarcos Horro# CHECK-NEXT:             "Instruction": 1,
4477f2f0f9SMarcos Horro# CHECK-NEXT:             "Latency": 1,
4577f2f0f9SMarcos Horro# CHECK-NEXT:             "NumMicroOpcodes": 1,
4677f2f0f9SMarcos Horro# CHECK-NEXT:             "RThroughput": 0.25,
4777f2f0f9SMarcos Horro# CHECK-NEXT:             "hasUnmodeledSideEffects": false,
4877f2f0f9SMarcos Horro# CHECK-NEXT:             "mayLoad": false,
4977f2f0f9SMarcos Horro# CHECK-NEXT:             "mayStore": false
5077f2f0f9SMarcos Horro# CHECK-NEXT:           },
5177f2f0f9SMarcos Horro# CHECK-NEXT:           {
5277f2f0f9SMarcos Horro# CHECK-NEXT:             "Instruction": 2,
5377f2f0f9SMarcos Horro# CHECK-NEXT:             "Latency": 1,
5477f2f0f9SMarcos Horro# CHECK-NEXT:             "NumMicroOpcodes": 1,
5577f2f0f9SMarcos Horro# CHECK-NEXT:             "RThroughput": 0.25,
5677f2f0f9SMarcos Horro# CHECK-NEXT:             "hasUnmodeledSideEffects": false,
5777f2f0f9SMarcos Horro# CHECK-NEXT:             "mayLoad": false,
5877f2f0f9SMarcos Horro# CHECK-NEXT:             "mayStore": false
5977f2f0f9SMarcos Horro# CHECK-NEXT:           },
6077f2f0f9SMarcos Horro# CHECK-NEXT:           {
6177f2f0f9SMarcos Horro# CHECK-NEXT:             "Instruction": 3,
6277f2f0f9SMarcos Horro# CHECK-NEXT:             "Latency": 1,
6377f2f0f9SMarcos Horro# CHECK-NEXT:             "NumMicroOpcodes": 1,
6477f2f0f9SMarcos Horro# CHECK-NEXT:             "RThroughput": 0.25,
6577f2f0f9SMarcos Horro# CHECK-NEXT:             "hasUnmodeledSideEffects": false,
6677f2f0f9SMarcos Horro# CHECK-NEXT:             "mayLoad": false,
6777f2f0f9SMarcos Horro# CHECK-NEXT:             "mayStore": false
6877f2f0f9SMarcos Horro# CHECK-NEXT:           }
6977f2f0f9SMarcos Horro# CHECK-NEXT:         ]
7077f2f0f9SMarcos Horro# CHECK-NEXT:       },
7177f2f0f9SMarcos Horro# CHECK-NEXT:       "Instructions": [
7277f2f0f9SMarcos Horro# CHECK-NEXT:         "addl\t%eax, %eax",
7377f2f0f9SMarcos Horro# CHECK-NEXT:         "addl\t%ebx, %ebx",
7477f2f0f9SMarcos Horro# CHECK-NEXT:         "addl\t%ecx, %ecx",
7577f2f0f9SMarcos Horro# CHECK-NEXT:         "addl\t%edx, %edx"
7677f2f0f9SMarcos Horro# CHECK-NEXT:       ],
7777f2f0f9SMarcos Horro# CHECK-NEXT:       "Name": "",
7877f2f0f9SMarcos Horro# CHECK-NEXT:       "ResourcePressureView": {
7977f2f0f9SMarcos Horro# CHECK-NEXT:         "ResourcePressureInfo": [
8077f2f0f9SMarcos Horro# CHECK-NEXT:           {
8177f2f0f9SMarcos Horro# CHECK-NEXT:             "InstructionIndex": 0,
8277f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceIndex": 8,
8377f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceUsage": 1
8477f2f0f9SMarcos Horro# CHECK-NEXT:           },
8577f2f0f9SMarcos Horro# CHECK-NEXT:           {
8677f2f0f9SMarcos Horro# CHECK-NEXT:             "InstructionIndex": 1,
8777f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceIndex": 7,
8877f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceUsage": 1
8977f2f0f9SMarcos Horro# CHECK-NEXT:           },
9077f2f0f9SMarcos Horro# CHECK-NEXT:           {
9177f2f0f9SMarcos Horro# CHECK-NEXT:             "InstructionIndex": 2,
9277f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceIndex": 3,
9377f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceUsage": 1
9477f2f0f9SMarcos Horro# CHECK-NEXT:           },
9577f2f0f9SMarcos Horro# CHECK-NEXT:           {
9677f2f0f9SMarcos Horro# CHECK-NEXT:             "InstructionIndex": 3,
9777f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceIndex": 2,
9877f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceUsage": 1
9977f2f0f9SMarcos Horro# CHECK-NEXT:           },
10077f2f0f9SMarcos Horro# CHECK-NEXT:           {
10177f2f0f9SMarcos Horro# CHECK-NEXT:             "InstructionIndex": 4,
10277f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceIndex": 2,
10377f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceUsage": 1
10477f2f0f9SMarcos Horro# CHECK-NEXT:           },
10577f2f0f9SMarcos Horro# CHECK-NEXT:           {
10677f2f0f9SMarcos Horro# CHECK-NEXT:             "InstructionIndex": 4,
10777f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceIndex": 3,
10877f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceUsage": 1
10977f2f0f9SMarcos Horro# CHECK-NEXT:           },
11077f2f0f9SMarcos Horro# CHECK-NEXT:           {
11177f2f0f9SMarcos Horro# CHECK-NEXT:             "InstructionIndex": 4,
11277f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceIndex": 7,
11377f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceUsage": 1
11477f2f0f9SMarcos Horro# CHECK-NEXT:           },
11577f2f0f9SMarcos Horro# CHECK-NEXT:           {
11677f2f0f9SMarcos Horro# CHECK-NEXT:             "InstructionIndex": 4,
11777f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceIndex": 8,
11877f2f0f9SMarcos Horro# CHECK-NEXT:             "ResourceUsage": 1
11977f2f0f9SMarcos Horro# CHECK-NEXT:           }
12077f2f0f9SMarcos Horro# CHECK-NEXT:         ]
12177f2f0f9SMarcos Horro# CHECK-NEXT:       },
12277f2f0f9SMarcos Horro# CHECK-NEXT:       "SummaryView": {
12377f2f0f9SMarcos Horro# CHECK-NEXT:         "BlockRThroughput": 1,
12477f2f0f9SMarcos Horro# CHECK-NEXT:         "DispatchWidth": 4,
12577f2f0f9SMarcos Horro# CHECK-NEXT:         "IPC": 3.883495145631068,
12677f2f0f9SMarcos Horro# CHECK-NEXT:         "Instructions": 400,
12777f2f0f9SMarcos Horro# CHECK-NEXT:         "Iterations": 100,
12877f2f0f9SMarcos Horro# CHECK-NEXT:         "TotalCycles": 103,
12977f2f0f9SMarcos Horro# CHECK-NEXT:         "TotaluOps": 400,
13077f2f0f9SMarcos Horro# CHECK-NEXT:         "uOpsPerCycle": 3.883495145631068
13177f2f0f9SMarcos Horro# CHECK-NEXT:       },
13277f2f0f9SMarcos Horro# CHECK-NEXT:       "TimelineView": {
13377f2f0f9SMarcos Horro# CHECK-NEXT:         "TimelineInfo": [
13477f2f0f9SMarcos Horro# CHECK-NEXT:           {
13577f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleDispatched": 0,
13677f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleExecuted": 2,
13777f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleIssued": 1,
13877f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleReady": 0,
13977f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleRetired": 3
14077f2f0f9SMarcos Horro# CHECK-NEXT:           },
14177f2f0f9SMarcos Horro# CHECK-NEXT:           {
14277f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleDispatched": 0,
14377f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleExecuted": 2,
14477f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleIssued": 1,
14577f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleReady": 0,
14677f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleRetired": 3
14777f2f0f9SMarcos Horro# CHECK-NEXT:           },
14877f2f0f9SMarcos Horro# CHECK-NEXT:           {
14977f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleDispatched": 0,
15077f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleExecuted": 2,
15177f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleIssued": 1,
15277f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleReady": 0,
15377f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleRetired": 3
15477f2f0f9SMarcos Horro# CHECK-NEXT:           },
15577f2f0f9SMarcos Horro# CHECK-NEXT:           {
15677f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleDispatched": 0,
15777f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleExecuted": 2,
15877f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleIssued": 1,
15977f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleReady": 0,
16077f2f0f9SMarcos Horro# CHECK-NEXT:             "CycleRetired": 3
16177f2f0f9SMarcos Horro# CHECK-NEXT:           }
16277f2f0f9SMarcos Horro# CHECK-NEXT:         ]
16377f2f0f9SMarcos Horro# CHECK-NEXT:       }
16477f2f0f9SMarcos Horro# CHECK-NEXT:     }
16577f2f0f9SMarcos Horro# CHECK-NEXT:   ],
16677f2f0f9SMarcos Horro# CHECK-NEXT:   "SimulationParameters": {
16777f2f0f9SMarcos Horro# CHECK-NEXT:     "-lqueue": 12,
16877f2f0f9SMarcos Horro# CHECK-NEXT:     "-march": "x86_64",
16977f2f0f9SMarcos Horro# CHECK-NEXT:     "-mcpu": "haswell",
17077f2f0f9SMarcos Horro# CHECK-NEXT:     "-mtriple": "x86_64-unknown-unknown",
17177f2f0f9SMarcos Horro# CHECK-NEXT:     "-squeue": 12
17277f2f0f9SMarcos Horro# CHECK-NEXT:   },
17377f2f0f9SMarcos Horro# CHECK-NEXT:   "TargetInfo": {
17477f2f0f9SMarcos Horro# CHECK-NEXT:     "CPUName": "haswell",
17577f2f0f9SMarcos Horro# CHECK-NEXT:     "Resources": [
17677f2f0f9SMarcos Horro# CHECK-NEXT:       "HWDivider",
17777f2f0f9SMarcos Horro# CHECK-NEXT:       "HWFPDivider",
17877f2f0f9SMarcos Horro# CHECK-NEXT:       "HWPort0",
17977f2f0f9SMarcos Horro# CHECK-NEXT:       "HWPort1",
18077f2f0f9SMarcos Horro# CHECK-NEXT:       "HWPort2",
18177f2f0f9SMarcos Horro# CHECK-NEXT:       "HWPort3",
18277f2f0f9SMarcos Horro# CHECK-NEXT:       "HWPort4",
18377f2f0f9SMarcos Horro# CHECK-NEXT:       "HWPort5",
18477f2f0f9SMarcos Horro# CHECK-NEXT:       "HWPort6",
18577f2f0f9SMarcos Horro# CHECK-NEXT:       "HWPort7"
18677f2f0f9SMarcos Horro# CHECK-NEXT:     ]
18777f2f0f9SMarcos Horro# CHECK-NEXT:   }
18877f2f0f9SMarcos Horro# CHECK-NEXT: }
189