brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.1 KiB · a000e9b Raw
324 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py2# 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 --json --timeline-max-iterations=1 --timeline --all-stats --all-views < %s | FileCheck %s6# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=haswell --json --timeline-max-iterations=1 --timeline --all-stats --all-views -o %t.json < %s7# 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 %s10 11# LLVM-MCA-BEGIN foo12add %eax, %eax13# LLVM-MCA-BEGIN bar14add %ebx, %ebx15add %ecx, %ecx16# LLVM-MCA-END bar17add %edx, %edx18# LLVM-MCA-END foo19 20# CHECK:      {21# CHECK-NEXT:   "CodeRegions": [22# CHECK-NEXT:     {23# CHECK-NEXT:       "BottleneckAnalysis": {24# CHECK-NEXT:         "PressureIncreaseCycles": 025# CHECK-NEXT:       },26# CHECK-NEXT:       "DispatchStatistics": {27# CHECK-NEXT:         "GROUP": 0,28# CHECK-NEXT:         "LQ": 0,29# CHECK-NEXT:         "RAT": 0,30# CHECK-NEXT:         "RCU": 0,31# CHECK-NEXT:         "SCHEDQ": 0,32# CHECK-NEXT:         "SQ": 0,33# CHECK-NEXT:         "USH": 034# CHECK-NEXT:       },35# CHECK-NEXT:       "InstructionInfoView": {36# CHECK-NEXT:         "InstructionList": [37# CHECK-NEXT:           {38# CHECK-NEXT:             "Instruction": 0,39# CHECK-NEXT:             "Latency": 1,40# CHECK-NEXT:             "NumMicroOpcodes": 1,41# CHECK-NEXT:             "RThroughput": 0.25,42# CHECK-NEXT:             "hasUnmodeledSideEffects": false,43# CHECK-NEXT:             "mayLoad": false,44# CHECK-NEXT:             "mayStore": false45# CHECK-NEXT:           },46# CHECK-NEXT:           {47# CHECK-NEXT:             "Instruction": 1,48# CHECK-NEXT:             "Latency": 1,49# CHECK-NEXT:             "NumMicroOpcodes": 1,50# CHECK-NEXT:             "RThroughput": 0.25,51# CHECK-NEXT:             "hasUnmodeledSideEffects": false,52# CHECK-NEXT:             "mayLoad": false,53# CHECK-NEXT:             "mayStore": false54# CHECK-NEXT:           },55# CHECK-NEXT:           {56# CHECK-NEXT:             "Instruction": 2,57# CHECK-NEXT:             "Latency": 1,58# CHECK-NEXT:             "NumMicroOpcodes": 1,59# CHECK-NEXT:             "RThroughput": 0.25,60# CHECK-NEXT:             "hasUnmodeledSideEffects": false,61# CHECK-NEXT:             "mayLoad": false,62# CHECK-NEXT:             "mayStore": false63# CHECK-NEXT:           },64# CHECK-NEXT:           {65# CHECK-NEXT:             "Instruction": 3,66# CHECK-NEXT:             "Latency": 1,67# CHECK-NEXT:             "NumMicroOpcodes": 1,68# CHECK-NEXT:             "RThroughput": 0.25,69# CHECK-NEXT:             "hasUnmodeledSideEffects": false,70# CHECK-NEXT:             "mayLoad": false,71# CHECK-NEXT:             "mayStore": false72# CHECK-NEXT:           }73# CHECK-NEXT:         ]74# CHECK-NEXT:       },75# CHECK-NEXT:       "Instructions": [76# CHECK-NEXT:         "addl\t%eax, %eax",77# CHECK-NEXT:         "addl\t%ebx, %ebx",78# CHECK-NEXT:         "addl\t%ecx, %ecx",79# CHECK-NEXT:         "addl\t%edx, %edx"80# CHECK-NEXT:       ],81# CHECK-NEXT:       "Name": "foo",82# CHECK-NEXT:       "ResourcePressureView": {83# CHECK-NEXT:         "ResourcePressureInfo": [84# CHECK-NEXT:           {85# CHECK-NEXT:             "InstructionIndex": 0,86# CHECK-NEXT:             "ResourceIndex": 8,87# CHECK-NEXT:             "ResourceUsage": 188# CHECK-NEXT:           },89# CHECK-NEXT:           {90# CHECK-NEXT:             "InstructionIndex": 1,91# CHECK-NEXT:             "ResourceIndex": 7,92# CHECK-NEXT:             "ResourceUsage": 193# CHECK-NEXT:           },94# CHECK-NEXT:           {95# CHECK-NEXT:             "InstructionIndex": 2,96# CHECK-NEXT:             "ResourceIndex": 3,97# CHECK-NEXT:             "ResourceUsage": 198# CHECK-NEXT:           },99# CHECK-NEXT:           {100# CHECK-NEXT:             "InstructionIndex": 3,101# CHECK-NEXT:             "ResourceIndex": 2,102# CHECK-NEXT:             "ResourceUsage": 1103# CHECK-NEXT:           },104# CHECK-NEXT:           {105# CHECK-NEXT:             "InstructionIndex": 4,106# CHECK-NEXT:             "ResourceIndex": 2,107# CHECK-NEXT:             "ResourceUsage": 1108# CHECK-NEXT:           },109# CHECK-NEXT:           {110# CHECK-NEXT:             "InstructionIndex": 4,111# CHECK-NEXT:             "ResourceIndex": 3,112# CHECK-NEXT:             "ResourceUsage": 1113# CHECK-NEXT:           },114# CHECK-NEXT:           {115# CHECK-NEXT:             "InstructionIndex": 4,116# CHECK-NEXT:             "ResourceIndex": 7,117# CHECK-NEXT:             "ResourceUsage": 1118# CHECK-NEXT:           },119# CHECK-NEXT:           {120# CHECK-NEXT:             "InstructionIndex": 4,121# CHECK-NEXT:             "ResourceIndex": 8,122# CHECK-NEXT:             "ResourceUsage": 1123# CHECK-NEXT:           }124# CHECK-NEXT:         ]125# CHECK-NEXT:       },126# CHECK-NEXT:       "SummaryView": {127# CHECK-NEXT:         "BlockRThroughput": 1,128# CHECK-NEXT:         "DispatchWidth": 4,129# CHECK-NEXT:         "IPC": 3.883495145631068,130# CHECK-NEXT:         "Instructions": 400,131# CHECK-NEXT:         "Iterations": 100,132# CHECK-NEXT:         "TotalCycles": 103,133# CHECK-NEXT:         "TotaluOps": 400,134# CHECK-NEXT:         "uOpsPerCycle": 3.883495145631068135# CHECK-NEXT:       },136# CHECK-NEXT:       "TimelineView": {137# CHECK-NEXT:         "TimelineInfo": [138# CHECK-NEXT:           {139# CHECK-NEXT:             "CycleDispatched": 0,140# CHECK-NEXT:             "CycleExecuted": 2,141# CHECK-NEXT:             "CycleIssued": 1,142# CHECK-NEXT:             "CycleReady": 0,143# CHECK-NEXT:             "CycleRetired": 3144# CHECK-NEXT:           },145# CHECK-NEXT:           {146# CHECK-NEXT:             "CycleDispatched": 0,147# CHECK-NEXT:             "CycleExecuted": 2,148# CHECK-NEXT:             "CycleIssued": 1,149# CHECK-NEXT:             "CycleReady": 0,150# CHECK-NEXT:             "CycleRetired": 3151# CHECK-NEXT:           },152# CHECK-NEXT:           {153# CHECK-NEXT:             "CycleDispatched": 0,154# CHECK-NEXT:             "CycleExecuted": 2,155# CHECK-NEXT:             "CycleIssued": 1,156# CHECK-NEXT:             "CycleReady": 0,157# CHECK-NEXT:             "CycleRetired": 3158# CHECK-NEXT:           },159# CHECK-NEXT:           {160# CHECK-NEXT:             "CycleDispatched": 0,161# CHECK-NEXT:             "CycleExecuted": 2,162# CHECK-NEXT:             "CycleIssued": 1,163# CHECK-NEXT:             "CycleReady": 0,164# CHECK-NEXT:             "CycleRetired": 3165# CHECK-NEXT:           }166# CHECK-NEXT:         ]167# CHECK-NEXT:       }168# CHECK-NEXT:     },169# CHECK-NEXT:     {170# CHECK-NEXT:       "BottleneckAnalysis": {171# CHECK-NEXT:         "DataDependencyCycles": 69,172# CHECK-NEXT:         "DependencyEdge": [173# CHECK-NEXT:           {174# CHECK-NEXT:             "FromID": 0,175# CHECK-NEXT:             "ResourceOrRegID": 24,176# CHECK-NEXT:             "ToID": 2,177# CHECK-NEXT:             "Type": 1178# CHECK-NEXT:           },179# CHECK-NEXT:           {180# CHECK-NEXT:             "FromID": 2,181# CHECK-NEXT:             "ResourceOrRegID": 24,182# CHECK-NEXT:             "ToID": 4,183# CHECK-NEXT:             "Type": 1184# CHECK-NEXT:           }185# CHECK-NEXT:         ],186# CHECK-NEXT:         "MemoryDependencyCycles": 0,187# CHECK-NEXT:         "PressureIncreaseCycles": 69,188# CHECK-NEXT:         "RegisterDependencyCycles": 69,189# CHECK-NEXT:         "ResourcePressure": [],190# CHECK-NEXT:         "ResourcePressureCycles": 0,191# CHECK-NEXT:         "TotalCycles": 103192# CHECK-NEXT:       },193# CHECK-NEXT:       "DispatchStatistics": {194# CHECK-NEXT:         "GROUP": 0,195# CHECK-NEXT:         "LQ": 0,196# CHECK-NEXT:         "RAT": 0,197# CHECK-NEXT:         "RCU": 0,198# CHECK-NEXT:         "SCHEDQ": 41,199# CHECK-NEXT:         "SQ": 0,200# CHECK-NEXT:         "USH": 0201# CHECK-NEXT:       },202# CHECK-NEXT:       "InstructionInfoView": {203# CHECK-NEXT:         "InstructionList": [204# CHECK-NEXT:           {205# CHECK-NEXT:             "Instruction": 0,206# CHECK-NEXT:             "Latency": 1,207# CHECK-NEXT:             "NumMicroOpcodes": 1,208# CHECK-NEXT:             "RThroughput": 0.25,209# CHECK-NEXT:             "hasUnmodeledSideEffects": false,210# CHECK-NEXT:             "mayLoad": false,211# CHECK-NEXT:             "mayStore": false212# CHECK-NEXT:           },213# CHECK-NEXT:           {214# CHECK-NEXT:             "Instruction": 1,215# CHECK-NEXT:             "Latency": 1,216# CHECK-NEXT:             "NumMicroOpcodes": 1,217# CHECK-NEXT:             "RThroughput": 0.25,218# CHECK-NEXT:             "hasUnmodeledSideEffects": false,219# CHECK-NEXT:             "mayLoad": false,220# CHECK-NEXT:             "mayStore": false221# CHECK-NEXT:           }222# CHECK-NEXT:         ]223# CHECK-NEXT:       },224# CHECK-NEXT:       "Instructions": [225# CHECK-NEXT:         "addl\t%ebx, %ebx",226# CHECK-NEXT:         "addl\t%ecx, %ecx"227# CHECK-NEXT:       ],228# CHECK-NEXT:       "Name": "bar",229# CHECK-NEXT:       "ResourcePressureView": {230# CHECK-NEXT:         "ResourcePressureInfo": [231# CHECK-NEXT:           {232# CHECK-NEXT:             "InstructionIndex": 0,233# CHECK-NEXT:             "ResourceIndex": 3,234# CHECK-NEXT:             "ResourceUsage": 0.5235# CHECK-NEXT:           },236# CHECK-NEXT:           {237# CHECK-NEXT:             "InstructionIndex": 0,238# CHECK-NEXT:             "ResourceIndex": 8,239# CHECK-NEXT:             "ResourceUsage": 0.5240# CHECK-NEXT:           },241# CHECK-NEXT:           {242# CHECK-NEXT:             "InstructionIndex": 1,243# CHECK-NEXT:             "ResourceIndex": 2,244# CHECK-NEXT:             "ResourceUsage": 0.5245# CHECK-NEXT:           },246# CHECK-NEXT:           {247# CHECK-NEXT:             "InstructionIndex": 1,248# CHECK-NEXT:             "ResourceIndex": 7,249# CHECK-NEXT:             "ResourceUsage": 0.5250# CHECK-NEXT:           },251# CHECK-NEXT:           {252# CHECK-NEXT:             "InstructionIndex": 2,253# CHECK-NEXT:             "ResourceIndex": 2,254# CHECK-NEXT:             "ResourceUsage": 0.5255# CHECK-NEXT:           },256# CHECK-NEXT:           {257# CHECK-NEXT:             "InstructionIndex": 2,258# CHECK-NEXT:             "ResourceIndex": 3,259# CHECK-NEXT:             "ResourceUsage": 0.5260# CHECK-NEXT:           },261# CHECK-NEXT:           {262# CHECK-NEXT:             "InstructionIndex": 2,263# CHECK-NEXT:             "ResourceIndex": 7,264# CHECK-NEXT:             "ResourceUsage": 0.5265# CHECK-NEXT:           },266# CHECK-NEXT:           {267# CHECK-NEXT:             "InstructionIndex": 2,268# CHECK-NEXT:             "ResourceIndex": 8,269# CHECK-NEXT:             "ResourceUsage": 0.5270# CHECK-NEXT:           }271# CHECK-NEXT:         ]272# CHECK-NEXT:       },273# CHECK-NEXT:       "SummaryView": {274# CHECK-NEXT:         "BlockRThroughput": 0.5,275# CHECK-NEXT:         "DispatchWidth": 4,276# CHECK-NEXT:         "IPC": 1.941747572815534,277# CHECK-NEXT:         "Instructions": 200,278# CHECK-NEXT:         "Iterations": 100,279# CHECK-NEXT:         "TotalCycles": 103,280# CHECK-NEXT:         "TotaluOps": 200,281# CHECK-NEXT:         "uOpsPerCycle": 1.941747572815534282# CHECK-NEXT:       },283# CHECK-NEXT:       "TimelineView": {284# CHECK-NEXT:         "TimelineInfo": [285# CHECK-NEXT:           {286# CHECK-NEXT:             "CycleDispatched": 0,287# CHECK-NEXT:             "CycleExecuted": 2,288# CHECK-NEXT:             "CycleIssued": 1,289# CHECK-NEXT:             "CycleReady": 0,290# CHECK-NEXT:             "CycleRetired": 3291# CHECK-NEXT:           },292# CHECK-NEXT:           {293# CHECK-NEXT:             "CycleDispatched": 0,294# CHECK-NEXT:             "CycleExecuted": 2,295# CHECK-NEXT:             "CycleIssued": 1,296# CHECK-NEXT:             "CycleReady": 0,297# CHECK-NEXT:             "CycleRetired": 3298# CHECK-NEXT:           }299# CHECK-NEXT:         ]300# CHECK-NEXT:       }301# CHECK-NEXT:     }302# CHECK-NEXT:   ],303# CHECK-NEXT:   "SimulationParameters": {304# CHECK-NEXT:     "-march": "x86_64",305# CHECK-NEXT:     "-mcpu": "haswell",306# CHECK-NEXT:     "-mtriple": "x86_64-unknown-unknown"307# CHECK-NEXT:   },308# CHECK-NEXT:   "TargetInfo": {309# CHECK-NEXT:     "CPUName": "haswell",310# CHECK-NEXT:     "Resources": [311# CHECK-NEXT:       "HWDivider",312# CHECK-NEXT:       "HWFPDivider",313# CHECK-NEXT:       "HWPort0",314# CHECK-NEXT:       "HWPort1",315# CHECK-NEXT:       "HWPort2",316# CHECK-NEXT:       "HWPort3",317# CHECK-NEXT:       "HWPort4",318# CHECK-NEXT:       "HWPort5",319# CHECK-NEXT:       "HWPort6",320# CHECK-NEXT:       "HWPort7"321# CHECK-NEXT:     ]322# CHECK-NEXT:   }323# CHECK-NEXT: }324