1{ 2 "License": [ 3 "Copyright (C) 2023 The Android Open Source Project", 4 "", 5 "Licensed under the Apache License, Version 2.0 (the “License”);", 6 "you may not use this file except in compliance with the License.", 7 "You may obtain a copy of the License at", 8 "", 9 " http://www.apache.org/licenses/LICENSE-2.0", 10 "", 11 "Unless required by applicable law or agreed to in writing, software", 12 "distributed under the License is distributed on an “AS IS” BASIS,", 13 "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", 14 "See the License for the specific language governing permissions and", 15 "limitations under the License." 16 ], 17 "arch": "x86_64", 18 "insns": [ 19 { 20 "encodings": { 21 "Adcq": { "opcodes": [ "13" ] }, 22 "Sbbq": { "opcodes": [ "1B" ] } 23 }, 24 "args": [ 25 { "class": "GeneralReg64", "usage": "use_def" }, 26 { "class": "Mem64", "usage": "use" }, 27 { "class": "FLAGS", "usage": "use_def" } 28 ] 29 }, 30 { 31 "encodings": { 32 "Adcq": { "opcodes": [ "81", "2" ] }, 33 "Sbbq": { "opcodes": [ "81", "3" ] } 34 }, 35 "args": [ 36 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 37 { "class": "Imm32" }, 38 { "class": "FLAGS", "usage": "use_def" } 39 ] 40 }, 41 { 42 "encodings": { 43 "Adcq": { "opcodes": [ "11" ], "reg_to_rm": true }, 44 "Sbbq": { "opcodes": [ "19" ], "reg_to_rm": true } 45 }, 46 "args": [ 47 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 48 { "class": "GeneralReg64", "usage": "use" }, 49 { "class": "FLAGS", "usage": "use_def" } 50 ] 51 }, 52 { 53 "encodings": { 54 "AdcqAccumulator": { "opcodes": [ "48", "15" ] }, 55 "SbbqAccumulator": { "opcodes": [ "48", "1D" ] } 56 }, 57 "args": [ 58 { "class": "RAX", "usage": "use_def" }, 59 { "class": "Imm32" }, 60 { "class": "FLAGS", "usage": "use_def" } 61 ] 62 }, 63 { 64 "encodings": { 65 "AdcqImm8": { "opcodes": [ "83", "2" ] }, 66 "Rclq": { "opcodes": [ "C1", "2" ] }, 67 "Rcrq": { "opcodes": [ "C1", "3" ] }, 68 "SbbqImm8": { "opcodes": [ "83", "3" ] } 69 }, 70 "args": [ 71 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 72 { "class": "Imm8" }, 73 { "class": "FLAGS", "usage": "use_def" } 74 ] 75 }, 76 { 77 "encodings": { 78 "Addq": { "opcodes": [ "01" ], "reg_to_rm": true }, 79 "Andq": { "opcodes": [ "21" ], "reg_to_rm": true }, 80 "Btcq": { "opcodes": [ "0F", "BB" ], "reg_to_rm": true }, 81 "Btrq": { "opcodes": [ "0F", "B3" ], "reg_to_rm": true }, 82 "Btsq": { "opcodes": [ "0F", "AB" ], "reg_to_rm": true }, 83 "Orq": { "opcodes": [ "09" ], "reg_to_rm": true }, 84 "Subq": { "opcodes": [ "29" ], "reg_to_rm": true }, 85 "Xorq": { "opcodes": [ "31" ], "reg_to_rm": true } 86 }, 87 "args": [ 88 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 89 { "class": "GeneralReg64", "usage": "use" }, 90 { "class": "FLAGS", "usage": "def" } 91 ] 92 }, 93 { 94 "encodings": { 95 "Addq": { "opcodes": [ "03" ] }, 96 "Andq": { "opcodes": [ "23" ] }, 97 "Orq": { "opcodes": [ "0B" ] }, 98 "Subq": { "opcodes": [ "2B" ] }, 99 "Xorq": { "opcodes": [ "33" ] } 100 }, 101 "args": [ 102 { "class": "GeneralReg64", "usage": "use_def" }, 103 { "class": "Mem64", "usage": "use" }, 104 { "class": "FLAGS", "usage": "def" } 105 ] 106 }, 107 { 108 "encodings": { 109 "Addq": { "opcodes": [ "81", "0" ] }, 110 "Andq": { "opcodes": [ "81", "4" ] }, 111 "Orq": { "opcodes": [ "81", "1" ] }, 112 "Subq": { "opcodes": [ "81", "5" ] }, 113 "Xorq": { "opcodes": [ "81", "6" ] } 114 }, 115 "args": [ 116 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 117 { "class": "Imm32" }, 118 { "class": "FLAGS", "usage": "def" } 119 ] 120 }, 121 { 122 "encodings": { 123 "AddqAccumulator": { "opcodes": [ "48", "05" ] }, 124 "AndqAccumulator": { "opcodes": [ "48", "25" ] }, 125 "OrqAccumulator": { "opcodes": [ "48", "0D" ] }, 126 "SubqAccumulator": { "opcodes": [ "48", "2D" ] }, 127 "XorqAccumulator": { "opcodes": [ "48", "35" ] } 128 }, 129 "args": [ 130 { "class": "RAX", "usage": "use_def" }, 131 { "class": "Imm32" }, 132 { "class": "FLAGS", "usage": "def" } 133 ] 134 }, 135 { 136 "encodings": { 137 "AddqImm8": { "opcodes": [ "83", "0" ] }, 138 "AndqImm8": { "opcodes": [ "83", "4" ] }, 139 "Btcq": { "opcodes": [ "0F", "BA", "7" ] }, 140 "Btq": { "opcodes": [ "0F", "BA", "4" ] }, 141 "Btrq": { "opcodes": [ "0F", "BA", "6" ] }, 142 "Btsq": { "opcodes": [ "0F", "BA", "5" ] }, 143 "OrqImm8": { "opcodes": [ "83", "1" ] }, 144 "Rolq": { "opcodes": [ "C1", "0" ] }, 145 "Rorq": { "opcodes": [ "C1", "1" ] }, 146 "Sarq": { "opcodes": [ "C1", "7" ] }, 147 "Shlq": { "opcodes": [ "C1", "4" ] }, 148 "Shrq": { "opcodes": [ "C1", "5" ] }, 149 "SubqImm8": { "opcodes": [ "83", "5" ] }, 150 "XorqImm8": { "opcodes": [ "83", "6" ] } 151 }, 152 "args": [ 153 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 154 { "class": "Imm8" }, 155 { "class": "FLAGS", "usage": "def" } 156 ] 157 }, 158 { 159 "encodings": { 160 "Andnq": { "feature": "BMI", "opcodes": [ "C4", "02", "80", "F2" ], "vex_rm_to_reg": true } 161 }, 162 "args": [ 163 { "class": "GeneralReg64", "usage": "def" }, 164 { "class": "GeneralReg64", "usage": "use" }, 165 { "class": "GeneralReg64/Mem64", "usage": "use" }, 166 { "class": "FLAGS", "usage": "def" } 167 ] 168 }, 169 { 170 "encodings": { 171 "Bextrq": { "feature": "BMI", "opcodes": [ "C4", "02", "80", "F7" ] }, 172 "Bzhiq": { "feature": "BMI2", "opcodes": [ "C4", "02", "80", "F5" ] } 173 }, 174 "args": [ 175 { "class": "GeneralReg64", "usage": "use_def" }, 176 { "class": "GeneralReg64/Mem64", "usage": "use" }, 177 { "class": "GeneralReg64", "usage": "use" }, 178 { "class": "FLAGS", "usage": "def" } 179 ] 180 }, 181 { 182 "encodings": { 183 "Blsiq": { "feature": "BMI", "opcodes": [ "C4", "02", "80", "F3", "3" ], "rm_to_vex": true }, 184 "Blsmskq": { "feature": "BMI", "opcodes": [ "C4", "02", "80", "F3", "2" ], "rm_to_vex": true }, 185 "Blsrq": { "feature": "BMI", "opcodes": [ "C4", "02", "80", "F3", "1" ], "rm_to_vex": true }, 186 "Bsfq": { "opcodes": [ "0F", "BC" ] }, 187 "Bsrq": { "opcodes": [ "0F", "BD" ] }, 188 "Lzcntq": { "feature": "LZCNT", "opcodes": [ "F3", "0F", "BD" ] }, 189 "Popcntq": { "feature": "POPCNT", "opcodes": [ "F3", "0F", "B8" ] }, 190 "Tzcntq": { "feature": "BMI", "opcodes": [ "F3", "0F", "BC" ] } 191 }, 192 "args": [ 193 { "class": "GeneralReg64", "usage": "def" }, 194 { "class": "GeneralReg64/Mem64", "usage": "use" }, 195 { "class": "FLAGS", "usage": "def" } 196 ] 197 }, 198 { 199 "encodings": { 200 "Bswapq": { "opcodes": [ "0F", "C8" ] } 201 }, 202 "args": [ 203 { "class": "GeneralReg64", "usage": "use_def" } 204 ] 205 }, 206 { 207 "encodings": { 208 "Btq": { "opcodes": [ "0F", "A3" ], "reg_to_rm": true }, 209 "Cmpq": { "opcodes": [ "39" ], "reg_to_rm": true }, 210 "Testq": { "opcodes": [ "85" ], "reg_to_rm": true } 211 }, 212 "args": [ 213 { "class": "GeneralReg64/Mem64", "usage": "use" }, 214 { "class": "GeneralReg64", "usage": "use" }, 215 { "class": "FLAGS", "usage": "def" } 216 ] 217 }, 218 { 219 "encodings": { 220 "Callq": { "opcodes": [ "FF", "2" ] } 221 }, 222 "args": [ 223 { "class": "RSP", "usage": "use_def" }, 224 { "class": "VecMem64", "usage": "use" } 225 ] 226 }, 227 { 228 "encodings": { 229 "Cdqe": { "opcodes": [ "48", "98" ] }, 230 "Cltq": { "opcodes": [ "48", "98" ] } 231 }, 232 "args": [ 233 { "class": "EAX", "usage": "use" }, 234 { "class": "RAX", "usage": "def" } 235 ] 236 }, 237 { 238 "encodings": { 239 "Cmovq": { "opcodes": [ "0F", "40" ] } 240 }, 241 "args": [ 242 { "class": "Cond" }, 243 { "class": "GeneralReg64", "usage": "use_def" }, 244 { "class": "GeneralReg64/Mem64", "usage": "use" }, 245 { "class": "FLAGS", "usage": "use" } 246 ] 247 }, 248 { 249 "encodings": { 250 "CmpXchg16b": { "opcodes": [ "0F", "C7", "1" ] }, 251 "LockCmpXchg16b": { "opcodes": [ "F0", "0F", "C7", "1" ] } 252 }, 253 "args": [ 254 { "class": "RAX", "usage": "use_def" }, 255 { "class": "RDX", "usage": "use_def" }, 256 { "class": "RBX", "usage": "use" }, 257 { "class": "RCX", "usage": "use" }, 258 { "class": "Mem128", "usage": "use_def" }, 259 { "class": "FLAGS", "usage": "def" } 260 ] 261 }, 262 { 263 "encodings": { 264 "CmpXchgq": { "opcodes": [ "0F", "B1" ], "reg_to_rm": true } 265 }, 266 "args": [ 267 { "class": "RAX", "usage": "use_def" }, 268 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 269 { "class": "GeneralReg64", "usage": "use" }, 270 { "class": "FLAGS", "usage": "def" } 271 ] 272 }, 273 { 274 "encodings": { 275 "Cmpq": { "opcodes": [ "81", "7" ] }, 276 "Testq": { "opcodes": [ "F7", "0" ] } 277 }, 278 "args": [ 279 { "class": "GeneralReg64/Mem64", "usage": "use" }, 280 { "class": "Imm32" }, 281 { "class": "FLAGS", "usage": "def" } 282 ] 283 }, 284 { 285 "encodings": { 286 "Cmpq": { "opcodes": [ "3B" ] } 287 }, 288 "args": [ 289 { "class": "GeneralReg64", "usage": "use" }, 290 { "class": "Mem64", "usage": "use" }, 291 { "class": "FLAGS", "usage": "def" } 292 ] 293 }, 294 { 295 "encodings": { 296 "CmpqAccumulator": { "opcodes": [ "48", "3D" ] }, 297 "TestqAccumulator": { "opcodes": [ "48", "A9" ] } 298 }, 299 "args": [ 300 { "class": "RAX", "usage": "use" }, 301 { "class": "Imm32" }, 302 { "class": "FLAGS", "usage": "def" } 303 ] 304 }, 305 { 306 "encodings": { 307 "CmpqImm8": { "opcodes": [ "83", "7" ] } 308 }, 309 "args": [ 310 { "class": "GeneralReg64/Mem64", "usage": "use" }, 311 { "class": "Imm8" }, 312 { "class": "FLAGS", "usage": "def" } 313 ] 314 }, 315 { 316 "encodings": { 317 "Cqo": { "opcodes": [ "48", "99" ] }, 318 "Cqto": { "opcodes": [ "48", "99" ] } 319 }, 320 "args": [ 321 { "class": "RAX", "usage": "use" }, 322 { "class": "RDX", "usage": "def" } 323 ] 324 }, 325 { 326 "encodings": { 327 "Crc32q": { "opcodes": [ "F2", "0F", "38", "F1" ] } 328 }, 329 "args": [ 330 { "class": "GeneralReg64", "usage": "use_def" }, 331 { "class": "GeneralReg64/Mem64", "usage": "use" } 332 ] 333 }, 334 { 335 "encodings": { 336 "Cvtsd2siq": { "opcodes": [ "F2", "0F", "2D" ] }, 337 "Cvttsd2siq": { "opcodes": [ "F2", "0F", "2C" ] } 338 }, 339 "args": [ 340 { "class": "GeneralReg64", "usage": "def" }, 341 { "class": "FpReg64/VecMem64", "usage": "use" } 342 ] 343 }, 344 { 345 "encodings": { 346 "Cvtsi2sdq": { "opcodes": [ "F2", "0F", "2A" ] } 347 }, 348 "args": [ 349 { "class": "FpReg64", "usage": "def" }, 350 { "class": "GeneralReg64/Mem64", "usage": "use" } 351 ] 352 }, 353 { 354 "encodings": { 355 "Cvtsi2ssq": { "opcodes": [ "F3", "0F", "2A" ] } 356 }, 357 "args": [ 358 { "class": "FpReg32", "usage": "def" }, 359 { "class": "GeneralReg64/Mem64", "usage": "use" } 360 ] 361 }, 362 { 363 "encodings": { 364 "Cvtss2siq": { "opcodes": [ "F3", "0F", "2D" ] }, 365 "Cvttss2siq": { "opcodes": [ "F3", "0F", "2C" ] } 366 }, 367 "args": [ 368 { "class": "GeneralReg64", "usage": "def" }, 369 { "class": "FpReg32/Mem32", "usage": "use" } 370 ] 371 }, 372 { 373 "encodings": { 374 "Decl": { "opcodes": [ "FF", "1" ] }, 375 "Incl": { "opcodes": [ "FF", "0" ] } 376 }, 377 "args": [ 378 { "class": "GeneralReg32", "usage": "use_def" }, 379 { "class": "FLAGS", "usage": "def" } 380 ] 381 }, 382 { 383 "encodings": { 384 "Decq": { "opcodes": [ "FF", "1" ] }, 385 "Incq": { "opcodes": [ "FF", "0" ] }, 386 "Negq": { "opcodes": [ "F7", "3" ] }, 387 "RolqByOne": { "opcodes": [ "D1", "0" ] }, 388 "RorqByOne": { "opcodes": [ "D1", "1" ] }, 389 "SarqByOne": { "opcodes": [ "D1", "7" ] }, 390 "ShlqByOne": { "opcodes": [ "D1", "4" ] }, 391 "ShrqByOne": { "opcodes": [ "D1", "5" ] } 392 }, 393 "args": [ 394 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 395 { "class": "FLAGS", "usage": "def" } 396 ] 397 }, 398 { 399 "encodings": { 400 "Decw": { "opcodes": [ "66", "FF", "1" ] }, 401 "Incw": { "opcodes": [ "66", "FF", "0" ] } 402 }, 403 "args": [ 404 { "class": "GeneralReg16", "usage": "use_def" }, 405 { "class": "FLAGS", "usage": "def" } 406 ] 407 }, 408 { 409 "encodings": { 410 "Divq": { "opcodes": [ "F7", "6" ] }, 411 "Idivq": { "opcodes": [ "F7", "7" ] } 412 }, 413 "args": [ 414 { "class": "RAX", "usage": "use_def" }, 415 { "class": "RDX", "usage": "use_def" }, 416 { "class": "GeneralReg64/Mem64", "usage": "use" }, 417 { "class": "FLAGS", "usage": "def" } 418 ] 419 }, 420 { 421 "encodings": { 422 "Fxrstor64": { "opcodes": [ "0F", "AE", "1" ] } 423 }, 424 "args": [ 425 { "class": "Mem64", "usage": "use" }, 426 { "class": "CC", "usage": "def" } 427 ] 428 }, 429 { 430 "encodings": { 431 "Fxsave64": { "opcodes": [ "0F", "AE", "0" ] } 432 }, 433 "args": [ 434 { "class": "CC", "usage": "def" }, 435 { "class": "Mem64", "usage": "use" } 436 ] 437 }, 438 { 439 "encodings": { 440 "Imulq": { "opcodes": [ "F7", "5" ] }, 441 "Mulq": { "opcodes": [ "F7", "4" ] } 442 }, 443 "args": [ 444 { "class": "RAX", "usage": "use_def" }, 445 { "class": "RDX", "usage": "def" }, 446 { "class": "GeneralReg64/Mem64", "usage": "use" }, 447 { "class": "FLAGS", "usage": "def" } 448 ] 449 }, 450 { 451 "encodings": { 452 "Imulq": { "opcodes": [ "69" ] } 453 }, 454 "args": [ 455 { "class": "GeneralReg64", "usage": "def" }, 456 { "class": "GeneralReg64/Mem64", "usage": "use" }, 457 { "class": "Imm32" }, 458 { "class": "FLAGS", "usage": "def" } 459 ] 460 }, 461 { 462 "encodings": { 463 "Imulq": { "opcodes": [ "0F", "AF" ] } 464 }, 465 "args": [ 466 { "class": "GeneralReg64", "usage": "use_def" }, 467 { "class": "GeneralReg64/Mem64", "usage": "use" }, 468 { "class": "FLAGS", "usage": "def" } 469 ] 470 }, 471 { 472 "encodings": { 473 "ImulqImm8": { "opcodes": [ "6B" ] } 474 }, 475 "args": [ 476 { "class": "GeneralReg64", "usage": "def" }, 477 { "class": "GeneralReg64/Mem64", "usage": "use" }, 478 { "class": "Imm8" }, 479 { "class": "FLAGS", "usage": "def" } 480 ] 481 }, 482 { 483 "encodings": { 484 "Jmpq": { "opcodes": [ "FF", "4" ] } 485 }, 486 "args": [ 487 { "class": "VecMem64", "usage": "use" } 488 ] 489 }, 490 { 491 "encodings": { 492 "Leaq": { "opcodes": [ "8D" ] }, 493 "Movq": { "opcodes": [ "8B" ] } 494 }, 495 "args": [ 496 { "class": "GeneralReg64", "usage": "def" }, 497 { "class": "Mem64", "usage": "use" } 498 ] 499 }, 500 { 501 "encodings": { 502 "LockCmpXchgq": { "opcodes": [ "F0", "0F", "B1" ], "reg_to_rm": true } 503 }, 504 "args": [ 505 { "class": "RAX", "usage": "use_def" }, 506 { "class": "Mem64", "usage": "use_def" }, 507 { "class": "GeneralReg64", "usage": "use" }, 508 { "class": "FLAGS", "usage": "def" } 509 ] 510 }, 511 { 512 "encodings": { 513 "Movq": { "opcodes": [ "66", "0F", "7E" ], "reg_to_rm": true }, 514 "Vmovq": { "feature": "AVX", "opcodes": [ "C4", "01", "81", "7E" ], "reg_to_rm": true } 515 }, 516 "args": [ 517 { "class": "GeneralReg64", "usage": "def" }, 518 { "class": "XmmReg", "usage": "use" } 519 ] 520 }, 521 { 522 "encodings": { 523 "Movq": { "opcodes": [ "66", "0F", "6E" ] }, 524 "Vmovq": { "feature": "AVX", "opcodes": [ "C4", "01", "81", "6E" ] } 525 }, 526 "args": [ 527 { "class": "XmmReg", "usage": "def" }, 528 { "class": "GeneralReg64", "usage": "use" } 529 ] 530 }, 531 { 532 "stems": [ "Movq" ], 533 "args": [ 534 { "class": "GeneralReg64", "usage": "def" }, 535 { "class": "Imm64" } 536 ] 537 }, 538 { 539 "encodings": { 540 "Movq": { "opcodes": [ "89" ], "reg_to_rm": true } 541 }, 542 "args": [ 543 { "class": "GeneralReg64/Mem64", "usage": "def" }, 544 { "class": "GeneralReg64", "usage": "use" } 545 ] 546 }, 547 { 548 "encodings": { 549 "Movq": { "opcodes": [ "C7", "0" ] } 550 }, 551 "args": [ 552 { "class": "Mem64", "usage": "def" }, 553 { "class": "Imm32" } 554 ] 555 }, 556 { 557 "encodings": { 558 "Movsxbq": { "opcodes": [ "0F", "BE" ] }, 559 "Movzxbq": { "opcodes": [ "0F", "B6" ] } 560 }, 561 "args": [ 562 { "class": "GeneralReg64", "usage": "def" }, 563 { "class": "GeneralReg8/Mem8", "usage": "use" } 564 ] 565 }, 566 { 567 "encodings": { 568 "Movsxlq": { "opcodes": [ "63" ] } 569 }, 570 "args": [ 571 { "class": "GeneralReg64", "usage": "def" }, 572 { "class": "GeneralReg32/Mem32", "usage": "use" } 573 ] 574 }, 575 { 576 "encodings": { 577 "Movsxwq": { "opcodes": [ "0F", "BF" ] }, 578 "Movzxwq": { "opcodes": [ "0F", "B7" ] } 579 }, 580 "args": [ 581 { "class": "GeneralReg64", "usage": "def" }, 582 { "class": "GeneralReg16/Mem16", "usage": "use" } 583 ] 584 }, 585 { 586 "encodings": { 587 "Mulxq": { "feature": "BMI2", "opcodes": [ "C4", "82", "83", "F6" ], "vex_rm_to_reg": true }, 588 "Pdepq": { "feature": "BMI2", "opcodes": [ "C4", "82", "83", "F5" ], "vex_rm_to_reg": true }, 589 "Pextq": { "feature": "BMI2", "opcodes": [ "C4", "82", "82", "F5" ], "vex_rm_to_reg": true } 590 }, 591 "args": [ 592 { "class": "GeneralReg64", "usage": "use_def" }, 593 { "class": "GeneralReg64", "usage": "use" }, 594 { "class": "GeneralReg64/Mem64", "usage": "use" } 595 ] 596 }, 597 { 598 "encodings": { 599 "Notq": { "opcodes": [ "F7", "2" ] } 600 }, 601 "args": [ 602 { "class": "GeneralReg64/Mem64", "usage": "use_def" } 603 ] 604 }, 605 { 606 "encodings": { 607 "Pextrq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "16" ], "reg_to_rm": true }, 608 "Vpextrq": { "feature": "AVX", "opcodes": [ "C4", "03", "81", "16" ], "reg_to_rm": true } 609 }, 610 "args": [ 611 { "class": "GeneralReg64", "usage": "def" }, 612 { "class": "VecReg128", "usage": "use" }, 613 { "class": "Imm8" } 614 ] 615 }, 616 { 617 "encodings": { 618 "Pinsrq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "22" ] } 619 }, 620 "args": [ 621 { "class": "VecReg128", "usage": "use_def" }, 622 { "class": "GeneralReg64", "usage": "use" }, 623 { "class": "Imm8" } 624 ] 625 }, 626 { 627 "encodings": { 628 "Popq": { "opcodes": [ "8F", "0" ] } 629 }, 630 "args": [ 631 { "class": "RSP", "usage": "use_def" }, 632 { "class": "VecMem64", "usage": "def" } 633 ] 634 }, 635 { 636 "encodings": { 637 "Pushq": { "opcodes": [ "FF", "6" ] } 638 }, 639 "args": [ 640 { "class": "RSP", "usage": "use_def" }, 641 { "class": "VecMem64", "usage": "use" } 642 ] 643 }, 644 { 645 "encodings": { 646 "RclqByCl": { "opcodes": [ "D3", "2" ] }, 647 "RcrqByCl": { "opcodes": [ "D3", "3" ] } 648 }, 649 "args": [ 650 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 651 { "class": "CL", "usage": "use" }, 652 { "class": "FLAGS", "usage": "use_def" } 653 ] 654 }, 655 { 656 "encodings": { 657 "RclqByOne": { "opcodes": [ "D1", "2" ] }, 658 "RcrqByOne": { "opcodes": [ "D1", "3" ] } 659 }, 660 "args": [ 661 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 662 { "class": "FLAGS", "usage": "use_def" } 663 ] 664 }, 665 { 666 "encodings": { 667 "RolqByCl": { "opcodes": [ "D3", "0" ] }, 668 "RorqByCl": { "opcodes": [ "D3", "1" ] }, 669 "SarqByCl": { "opcodes": [ "D3", "7" ] }, 670 "ShlqByCl": { "opcodes": [ "D3", "4" ] }, 671 "ShrqByCl": { "opcodes": [ "D3", "5" ] } 672 }, 673 "args": [ 674 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 675 { "class": "CL", "usage": "use" }, 676 { "class": "FLAGS", "usage": "def" } 677 ] 678 }, 679 { 680 "encodings": { 681 "Rorxq": { "feature": "BMI2", "opcodes": [ "C4", "03", "83", "F0" ] } 682 }, 683 "args": [ 684 { "class": "GeneralReg64", "usage": "def" }, 685 { "class": "GeneralReg64/Mem64", "usage": "use" }, 686 { "class": "Imm8" } 687 ] 688 }, 689 { 690 "encodings": { 691 "Sarxq": { "feature": "BMI2", "opcodes": [ "C4", "02", "82", "F7" ] }, 692 "Shlxq": { "feature": "BMI2", "opcodes": [ "C4", "02", "81", "F7" ] }, 693 "Shrxq": { "feature": "BMI2", "opcodes": [ "C4", "02", "83", "F7" ] } 694 }, 695 "args": [ 696 { "class": "GeneralReg64", "usage": "use_def" }, 697 { "class": "GeneralReg64/Mem64", "usage": "use" }, 698 { "class": "GeneralReg64", "usage": "use" } 699 ] 700 }, 701 { 702 "encodings": { 703 "Shldq": { "opcodes": [ "0F", "A4" ], "reg_to_rm": true }, 704 "Shrdq": { "opcodes": [ "0F", "AC" ], "reg_to_rm": true } 705 }, 706 "args": [ 707 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 708 { "class": "GeneralReg64", "usage": "use" }, 709 { "class": "Imm8" }, 710 { "class": "FLAGS", "usage": "def" } 711 ] 712 }, 713 { 714 "encodings": { 715 "ShldqByCl": { "opcodes": [ "0F", "A5" ], "reg_to_rm": true }, 716 "ShrdqByCl": { "opcodes": [ "0F", "AD" ], "reg_to_rm": true } 717 }, 718 "args": [ 719 { "class": "GeneralReg64/Mem64", "usage": "use_def" }, 720 { "class": "GeneralReg64", "usage": "use" }, 721 { "class": "CL", "usage": "use" }, 722 { "class": "FLAGS", "usage": "def" } 723 ] 724 }, 725 { 726 "stems": [ "Vmovapd", "Vmovaps", "Vmovdqa", "Vmovdqu" ], 727 "feature": "AVX", 728 "args": [ 729 { "class": "XmmReg", "usage": "def" }, 730 { "class": "XmmReg", "usage": "use" } 731 ] 732 }, 733 { 734 "stems": [ "Vmovsd", "Vmovss" ], 735 "args": [ 736 { "class": "XmmReg", "usage": "def" }, 737 { "class": "XmmReg", "usage": "use" }, 738 { "class": "XmmReg", "usage": "use" } 739 ] 740 }, 741 { 742 "encodings": { 743 "Vpinsrq": { "feature": "AVX", "opcodes": [ "C4", "03", "81", "22" ], "vex_rm_to_reg": true } 744 }, 745 "args": [ 746 { "class": "VecReg128", "usage": "def" }, 747 { "class": "VecReg128", "usage": "use" }, 748 { "class": "GeneralReg64", "usage": "use" }, 749 { "class": "Imm8" } 750 ] 751 }, 752 { 753 "stems": [ "Xchgq" ], 754 "args": [ 755 { "class": "GeneralReg64", "usage": "use_def" }, 756 { "class": "GeneralReg64", "usage": "use_def" } 757 ] 758 }, 759 { 760 "encodings": { 761 "Xchgq": { "opcodes": [ "87" ] } 762 }, 763 "args": [ 764 { "class": "GeneralReg64", "usage": "use_def" }, 765 { "class": "Mem64", "usage": "use_def" } 766 ] 767 } 768 ] 769} 770