262 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=haswell --json -instruction-tables < %s | FileCheck %s3# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=haswell --json -instruction-tables -o %t.json < %s4# RUN: cat %t.json \5# RUN: | %python -c 'import json, sys; json.dump(json.loads(sys.stdin.read()), sys.stdout, sort_keys=True, indent=2)' \6# RUN: | FileCheck %s7 8# LLVM-MCA-BEGIN9add %eax, %eax10# LLVM-MCA-END11# LLVM-MCA-BEGIN12add %ebx, %ebx13add %ecx, %ecx14# LLVM-MCA-END15# LLVM-MCA-BEGIN16add %edx, %edx17# LLVM-MCA-END18 19# CHECK: {20# CHECK-NEXT: "CodeRegions": [21# CHECK-NEXT: {22# CHECK-NEXT: "InstructionInfoView": {23# CHECK-NEXT: "InstructionList": [24# CHECK-NEXT: {25# CHECK-NEXT: "Instruction": 0,26# CHECK-NEXT: "Latency": 1,27# CHECK-NEXT: "NumMicroOpcodes": 1,28# CHECK-NEXT: "RThroughput": 0.25,29# CHECK-NEXT: "hasUnmodeledSideEffects": false,30# CHECK-NEXT: "mayLoad": false,31# CHECK-NEXT: "mayStore": false32# CHECK-NEXT: }33# CHECK-NEXT: ]34# CHECK-NEXT: },35# CHECK-NEXT: "Instructions": [36# CHECK-NEXT: "addl\t%eax, %eax"37# CHECK-NEXT: ],38# CHECK-NEXT: "Name": "",39# CHECK-NEXT: "ResourcePressureView": {40# CHECK-NEXT: "ResourcePressureInfo": [41# CHECK-NEXT: {42# CHECK-NEXT: "InstructionIndex": 0,43# CHECK-NEXT: "ResourceIndex": 2,44# CHECK-NEXT: "ResourceUsage": 0.2545# CHECK-NEXT: },46# CHECK-NEXT: {47# CHECK-NEXT: "InstructionIndex": 0,48# CHECK-NEXT: "ResourceIndex": 3,49# CHECK-NEXT: "ResourceUsage": 0.2550# CHECK-NEXT: },51# CHECK-NEXT: {52# CHECK-NEXT: "InstructionIndex": 0,53# CHECK-NEXT: "ResourceIndex": 7,54# CHECK-NEXT: "ResourceUsage": 0.2555# CHECK-NEXT: },56# CHECK-NEXT: {57# CHECK-NEXT: "InstructionIndex": 0,58# CHECK-NEXT: "ResourceIndex": 8,59# CHECK-NEXT: "ResourceUsage": 0.2560# CHECK-NEXT: },61# CHECK-NEXT: {62# CHECK-NEXT: "InstructionIndex": 1,63# CHECK-NEXT: "ResourceIndex": 2,64# CHECK-NEXT: "ResourceUsage": 0.2565# CHECK-NEXT: },66# CHECK-NEXT: {67# CHECK-NEXT: "InstructionIndex": 1,68# CHECK-NEXT: "ResourceIndex": 3,69# CHECK-NEXT: "ResourceUsage": 0.2570# CHECK-NEXT: },71# CHECK-NEXT: {72# CHECK-NEXT: "InstructionIndex": 1,73# CHECK-NEXT: "ResourceIndex": 7,74# CHECK-NEXT: "ResourceUsage": 0.2575# CHECK-NEXT: },76# CHECK-NEXT: {77# CHECK-NEXT: "InstructionIndex": 1,78# CHECK-NEXT: "ResourceIndex": 8,79# CHECK-NEXT: "ResourceUsage": 0.2580# CHECK-NEXT: }81# CHECK-NEXT: ]82# CHECK-NEXT: }83# CHECK-NEXT: },84# CHECK-NEXT: {85# CHECK-NEXT: "InstructionInfoView": {86# CHECK-NEXT: "InstructionList": [87# CHECK-NEXT: {88# CHECK-NEXT: "Instruction": 0,89# CHECK-NEXT: "Latency": 1,90# CHECK-NEXT: "NumMicroOpcodes": 1,91# CHECK-NEXT: "RThroughput": 0.25,92# CHECK-NEXT: "hasUnmodeledSideEffects": false,93# CHECK-NEXT: "mayLoad": false,94# CHECK-NEXT: "mayStore": false95# CHECK-NEXT: },96# CHECK-NEXT: {97# CHECK-NEXT: "Instruction": 1,98# CHECK-NEXT: "Latency": 1,99# CHECK-NEXT: "NumMicroOpcodes": 1,100# CHECK-NEXT: "RThroughput": 0.25,101# CHECK-NEXT: "hasUnmodeledSideEffects": false,102# CHECK-NEXT: "mayLoad": false,103# CHECK-NEXT: "mayStore": false104# CHECK-NEXT: }105# CHECK-NEXT: ]106# CHECK-NEXT: },107# CHECK-NEXT: "Instructions": [108# CHECK-NEXT: "addl\t%ebx, %ebx",109# CHECK-NEXT: "addl\t%ecx, %ecx"110# CHECK-NEXT: ],111# CHECK-NEXT: "Name": "",112# CHECK-NEXT: "ResourcePressureView": {113# CHECK-NEXT: "ResourcePressureInfo": [114# CHECK-NEXT: {115# CHECK-NEXT: "InstructionIndex": 0,116# CHECK-NEXT: "ResourceIndex": 2,117# CHECK-NEXT: "ResourceUsage": 0.25118# CHECK-NEXT: },119# CHECK-NEXT: {120# CHECK-NEXT: "InstructionIndex": 0,121# CHECK-NEXT: "ResourceIndex": 3,122# CHECK-NEXT: "ResourceUsage": 0.25123# CHECK-NEXT: },124# CHECK-NEXT: {125# CHECK-NEXT: "InstructionIndex": 0,126# CHECK-NEXT: "ResourceIndex": 7,127# CHECK-NEXT: "ResourceUsage": 0.25128# CHECK-NEXT: },129# CHECK-NEXT: {130# CHECK-NEXT: "InstructionIndex": 0,131# CHECK-NEXT: "ResourceIndex": 8,132# CHECK-NEXT: "ResourceUsage": 0.25133# CHECK-NEXT: },134# CHECK-NEXT: {135# CHECK-NEXT: "InstructionIndex": 1,136# CHECK-NEXT: "ResourceIndex": 2,137# CHECK-NEXT: "ResourceUsage": 0.25138# CHECK-NEXT: },139# CHECK-NEXT: {140# CHECK-NEXT: "InstructionIndex": 1,141# CHECK-NEXT: "ResourceIndex": 3,142# CHECK-NEXT: "ResourceUsage": 0.25143# CHECK-NEXT: },144# CHECK-NEXT: {145# CHECK-NEXT: "InstructionIndex": 1,146# CHECK-NEXT: "ResourceIndex": 7,147# CHECK-NEXT: "ResourceUsage": 0.25148# CHECK-NEXT: },149# CHECK-NEXT: {150# CHECK-NEXT: "InstructionIndex": 1,151# CHECK-NEXT: "ResourceIndex": 8,152# CHECK-NEXT: "ResourceUsage": 0.25153# CHECK-NEXT: },154# CHECK-NEXT: {155# CHECK-NEXT: "InstructionIndex": 2,156# CHECK-NEXT: "ResourceIndex": 2,157# CHECK-NEXT: "ResourceUsage": 0.5158# CHECK-NEXT: },159# CHECK-NEXT: {160# CHECK-NEXT: "InstructionIndex": 2,161# CHECK-NEXT: "ResourceIndex": 3,162# CHECK-NEXT: "ResourceUsage": 0.5163# CHECK-NEXT: },164# CHECK-NEXT: {165# CHECK-NEXT: "InstructionIndex": 2,166# CHECK-NEXT: "ResourceIndex": 7,167# CHECK-NEXT: "ResourceUsage": 0.5168# CHECK-NEXT: },169# CHECK-NEXT: {170# CHECK-NEXT: "InstructionIndex": 2,171# CHECK-NEXT: "ResourceIndex": 8,172# CHECK-NEXT: "ResourceUsage": 0.5173# CHECK-NEXT: }174# CHECK-NEXT: ]175# CHECK-NEXT: }176# CHECK-NEXT: },177# CHECK-NEXT: {178# CHECK-NEXT: "InstructionInfoView": {179# CHECK-NEXT: "InstructionList": [180# CHECK-NEXT: {181# CHECK-NEXT: "Instruction": 0,182# CHECK-NEXT: "Latency": 1,183# CHECK-NEXT: "NumMicroOpcodes": 1,184# CHECK-NEXT: "RThroughput": 0.25,185# CHECK-NEXT: "hasUnmodeledSideEffects": false,186# CHECK-NEXT: "mayLoad": false,187# CHECK-NEXT: "mayStore": false188# CHECK-NEXT: }189# CHECK-NEXT: ]190# CHECK-NEXT: },191# CHECK-NEXT: "Instructions": [192# CHECK-NEXT: "addl\t%edx, %edx"193# CHECK-NEXT: ],194# CHECK-NEXT: "Name": "",195# CHECK-NEXT: "ResourcePressureView": {196# CHECK-NEXT: "ResourcePressureInfo": [197# CHECK-NEXT: {198# CHECK-NEXT: "InstructionIndex": 0,199# CHECK-NEXT: "ResourceIndex": 2,200# CHECK-NEXT: "ResourceUsage": 0.25201# CHECK-NEXT: },202# CHECK-NEXT: {203# CHECK-NEXT: "InstructionIndex": 0,204# CHECK-NEXT: "ResourceIndex": 3,205# CHECK-NEXT: "ResourceUsage": 0.25206# CHECK-NEXT: },207# CHECK-NEXT: {208# CHECK-NEXT: "InstructionIndex": 0,209# CHECK-NEXT: "ResourceIndex": 7,210# CHECK-NEXT: "ResourceUsage": 0.25211# CHECK-NEXT: },212# CHECK-NEXT: {213# CHECK-NEXT: "InstructionIndex": 0,214# CHECK-NEXT: "ResourceIndex": 8,215# CHECK-NEXT: "ResourceUsage": 0.25216# CHECK-NEXT: },217# CHECK-NEXT: {218# CHECK-NEXT: "InstructionIndex": 1,219# CHECK-NEXT: "ResourceIndex": 2,220# CHECK-NEXT: "ResourceUsage": 0.25221# CHECK-NEXT: },222# CHECK-NEXT: {223# CHECK-NEXT: "InstructionIndex": 1,224# CHECK-NEXT: "ResourceIndex": 3,225# CHECK-NEXT: "ResourceUsage": 0.25226# CHECK-NEXT: },227# CHECK-NEXT: {228# CHECK-NEXT: "InstructionIndex": 1,229# CHECK-NEXT: "ResourceIndex": 7,230# CHECK-NEXT: "ResourceUsage": 0.25231# CHECK-NEXT: },232# CHECK-NEXT: {233# CHECK-NEXT: "InstructionIndex": 1,234# CHECK-NEXT: "ResourceIndex": 8,235# CHECK-NEXT: "ResourceUsage": 0.25236# CHECK-NEXT: }237# CHECK-NEXT: ]238# CHECK-NEXT: }239# CHECK-NEXT: }240# CHECK-NEXT: ],241# CHECK-NEXT: "SimulationParameters": {242# CHECK-NEXT: "-march": "x86_64",243# CHECK-NEXT: "-mcpu": "haswell",244# CHECK-NEXT: "-mtriple": "x86_64-unknown-unknown"245# CHECK-NEXT: },246# CHECK-NEXT: "TargetInfo": {247# CHECK-NEXT: "CPUName": "haswell",248# CHECK-NEXT: "Resources": [249# CHECK-NEXT: "HWDivider",250# CHECK-NEXT: "HWFPDivider",251# CHECK-NEXT: "HWPort0",252# CHECK-NEXT: "HWPort1",253# CHECK-NEXT: "HWPort2",254# CHECK-NEXT: "HWPort3",255# CHECK-NEXT: "HWPort4",256# CHECK-NEXT: "HWPort5",257# CHECK-NEXT: "HWPort6",258# CHECK-NEXT: "HWPort7"259# CHECK-NEXT: ]260# CHECK-NEXT: }261# CHECK-NEXT: }262