328 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=icelake-server -instruction-tables < %s | FileCheck %s3 4cmovow %si, %di5cmovnow %si, %di6cmovbw %si, %di7cmovaew %si, %di8cmovew %si, %di9cmovnew %si, %di10cmovbew %si, %di11cmovaw %si, %di12cmovsw %si, %di13cmovnsw %si, %di14cmovpw %si, %di15cmovnpw %si, %di16cmovlw %si, %di17cmovgew %si, %di18cmovlew %si, %di19cmovgw %si, %di20 21cmovow (%rax), %di22cmovnow (%rax), %di23cmovbw (%rax), %di24cmovaew (%rax), %di25cmovew (%rax), %di26cmovnew (%rax), %di27cmovbew (%rax), %di28cmovaw (%rax), %di29cmovsw (%rax), %di30cmovnsw (%rax), %di31cmovpw (%rax), %di32cmovnpw (%rax), %di33cmovlw (%rax), %di34cmovgew (%rax), %di35cmovlew (%rax), %di36cmovgw (%rax), %di37 38cmovol %esi, %edi39cmovnol %esi, %edi40cmovbl %esi, %edi41cmovael %esi, %edi42cmovel %esi, %edi43cmovnel %esi, %edi44cmovbel %esi, %edi45cmoval %esi, %edi46cmovsl %esi, %edi47cmovnsl %esi, %edi48cmovpl %esi, %edi49cmovnpl %esi, %edi50cmovll %esi, %edi51cmovgel %esi, %edi52cmovlel %esi, %edi53cmovgl %esi, %edi54 55cmovol (%rax), %edi56cmovnol (%rax), %edi57cmovbl (%rax), %edi58cmovael (%rax), %edi59cmovel (%rax), %edi60cmovnel (%rax), %edi61cmovbel (%rax), %edi62cmoval (%rax), %edi63cmovsl (%rax), %edi64cmovnsl (%rax), %edi65cmovpl (%rax), %edi66cmovnpl (%rax), %edi67cmovll (%rax), %edi68cmovgel (%rax), %edi69cmovlel (%rax), %edi70cmovgl (%rax), %edi71 72cmovoq %rsi, %rdi73cmovnoq %rsi, %rdi74cmovbq %rsi, %rdi75cmovaeq %rsi, %rdi76cmoveq %rsi, %rdi77cmovneq %rsi, %rdi78cmovbeq %rsi, %rdi79cmovaq %rsi, %rdi80cmovsq %rsi, %rdi81cmovnsq %rsi, %rdi82cmovpq %rsi, %rdi83cmovnpq %rsi, %rdi84cmovlq %rsi, %rdi85cmovgeq %rsi, %rdi86cmovleq %rsi, %rdi87cmovgq %rsi, %rdi88 89cmovoq (%rax), %rdi90cmovnoq (%rax), %rdi91cmovbq (%rax), %rdi92cmovaeq (%rax), %rdi93cmoveq (%rax), %rdi94cmovneq (%rax), %rdi95cmovbeq (%rax), %rdi96cmovaq (%rax), %rdi97cmovsq (%rax), %rdi98cmovnsq (%rax), %rdi99cmovpq (%rax), %rdi100cmovnpq (%rax), %rdi101cmovlq (%rax), %rdi102cmovgeq (%rax), %rdi103cmovleq (%rax), %rdi104cmovgq (%rax), %rdi105 106# CHECK: Instruction Info:107# CHECK-NEXT: [1]: #uOps108# CHECK-NEXT: [2]: Latency109# CHECK-NEXT: [3]: RThroughput110# CHECK-NEXT: [4]: MayLoad111# CHECK-NEXT: [5]: MayStore112# CHECK-NEXT: [6]: HasSideEffects (U)113 114# CHECK: [1] [2] [3] [4] [5] [6] Instructions:115# CHECK-NEXT: 1 1 0.50 cmovow %si, %di116# CHECK-NEXT: 1 1 0.50 cmovnow %si, %di117# CHECK-NEXT: 1 1 0.50 cmovbw %si, %di118# CHECK-NEXT: 1 1 0.50 cmovaew %si, %di119# CHECK-NEXT: 1 1 0.50 cmovew %si, %di120# CHECK-NEXT: 1 1 0.50 cmovnew %si, %di121# CHECK-NEXT: 2 2 1.00 cmovbew %si, %di122# CHECK-NEXT: 2 2 1.00 cmovaw %si, %di123# CHECK-NEXT: 1 1 0.50 cmovsw %si, %di124# CHECK-NEXT: 1 1 0.50 cmovnsw %si, %di125# CHECK-NEXT: 1 1 0.50 cmovpw %si, %di126# CHECK-NEXT: 1 1 0.50 cmovnpw %si, %di127# CHECK-NEXT: 1 1 0.50 cmovlw %si, %di128# CHECK-NEXT: 1 1 0.50 cmovgew %si, %di129# CHECK-NEXT: 1 1 0.50 cmovlew %si, %di130# CHECK-NEXT: 1 1 0.50 cmovgw %si, %di131# CHECK-NEXT: 2 6 0.50 * cmovow (%rax), %di132# CHECK-NEXT: 2 6 0.50 * cmovnow (%rax), %di133# CHECK-NEXT: 2 6 0.50 * cmovbw (%rax), %di134# CHECK-NEXT: 2 6 0.50 * cmovaew (%rax), %di135# CHECK-NEXT: 2 6 0.50 * cmovew (%rax), %di136# CHECK-NEXT: 2 6 0.50 * cmovnew (%rax), %di137# CHECK-NEXT: 3 7 1.00 * cmovbew (%rax), %di138# CHECK-NEXT: 3 7 1.00 * cmovaw (%rax), %di139# CHECK-NEXT: 2 6 0.50 * cmovsw (%rax), %di140# CHECK-NEXT: 2 6 0.50 * cmovnsw (%rax), %di141# CHECK-NEXT: 2 6 0.50 * cmovpw (%rax), %di142# CHECK-NEXT: 2 6 0.50 * cmovnpw (%rax), %di143# CHECK-NEXT: 2 6 0.50 * cmovlw (%rax), %di144# CHECK-NEXT: 2 6 0.50 * cmovgew (%rax), %di145# CHECK-NEXT: 2 6 0.50 * cmovlew (%rax), %di146# CHECK-NEXT: 2 6 0.50 * cmovgw (%rax), %di147# CHECK-NEXT: 1 1 0.50 cmovol %esi, %edi148# CHECK-NEXT: 1 1 0.50 cmovnol %esi, %edi149# CHECK-NEXT: 1 1 0.50 cmovbl %esi, %edi150# CHECK-NEXT: 1 1 0.50 cmovael %esi, %edi151# CHECK-NEXT: 1 1 0.50 cmovel %esi, %edi152# CHECK-NEXT: 1 1 0.50 cmovnel %esi, %edi153# CHECK-NEXT: 2 2 1.00 cmovbel %esi, %edi154# CHECK-NEXT: 2 2 1.00 cmoval %esi, %edi155# CHECK-NEXT: 1 1 0.50 cmovsl %esi, %edi156# CHECK-NEXT: 1 1 0.50 cmovnsl %esi, %edi157# CHECK-NEXT: 1 1 0.50 cmovpl %esi, %edi158# CHECK-NEXT: 1 1 0.50 cmovnpl %esi, %edi159# CHECK-NEXT: 1 1 0.50 cmovll %esi, %edi160# CHECK-NEXT: 1 1 0.50 cmovgel %esi, %edi161# CHECK-NEXT: 1 1 0.50 cmovlel %esi, %edi162# CHECK-NEXT: 1 1 0.50 cmovgl %esi, %edi163# CHECK-NEXT: 2 6 0.50 * cmovol (%rax), %edi164# CHECK-NEXT: 2 6 0.50 * cmovnol (%rax), %edi165# CHECK-NEXT: 2 6 0.50 * cmovbl (%rax), %edi166# CHECK-NEXT: 2 6 0.50 * cmovael (%rax), %edi167# CHECK-NEXT: 2 6 0.50 * cmovel (%rax), %edi168# CHECK-NEXT: 2 6 0.50 * cmovnel (%rax), %edi169# CHECK-NEXT: 3 7 1.00 * cmovbel (%rax), %edi170# CHECK-NEXT: 3 7 1.00 * cmoval (%rax), %edi171# CHECK-NEXT: 2 6 0.50 * cmovsl (%rax), %edi172# CHECK-NEXT: 2 6 0.50 * cmovnsl (%rax), %edi173# CHECK-NEXT: 2 6 0.50 * cmovpl (%rax), %edi174# CHECK-NEXT: 2 6 0.50 * cmovnpl (%rax), %edi175# CHECK-NEXT: 2 6 0.50 * cmovll (%rax), %edi176# CHECK-NEXT: 2 6 0.50 * cmovgel (%rax), %edi177# CHECK-NEXT: 2 6 0.50 * cmovlel (%rax), %edi178# CHECK-NEXT: 2 6 0.50 * cmovgl (%rax), %edi179# CHECK-NEXT: 1 1 0.50 cmovoq %rsi, %rdi180# CHECK-NEXT: 1 1 0.50 cmovnoq %rsi, %rdi181# CHECK-NEXT: 1 1 0.50 cmovbq %rsi, %rdi182# CHECK-NEXT: 1 1 0.50 cmovaeq %rsi, %rdi183# CHECK-NEXT: 1 1 0.50 cmoveq %rsi, %rdi184# CHECK-NEXT: 1 1 0.50 cmovneq %rsi, %rdi185# CHECK-NEXT: 2 2 1.00 cmovbeq %rsi, %rdi186# CHECK-NEXT: 2 2 1.00 cmovaq %rsi, %rdi187# CHECK-NEXT: 1 1 0.50 cmovsq %rsi, %rdi188# CHECK-NEXT: 1 1 0.50 cmovnsq %rsi, %rdi189# CHECK-NEXT: 1 1 0.50 cmovpq %rsi, %rdi190# CHECK-NEXT: 1 1 0.50 cmovnpq %rsi, %rdi191# CHECK-NEXT: 1 1 0.50 cmovlq %rsi, %rdi192# CHECK-NEXT: 1 1 0.50 cmovgeq %rsi, %rdi193# CHECK-NEXT: 1 1 0.50 cmovleq %rsi, %rdi194# CHECK-NEXT: 1 1 0.50 cmovgq %rsi, %rdi195# CHECK-NEXT: 2 6 0.50 * cmovoq (%rax), %rdi196# CHECK-NEXT: 2 6 0.50 * cmovnoq (%rax), %rdi197# CHECK-NEXT: 2 6 0.50 * cmovbq (%rax), %rdi198# CHECK-NEXT: 2 6 0.50 * cmovaeq (%rax), %rdi199# CHECK-NEXT: 2 6 0.50 * cmoveq (%rax), %rdi200# CHECK-NEXT: 2 6 0.50 * cmovneq (%rax), %rdi201# CHECK-NEXT: 3 7 1.00 * cmovbeq (%rax), %rdi202# CHECK-NEXT: 3 7 1.00 * cmovaq (%rax), %rdi203# CHECK-NEXT: 2 6 0.50 * cmovsq (%rax), %rdi204# CHECK-NEXT: 2 6 0.50 * cmovnsq (%rax), %rdi205# CHECK-NEXT: 2 6 0.50 * cmovpq (%rax), %rdi206# CHECK-NEXT: 2 6 0.50 * cmovnpq (%rax), %rdi207# CHECK-NEXT: 2 6 0.50 * cmovlq (%rax), %rdi208# CHECK-NEXT: 2 6 0.50 * cmovgeq (%rax), %rdi209# CHECK-NEXT: 2 6 0.50 * cmovleq (%rax), %rdi210# CHECK-NEXT: 2 6 0.50 * cmovgq (%rax), %rdi211 212# CHECK: Resources:213# CHECK-NEXT: [0] - ICXDivider214# CHECK-NEXT: [1] - ICXFPDivider215# CHECK-NEXT: [2] - ICXPort0216# CHECK-NEXT: [3] - ICXPort1217# CHECK-NEXT: [4] - ICXPort2218# CHECK-NEXT: [5] - ICXPort3219# CHECK-NEXT: [6] - ICXPort4220# CHECK-NEXT: [7] - ICXPort5221# CHECK-NEXT: [8] - ICXPort6222# CHECK-NEXT: [9] - ICXPort7223# CHECK-NEXT: [10] - ICXPort8224# CHECK-NEXT: [11] - ICXPort9225 226# CHECK: Resource pressure per iteration:227# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]228# CHECK-NEXT: - - 54.00 - 24.00 24.00 - - 54.00 - - -229 230# CHECK: Resource pressure by instruction:231# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:232# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovow %si, %di233# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnow %si, %di234# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovbw %si, %di235# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovaew %si, %di236# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovew %si, %di237# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnew %si, %di238# CHECK-NEXT: - - 1.00 - - - - - 1.00 - - - cmovbew %si, %di239# CHECK-NEXT: - - 1.00 - - - - - 1.00 - - - cmovaw %si, %di240# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovsw %si, %di241# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnsw %si, %di242# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovpw %si, %di243# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnpw %si, %di244# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovlw %si, %di245# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovgew %si, %di246# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovlew %si, %di247# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovgw %si, %di248# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovow (%rax), %di249# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnow (%rax), %di250# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovbw (%rax), %di251# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovaew (%rax), %di252# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovew (%rax), %di253# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnew (%rax), %di254# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - 1.00 - - - cmovbew (%rax), %di255# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - 1.00 - - - cmovaw (%rax), %di256# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovsw (%rax), %di257# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnsw (%rax), %di258# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovpw (%rax), %di259# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnpw (%rax), %di260# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovlw (%rax), %di261# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovgew (%rax), %di262# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovlew (%rax), %di263# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovgw (%rax), %di264# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovol %esi, %edi265# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnol %esi, %edi266# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovbl %esi, %edi267# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovael %esi, %edi268# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovel %esi, %edi269# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnel %esi, %edi270# CHECK-NEXT: - - 1.00 - - - - - 1.00 - - - cmovbel %esi, %edi271# CHECK-NEXT: - - 1.00 - - - - - 1.00 - - - cmoval %esi, %edi272# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovsl %esi, %edi273# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnsl %esi, %edi274# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovpl %esi, %edi275# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnpl %esi, %edi276# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovll %esi, %edi277# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovgel %esi, %edi278# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovlel %esi, %edi279# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovgl %esi, %edi280# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovol (%rax), %edi281# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnol (%rax), %edi282# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovbl (%rax), %edi283# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovael (%rax), %edi284# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovel (%rax), %edi285# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnel (%rax), %edi286# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - 1.00 - - - cmovbel (%rax), %edi287# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - 1.00 - - - cmoval (%rax), %edi288# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovsl (%rax), %edi289# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnsl (%rax), %edi290# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovpl (%rax), %edi291# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnpl (%rax), %edi292# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovll (%rax), %edi293# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovgel (%rax), %edi294# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovlel (%rax), %edi295# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovgl (%rax), %edi296# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovoq %rsi, %rdi297# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnoq %rsi, %rdi298# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovbq %rsi, %rdi299# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovaeq %rsi, %rdi300# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmoveq %rsi, %rdi301# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovneq %rsi, %rdi302# CHECK-NEXT: - - 1.00 - - - - - 1.00 - - - cmovbeq %rsi, %rdi303# CHECK-NEXT: - - 1.00 - - - - - 1.00 - - - cmovaq %rsi, %rdi304# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovsq %rsi, %rdi305# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnsq %rsi, %rdi306# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovpq %rsi, %rdi307# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovnpq %rsi, %rdi308# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovlq %rsi, %rdi309# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovgeq %rsi, %rdi310# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovleq %rsi, %rdi311# CHECK-NEXT: - - 0.50 - - - - - 0.50 - - - cmovgq %rsi, %rdi312# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovoq (%rax), %rdi313# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnoq (%rax), %rdi314# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovbq (%rax), %rdi315# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovaeq (%rax), %rdi316# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmoveq (%rax), %rdi317# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovneq (%rax), %rdi318# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - 1.00 - - - cmovbeq (%rax), %rdi319# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - 1.00 - - - cmovaq (%rax), %rdi320# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovsq (%rax), %rdi321# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnsq (%rax), %rdi322# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovpq (%rax), %rdi323# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovnpq (%rax), %rdi324# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovlq (%rax), %rdi325# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovgeq (%rax), %rdi326# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovleq (%rax), %rdi327# CHECK-NEXT: - - 0.50 - 0.50 0.50 - - 0.50 - - - cmovgq (%rax), %rdi328