1# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py 2# RUN: llvm-mca -mtriple=x86_64-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s 3 4cmovow %si, %di 5cmovnow %si, %di 6cmovbw %si, %di 7cmovaew %si, %di 8cmovew %si, %di 9cmovnew %si, %di 10cmovbew %si, %di 11cmovaw %si, %di 12cmovsw %si, %di 13cmovnsw %si, %di 14cmovpw %si, %di 15cmovnpw %si, %di 16cmovlw %si, %di 17cmovgew %si, %di 18cmovlew %si, %di 19cmovgw %si, %di 20 21cmovow (%rax), %di 22cmovnow (%rax), %di 23cmovbw (%rax), %di 24cmovaew (%rax), %di 25cmovew (%rax), %di 26cmovnew (%rax), %di 27cmovbew (%rax), %di 28cmovaw (%rax), %di 29cmovsw (%rax), %di 30cmovnsw (%rax), %di 31cmovpw (%rax), %di 32cmovnpw (%rax), %di 33cmovlw (%rax), %di 34cmovgew (%rax), %di 35cmovlew (%rax), %di 36cmovgw (%rax), %di 37 38cmovol %esi, %edi 39cmovnol %esi, %edi 40cmovbl %esi, %edi 41cmovael %esi, %edi 42cmovel %esi, %edi 43cmovnel %esi, %edi 44cmovbel %esi, %edi 45cmoval %esi, %edi 46cmovsl %esi, %edi 47cmovnsl %esi, %edi 48cmovpl %esi, %edi 49cmovnpl %esi, %edi 50cmovll %esi, %edi 51cmovgel %esi, %edi 52cmovlel %esi, %edi 53cmovgl %esi, %edi 54 55cmovol (%rax), %edi 56cmovnol (%rax), %edi 57cmovbl (%rax), %edi 58cmovael (%rax), %edi 59cmovel (%rax), %edi 60cmovnel (%rax), %edi 61cmovbel (%rax), %edi 62cmoval (%rax), %edi 63cmovsl (%rax), %edi 64cmovnsl (%rax), %edi 65cmovpl (%rax), %edi 66cmovnpl (%rax), %edi 67cmovll (%rax), %edi 68cmovgel (%rax), %edi 69cmovlel (%rax), %edi 70cmovgl (%rax), %edi 71 72cmovoq %rsi, %rdi 73cmovnoq %rsi, %rdi 74cmovbq %rsi, %rdi 75cmovaeq %rsi, %rdi 76cmoveq %rsi, %rdi 77cmovneq %rsi, %rdi 78cmovbeq %rsi, %rdi 79cmovaq %rsi, %rdi 80cmovsq %rsi, %rdi 81cmovnsq %rsi, %rdi 82cmovpq %rsi, %rdi 83cmovnpq %rsi, %rdi 84cmovlq %rsi, %rdi 85cmovgeq %rsi, %rdi 86cmovleq %rsi, %rdi 87cmovgq %rsi, %rdi 88 89cmovoq (%rax), %rdi 90cmovnoq (%rax), %rdi 91cmovbq (%rax), %rdi 92cmovaeq (%rax), %rdi 93cmoveq (%rax), %rdi 94cmovneq (%rax), %rdi 95cmovbeq (%rax), %rdi 96cmovaq (%rax), %rdi 97cmovsq (%rax), %rdi 98cmovnsq (%rax), %rdi 99cmovpq (%rax), %rdi 100cmovnpq (%rax), %rdi 101cmovlq (%rax), %rdi 102cmovgeq (%rax), %rdi 103cmovleq (%rax), %rdi 104cmovgq (%rax), %rdi 105 106# CHECK: Instruction Info: 107# CHECK-NEXT: [1]: #uOps 108# CHECK-NEXT: [2]: Latency 109# CHECK-NEXT: [3]: RThroughput 110# CHECK-NEXT: [4]: MayLoad 111# CHECK-NEXT: [5]: MayStore 112# CHECK-NEXT: [6]: HasSideEffects (U) 113 114# CHECK: [1] [2] [3] [4] [5] [6] Instructions: 115# CHECK-NEXT: 1 1 0.50 cmovow %si, %di 116# CHECK-NEXT: 1 1 0.50 cmovnow %si, %di 117# CHECK-NEXT: 1 1 0.50 cmovbw %si, %di 118# CHECK-NEXT: 1 1 0.50 cmovaew %si, %di 119# CHECK-NEXT: 1 1 0.50 cmovew %si, %di 120# CHECK-NEXT: 1 1 0.50 cmovnew %si, %di 121# CHECK-NEXT: 1 1 0.50 cmovbew %si, %di 122# CHECK-NEXT: 1 1 0.50 cmovaw %si, %di 123# CHECK-NEXT: 1 1 0.50 cmovsw %si, %di 124# CHECK-NEXT: 1 1 0.50 cmovnsw %si, %di 125# CHECK-NEXT: 1 1 0.50 cmovpw %si, %di 126# CHECK-NEXT: 1 1 0.50 cmovnpw %si, %di 127# CHECK-NEXT: 1 1 0.50 cmovlw %si, %di 128# CHECK-NEXT: 1 1 0.50 cmovgew %si, %di 129# CHECK-NEXT: 1 1 0.50 cmovlew %si, %di 130# CHECK-NEXT: 1 1 0.50 cmovgw %si, %di 131# CHECK-NEXT: 1 4 1.00 * cmovow (%rax), %di 132# CHECK-NEXT: 1 4 1.00 * cmovnow (%rax), %di 133# CHECK-NEXT: 1 4 1.00 * cmovbw (%rax), %di 134# CHECK-NEXT: 1 4 1.00 * cmovaew (%rax), %di 135# CHECK-NEXT: 1 4 1.00 * cmovew (%rax), %di 136# CHECK-NEXT: 1 4 1.00 * cmovnew (%rax), %di 137# CHECK-NEXT: 1 4 1.00 * cmovbew (%rax), %di 138# CHECK-NEXT: 1 4 1.00 * cmovaw (%rax), %di 139# CHECK-NEXT: 1 4 1.00 * cmovsw (%rax), %di 140# CHECK-NEXT: 1 4 1.00 * cmovnsw (%rax), %di 141# CHECK-NEXT: 1 4 1.00 * cmovpw (%rax), %di 142# CHECK-NEXT: 1 4 1.00 * cmovnpw (%rax), %di 143# CHECK-NEXT: 1 4 1.00 * cmovlw (%rax), %di 144# CHECK-NEXT: 1 4 1.00 * cmovgew (%rax), %di 145# CHECK-NEXT: 1 4 1.00 * cmovlew (%rax), %di 146# CHECK-NEXT: 1 4 1.00 * cmovgw (%rax), %di 147# CHECK-NEXT: 1 1 0.50 cmovol %esi, %edi 148# CHECK-NEXT: 1 1 0.50 cmovnol %esi, %edi 149# CHECK-NEXT: 1 1 0.50 cmovbl %esi, %edi 150# CHECK-NEXT: 1 1 0.50 cmovael %esi, %edi 151# CHECK-NEXT: 1 1 0.50 cmovel %esi, %edi 152# CHECK-NEXT: 1 1 0.50 cmovnel %esi, %edi 153# CHECK-NEXT: 1 1 0.50 cmovbel %esi, %edi 154# CHECK-NEXT: 1 1 0.50 cmoval %esi, %edi 155# CHECK-NEXT: 1 1 0.50 cmovsl %esi, %edi 156# CHECK-NEXT: 1 1 0.50 cmovnsl %esi, %edi 157# CHECK-NEXT: 1 1 0.50 cmovpl %esi, %edi 158# CHECK-NEXT: 1 1 0.50 cmovnpl %esi, %edi 159# CHECK-NEXT: 1 1 0.50 cmovll %esi, %edi 160# CHECK-NEXT: 1 1 0.50 cmovgel %esi, %edi 161# CHECK-NEXT: 1 1 0.50 cmovlel %esi, %edi 162# CHECK-NEXT: 1 1 0.50 cmovgl %esi, %edi 163# CHECK-NEXT: 1 4 1.00 * cmovol (%rax), %edi 164# CHECK-NEXT: 1 4 1.00 * cmovnol (%rax), %edi 165# CHECK-NEXT: 1 4 1.00 * cmovbl (%rax), %edi 166# CHECK-NEXT: 1 4 1.00 * cmovael (%rax), %edi 167# CHECK-NEXT: 1 4 1.00 * cmovel (%rax), %edi 168# CHECK-NEXT: 1 4 1.00 * cmovnel (%rax), %edi 169# CHECK-NEXT: 1 4 1.00 * cmovbel (%rax), %edi 170# CHECK-NEXT: 1 4 1.00 * cmoval (%rax), %edi 171# CHECK-NEXT: 1 4 1.00 * cmovsl (%rax), %edi 172# CHECK-NEXT: 1 4 1.00 * cmovnsl (%rax), %edi 173# CHECK-NEXT: 1 4 1.00 * cmovpl (%rax), %edi 174# CHECK-NEXT: 1 4 1.00 * cmovnpl (%rax), %edi 175# CHECK-NEXT: 1 4 1.00 * cmovll (%rax), %edi 176# CHECK-NEXT: 1 4 1.00 * cmovgel (%rax), %edi 177# CHECK-NEXT: 1 4 1.00 * cmovlel (%rax), %edi 178# CHECK-NEXT: 1 4 1.00 * cmovgl (%rax), %edi 179# CHECK-NEXT: 1 1 0.50 cmovoq %rsi, %rdi 180# CHECK-NEXT: 1 1 0.50 cmovnoq %rsi, %rdi 181# CHECK-NEXT: 1 1 0.50 cmovbq %rsi, %rdi 182# CHECK-NEXT: 1 1 0.50 cmovaeq %rsi, %rdi 183# CHECK-NEXT: 1 1 0.50 cmoveq %rsi, %rdi 184# CHECK-NEXT: 1 1 0.50 cmovneq %rsi, %rdi 185# CHECK-NEXT: 1 1 0.50 cmovbeq %rsi, %rdi 186# CHECK-NEXT: 1 1 0.50 cmovaq %rsi, %rdi 187# CHECK-NEXT: 1 1 0.50 cmovsq %rsi, %rdi 188# CHECK-NEXT: 1 1 0.50 cmovnsq %rsi, %rdi 189# CHECK-NEXT: 1 1 0.50 cmovpq %rsi, %rdi 190# CHECK-NEXT: 1 1 0.50 cmovnpq %rsi, %rdi 191# CHECK-NEXT: 1 1 0.50 cmovlq %rsi, %rdi 192# CHECK-NEXT: 1 1 0.50 cmovgeq %rsi, %rdi 193# CHECK-NEXT: 1 1 0.50 cmovleq %rsi, %rdi 194# CHECK-NEXT: 1 1 0.50 cmovgq %rsi, %rdi 195# CHECK-NEXT: 1 4 1.00 * cmovoq (%rax), %rdi 196# CHECK-NEXT: 1 4 1.00 * cmovnoq (%rax), %rdi 197# CHECK-NEXT: 1 4 1.00 * cmovbq (%rax), %rdi 198# CHECK-NEXT: 1 4 1.00 * cmovaeq (%rax), %rdi 199# CHECK-NEXT: 1 4 1.00 * cmoveq (%rax), %rdi 200# CHECK-NEXT: 1 4 1.00 * cmovneq (%rax), %rdi 201# CHECK-NEXT: 1 4 1.00 * cmovbeq (%rax), %rdi 202# CHECK-NEXT: 1 4 1.00 * cmovaq (%rax), %rdi 203# CHECK-NEXT: 1 4 1.00 * cmovsq (%rax), %rdi 204# CHECK-NEXT: 1 4 1.00 * cmovnsq (%rax), %rdi 205# CHECK-NEXT: 1 4 1.00 * cmovpq (%rax), %rdi 206# CHECK-NEXT: 1 4 1.00 * cmovnpq (%rax), %rdi 207# CHECK-NEXT: 1 4 1.00 * cmovlq (%rax), %rdi 208# CHECK-NEXT: 1 4 1.00 * cmovgeq (%rax), %rdi 209# CHECK-NEXT: 1 4 1.00 * cmovleq (%rax), %rdi 210# CHECK-NEXT: 1 4 1.00 * cmovgq (%rax), %rdi 211 212# CHECK: Resources: 213# CHECK-NEXT: [0] - JALU0 214# CHECK-NEXT: [1] - JALU1 215# CHECK-NEXT: [2] - JDiv 216# CHECK-NEXT: [3] - JFPA 217# CHECK-NEXT: [4] - JFPM 218# CHECK-NEXT: [5] - JFPU0 219# CHECK-NEXT: [6] - JFPU1 220# CHECK-NEXT: [7] - JLAGU 221# CHECK-NEXT: [8] - JMul 222# CHECK-NEXT: [9] - JSAGU 223# CHECK-NEXT: [10] - JSTC 224# CHECK-NEXT: [11] - JVALU0 225# CHECK-NEXT: [12] - JVALU1 226# CHECK-NEXT: [13] - JVIMUL 227 228# CHECK: Resource pressure per iteration: 229# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] 230# CHECK-NEXT: 48.00 48.00 - - - - - 48.00 - - - - - - 231 232# CHECK: Resource pressure by instruction: 233# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions: 234# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovow %si, %di 235# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnow %si, %di 236# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovbw %si, %di 237# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovaew %si, %di 238# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovew %si, %di 239# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnew %si, %di 240# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovbew %si, %di 241# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovaw %si, %di 242# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovsw %si, %di 243# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnsw %si, %di 244# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovpw %si, %di 245# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnpw %si, %di 246# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovlw %si, %di 247# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovgew %si, %di 248# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovlew %si, %di 249# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovgw %si, %di 250# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovow (%rax), %di 251# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnow (%rax), %di 252# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovbw (%rax), %di 253# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovaew (%rax), %di 254# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovew (%rax), %di 255# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnew (%rax), %di 256# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovbew (%rax), %di 257# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovaw (%rax), %di 258# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovsw (%rax), %di 259# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnsw (%rax), %di 260# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovpw (%rax), %di 261# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnpw (%rax), %di 262# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovlw (%rax), %di 263# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovgew (%rax), %di 264# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovlew (%rax), %di 265# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovgw (%rax), %di 266# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovol %esi, %edi 267# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnol %esi, %edi 268# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovbl %esi, %edi 269# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovael %esi, %edi 270# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovel %esi, %edi 271# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnel %esi, %edi 272# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovbel %esi, %edi 273# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmoval %esi, %edi 274# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovsl %esi, %edi 275# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnsl %esi, %edi 276# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovpl %esi, %edi 277# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnpl %esi, %edi 278# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovll %esi, %edi 279# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovgel %esi, %edi 280# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovlel %esi, %edi 281# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovgl %esi, %edi 282# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovol (%rax), %edi 283# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnol (%rax), %edi 284# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovbl (%rax), %edi 285# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovael (%rax), %edi 286# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovel (%rax), %edi 287# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnel (%rax), %edi 288# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovbel (%rax), %edi 289# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmoval (%rax), %edi 290# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovsl (%rax), %edi 291# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnsl (%rax), %edi 292# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovpl (%rax), %edi 293# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnpl (%rax), %edi 294# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovll (%rax), %edi 295# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovgel (%rax), %edi 296# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovlel (%rax), %edi 297# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovgl (%rax), %edi 298# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovoq %rsi, %rdi 299# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnoq %rsi, %rdi 300# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovbq %rsi, %rdi 301# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovaeq %rsi, %rdi 302# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmoveq %rsi, %rdi 303# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovneq %rsi, %rdi 304# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovbeq %rsi, %rdi 305# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovaq %rsi, %rdi 306# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovsq %rsi, %rdi 307# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnsq %rsi, %rdi 308# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovpq %rsi, %rdi 309# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovnpq %rsi, %rdi 310# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovlq %rsi, %rdi 311# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovgeq %rsi, %rdi 312# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovleq %rsi, %rdi 313# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - cmovgq %rsi, %rdi 314# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovoq (%rax), %rdi 315# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnoq (%rax), %rdi 316# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovbq (%rax), %rdi 317# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovaeq (%rax), %rdi 318# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmoveq (%rax), %rdi 319# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovneq (%rax), %rdi 320# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovbeq (%rax), %rdi 321# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovaq (%rax), %rdi 322# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovsq (%rax), %rdi 323# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnsq (%rax), %rdi 324# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovpq (%rax), %rdi 325# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovnpq (%rax), %rdi 326# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovlq (%rax), %rdi 327# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovgeq (%rax), %rdi 328# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovleq (%rax), %rdi 329# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - - - cmovgq (%rax), %rdi 330