{ "License": [ "Copyright (C) 2023 The Android Open Source Project", "", "Licensed under the Apache License, Version 2.0 (the “License”);", "you may not use this file except in compliance with the License.", "You may obtain a copy of the License at", "", " http://www.apache.org/licenses/LICENSE-2.0", "", "Unless required by applicable law or agreed to in writing, software", "distributed under the License is distributed on an “AS IS” BASIS,", "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.", "See the License for the specific language governing permissions and", "limitations under the License." ], "arch": "x86_64", "insns": [ { "encodings": { "Adcq": { "opcodes": [ "13" ] }, "Sbbq": { "opcodes": [ "1B" ] } }, "args": [ { "class": "GeneralReg64", "usage": "use_def" }, { "class": "Mem64", "usage": "use" }, { "class": "FLAGS", "usage": "use_def" } ] }, { "encodings": { "Adcq": { "opcodes": [ "81", "2" ] }, "Sbbq": { "opcodes": [ "81", "3" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "Imm32" }, { "class": "FLAGS", "usage": "use_def" } ] }, { "encodings": { "Adcq": { "opcodes": [ "11" ], "reg_to_rm": true }, "Sbbq": { "opcodes": [ "19" ], "reg_to_rm": true } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "FLAGS", "usage": "use_def" } ] }, { "encodings": { "AdcqAccumulator": { "opcodes": [ "48", "15" ] }, "SbbqAccumulator": { "opcodes": [ "48", "1D" ] } }, "args": [ { "class": "RAX", "usage": "use_def" }, { "class": "Imm32" }, { "class": "FLAGS", "usage": "use_def" } ] }, { "encodings": { "AdcqImm8": { "opcodes": [ "83", "2" ] }, "Rclq": { "opcodes": [ "C1", "2" ] }, "Rcrq": { "opcodes": [ "C1", "3" ] }, "SbbqImm8": { "opcodes": [ "83", "3" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "Imm8" }, { "class": "FLAGS", "usage": "use_def" } ] }, { "encodings": { "Addq": { "opcodes": [ "01" ], "reg_to_rm": true }, "Andq": { "opcodes": [ "21" ], "reg_to_rm": true }, "Btcq": { "opcodes": [ "0F", "BB" ], "reg_to_rm": true }, "Btrq": { "opcodes": [ "0F", "B3" ], "reg_to_rm": true }, "Btsq": { "opcodes": [ "0F", "AB" ], "reg_to_rm": true }, "Orq": { "opcodes": [ "09" ], "reg_to_rm": true }, "Subq": { "opcodes": [ "29" ], "reg_to_rm": true }, "Xorq": { "opcodes": [ "31" ], "reg_to_rm": true } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Addq": { "opcodes": [ "03" ] }, "Andq": { "opcodes": [ "23" ] }, "Orq": { "opcodes": [ "0B" ] }, "Subq": { "opcodes": [ "2B" ] }, "Xorq": { "opcodes": [ "33" ] } }, "args": [ { "class": "GeneralReg64", "usage": "use_def" }, { "class": "Mem64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Addq": { "opcodes": [ "81", "0" ] }, "Andq": { "opcodes": [ "81", "4" ] }, "Orq": { "opcodes": [ "81", "1" ] }, "Subq": { "opcodes": [ "81", "5" ] }, "Xorq": { "opcodes": [ "81", "6" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "Imm32" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "AddqAccumulator": { "opcodes": [ "48", "05" ] }, "AndqAccumulator": { "opcodes": [ "48", "25" ] }, "OrqAccumulator": { "opcodes": [ "48", "0D" ] }, "SubqAccumulator": { "opcodes": [ "48", "2D" ] }, "XorqAccumulator": { "opcodes": [ "48", "35" ] } }, "args": [ { "class": "RAX", "usage": "use_def" }, { "class": "Imm32" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "AddqImm8": { "opcodes": [ "83", "0" ] }, "AndqImm8": { "opcodes": [ "83", "4" ] }, "Btcq": { "opcodes": [ "0F", "BA", "7" ] }, "Btq": { "opcodes": [ "0F", "BA", "4" ] }, "Btrq": { "opcodes": [ "0F", "BA", "6" ] }, "Btsq": { "opcodes": [ "0F", "BA", "5" ] }, "OrqImm8": { "opcodes": [ "83", "1" ] }, "Rolq": { "opcodes": [ "C1", "0" ] }, "Rorq": { "opcodes": [ "C1", "1" ] }, "Sarq": { "opcodes": [ "C1", "7" ] }, "Shlq": { "opcodes": [ "C1", "4" ] }, "Shrq": { "opcodes": [ "C1", "5" ] }, "SubqImm8": { "opcodes": [ "83", "5" ] }, "XorqImm8": { "opcodes": [ "83", "6" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "Imm8" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Andnq": { "feature": "BMI", "opcodes": [ "C4", "02", "80", "F2" ], "vex_rm_to_reg": true } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Bextrq": { "feature": "BMI", "opcodes": [ "C4", "02", "80", "F7" ] }, "Bzhiq": { "feature": "BMI2", "opcodes": [ "C4", "02", "80", "F5" ] } }, "args": [ { "class": "GeneralReg64", "usage": "use_def" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Blsiq": { "feature": "BMI", "opcodes": [ "C4", "02", "80", "F3", "3" ], "rm_to_vex": true }, "Blsmskq": { "feature": "BMI", "opcodes": [ "C4", "02", "80", "F3", "2" ], "rm_to_vex": true }, "Blsrq": { "feature": "BMI", "opcodes": [ "C4", "02", "80", "F3", "1" ], "rm_to_vex": true }, "Bsfq": { "opcodes": [ "0F", "BC" ] }, "Bsrq": { "opcodes": [ "0F", "BD" ] }, "Lzcntq": { "feature": "LZCNT", "opcodes": [ "F3", "0F", "BD" ] }, "Popcntq": { "feature": "POPCNT", "opcodes": [ "F3", "0F", "B8" ] }, "Tzcntq": { "feature": "BMI", "opcodes": [ "F3", "0F", "BC" ] } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Bswapq": { "opcodes": [ "0F", "C8" ] } }, "args": [ { "class": "GeneralReg64", "usage": "use_def" } ] }, { "encodings": { "Btq": { "opcodes": [ "0F", "A3" ], "reg_to_rm": true }, "Cmpq": { "opcodes": [ "39" ], "reg_to_rm": true }, "Testq": { "opcodes": [ "85" ], "reg_to_rm": true } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Callq": { "opcodes": [ "FF", "2" ] } }, "args": [ { "class": "RSP", "usage": "use_def" }, { "class": "VecMem64", "usage": "use" } ] }, { "encodings": { "Cdqe": { "opcodes": [ "48", "98" ] }, "Cltq": { "opcodes": [ "48", "98" ] } }, "args": [ { "class": "EAX", "usage": "use" }, { "class": "RAX", "usage": "def" } ] }, { "encodings": { "Cmovq": { "opcodes": [ "0F", "40" ] } }, "args": [ { "class": "Cond" }, { "class": "GeneralReg64", "usage": "use_def" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "FLAGS", "usage": "use" } ] }, { "encodings": { "CmpXchg16b": { "opcodes": [ "0F", "C7", "1" ] }, "LockCmpXchg16b": { "opcodes": [ "F0", "0F", "C7", "1" ] } }, "args": [ { "class": "RAX", "usage": "use_def" }, { "class": "RDX", "usage": "use_def" }, { "class": "RBX", "usage": "use" }, { "class": "RCX", "usage": "use" }, { "class": "Mem128", "usage": "use_def" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "CmpXchgq": { "opcodes": [ "0F", "B1" ], "reg_to_rm": true } }, "args": [ { "class": "RAX", "usage": "use_def" }, { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Cmpq": { "opcodes": [ "81", "7" ] }, "Testq": { "opcodes": [ "F7", "0" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "Imm32" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Cmpq": { "opcodes": [ "3B" ] } }, "args": [ { "class": "GeneralReg64", "usage": "use" }, { "class": "Mem64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "CmpqAccumulator": { "opcodes": [ "48", "3D" ] }, "TestqAccumulator": { "opcodes": [ "48", "A9" ] } }, "args": [ { "class": "RAX", "usage": "use" }, { "class": "Imm32" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "CmpqImm8": { "opcodes": [ "83", "7" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "Imm8" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Cqo": { "opcodes": [ "48", "99" ] }, "Cqto": { "opcodes": [ "48", "99" ] } }, "args": [ { "class": "RAX", "usage": "use" }, { "class": "RDX", "usage": "def" } ] }, { "encodings": { "Crc32q": { "opcodes": [ "F2", "0F", "38", "F1" ] } }, "args": [ { "class": "GeneralReg64", "usage": "use_def" }, { "class": "GeneralReg64/Mem64", "usage": "use" } ] }, { "encodings": { "Cvtsd2siq": { "opcodes": [ "F2", "0F", "2D" ] }, "Cvttsd2siq": { "opcodes": [ "F2", "0F", "2C" ] } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "FpReg64/VecMem64", "usage": "use" } ] }, { "encodings": { "Cvtsi2sdq": { "opcodes": [ "F2", "0F", "2A" ] } }, "args": [ { "class": "FpReg64", "usage": "def" }, { "class": "GeneralReg64/Mem64", "usage": "use" } ] }, { "encodings": { "Cvtsi2ssq": { "opcodes": [ "F3", "0F", "2A" ] } }, "args": [ { "class": "FpReg32", "usage": "def" }, { "class": "GeneralReg64/Mem64", "usage": "use" } ] }, { "encodings": { "Cvtss2siq": { "opcodes": [ "F3", "0F", "2D" ] }, "Cvttss2siq": { "opcodes": [ "F3", "0F", "2C" ] } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "FpReg32/Mem32", "usage": "use" } ] }, { "encodings": { "Decl": { "opcodes": [ "FF", "1" ] }, "Incl": { "opcodes": [ "FF", "0" ] } }, "args": [ { "class": "GeneralReg32", "usage": "use_def" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Decq": { "opcodes": [ "FF", "1" ] }, "Incq": { "opcodes": [ "FF", "0" ] }, "Negq": { "opcodes": [ "F7", "3" ] }, "RolqByOne": { "opcodes": [ "D1", "0" ] }, "RorqByOne": { "opcodes": [ "D1", "1" ] }, "SarqByOne": { "opcodes": [ "D1", "7" ] }, "ShlqByOne": { "opcodes": [ "D1", "4" ] }, "ShrqByOne": { "opcodes": [ "D1", "5" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Decw": { "opcodes": [ "66", "FF", "1" ] }, "Incw": { "opcodes": [ "66", "FF", "0" ] } }, "args": [ { "class": "GeneralReg16", "usage": "use_def" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Divq": { "opcodes": [ "F7", "6" ] }, "Idivq": { "opcodes": [ "F7", "7" ] } }, "args": [ { "class": "RAX", "usage": "use_def" }, { "class": "RDX", "usage": "use_def" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Fxrstor64": { "opcodes": [ "0F", "AE", "1" ] } }, "args": [ { "class": "Mem64", "usage": "use" }, { "class": "CC", "usage": "def" } ] }, { "encodings": { "Fxsave64": { "opcodes": [ "0F", "AE", "0" ] } }, "args": [ { "class": "CC", "usage": "def" }, { "class": "Mem64", "usage": "use" } ] }, { "encodings": { "Imulq": { "opcodes": [ "F7", "5" ] }, "Mulq": { "opcodes": [ "F7", "4" ] } }, "args": [ { "class": "RAX", "usage": "use_def" }, { "class": "RDX", "usage": "def" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Imulq": { "opcodes": [ "69" ] } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "Imm32" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Imulq": { "opcodes": [ "0F", "AF" ] } }, "args": [ { "class": "GeneralReg64", "usage": "use_def" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "ImulqImm8": { "opcodes": [ "6B" ] } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "Imm8" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Jmpq": { "opcodes": [ "FF", "4" ] } }, "args": [ { "class": "VecMem64", "usage": "use" } ] }, { "encodings": { "Leaq": { "opcodes": [ "8D" ] }, "Movq": { "opcodes": [ "8B" ] } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "Mem64", "usage": "use" } ] }, { "encodings": { "LockCmpXchgq": { "opcodes": [ "F0", "0F", "B1" ], "reg_to_rm": true } }, "args": [ { "class": "RAX", "usage": "use_def" }, { "class": "Mem64", "usage": "use_def" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Movq": { "opcodes": [ "66", "0F", "7E" ], "reg_to_rm": true }, "Vmovq": { "feature": "AVX", "opcodes": [ "C4", "01", "81", "7E" ], "reg_to_rm": true } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "XmmReg", "usage": "use" } ] }, { "encodings": { "Movq": { "opcodes": [ "66", "0F", "6E" ] }, "Vmovq": { "feature": "AVX", "opcodes": [ "C4", "01", "81", "6E" ] } }, "args": [ { "class": "XmmReg", "usage": "def" }, { "class": "GeneralReg64", "usage": "use" } ] }, { "stems": [ "Movq" ], "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "Imm64" } ] }, { "encodings": { "Movq": { "opcodes": [ "89" ], "reg_to_rm": true } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "def" }, { "class": "GeneralReg64", "usage": "use" } ] }, { "encodings": { "Movq": { "opcodes": [ "C7", "0" ] } }, "args": [ { "class": "Mem64", "usage": "def" }, { "class": "Imm32" } ] }, { "encodings": { "Movsxbq": { "opcodes": [ "0F", "BE" ] }, "Movzxbq": { "opcodes": [ "0F", "B6" ] } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "GeneralReg8/Mem8", "usage": "use" } ] }, { "encodings": { "Movsxlq": { "opcodes": [ "63" ] } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "GeneralReg32/Mem32", "usage": "use" } ] }, { "encodings": { "Movsxwq": { "opcodes": [ "0F", "BF" ] }, "Movzxwq": { "opcodes": [ "0F", "B7" ] } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "GeneralReg16/Mem16", "usage": "use" } ] }, { "encodings": { "Mulxq": { "feature": "BMI2", "opcodes": [ "C4", "82", "83", "F6" ], "vex_rm_to_reg": true }, "Pdepq": { "feature": "BMI2", "opcodes": [ "C4", "82", "83", "F5" ], "vex_rm_to_reg": true }, "Pextq": { "feature": "BMI2", "opcodes": [ "C4", "82", "82", "F5" ], "vex_rm_to_reg": true } }, "args": [ { "class": "GeneralReg64", "usage": "use_def" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "GeneralReg64/Mem64", "usage": "use" } ] }, { "encodings": { "Notq": { "opcodes": [ "F7", "2" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" } ] }, { "encodings": { "Pextrq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "16" ], "reg_to_rm": true }, "Vpextrq": { "feature": "AVX", "opcodes": [ "C4", "03", "81", "16" ], "reg_to_rm": true } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "VecReg128", "usage": "use" }, { "class": "Imm8" } ] }, { "encodings": { "Pinsrq": { "feature": "SSE4_1", "opcodes": [ "66", "0F", "3A", "22" ] } }, "args": [ { "class": "VecReg128", "usage": "use_def" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "Imm8" } ] }, { "encodings": { "Popq": { "opcodes": [ "8F", "0" ] } }, "args": [ { "class": "RSP", "usage": "use_def" }, { "class": "VecMem64", "usage": "def" } ] }, { "encodings": { "Pushq": { "opcodes": [ "FF", "6" ] } }, "args": [ { "class": "RSP", "usage": "use_def" }, { "class": "VecMem64", "usage": "use" } ] }, { "encodings": { "RclqByCl": { "opcodes": [ "D3", "2" ] }, "RcrqByCl": { "opcodes": [ "D3", "3" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "CL", "usage": "use" }, { "class": "FLAGS", "usage": "use_def" } ] }, { "encodings": { "RclqByOne": { "opcodes": [ "D1", "2" ] }, "RcrqByOne": { "opcodes": [ "D1", "3" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "FLAGS", "usage": "use_def" } ] }, { "encodings": { "RolqByCl": { "opcodes": [ "D3", "0" ] }, "RorqByCl": { "opcodes": [ "D3", "1" ] }, "SarqByCl": { "opcodes": [ "D3", "7" ] }, "ShlqByCl": { "opcodes": [ "D3", "4" ] }, "ShrqByCl": { "opcodes": [ "D3", "5" ] } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "CL", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "Rorxq": { "feature": "BMI2", "opcodes": [ "C4", "03", "83", "F0" ] } }, "args": [ { "class": "GeneralReg64", "usage": "def" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "Imm8" } ] }, { "encodings": { "Sarxq": { "feature": "BMI2", "opcodes": [ "C4", "02", "82", "F7" ] }, "Shlxq": { "feature": "BMI2", "opcodes": [ "C4", "02", "81", "F7" ] }, "Shrxq": { "feature": "BMI2", "opcodes": [ "C4", "02", "83", "F7" ] } }, "args": [ { "class": "GeneralReg64", "usage": "use_def" }, { "class": "GeneralReg64/Mem64", "usage": "use" }, { "class": "GeneralReg64", "usage": "use" } ] }, { "encodings": { "Shldq": { "opcodes": [ "0F", "A4" ], "reg_to_rm": true }, "Shrdq": { "opcodes": [ "0F", "AC" ], "reg_to_rm": true } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "Imm8" }, { "class": "FLAGS", "usage": "def" } ] }, { "encodings": { "ShldqByCl": { "opcodes": [ "0F", "A5" ], "reg_to_rm": true }, "ShrdqByCl": { "opcodes": [ "0F", "AD" ], "reg_to_rm": true } }, "args": [ { "class": "GeneralReg64/Mem64", "usage": "use_def" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "CL", "usage": "use" }, { "class": "FLAGS", "usage": "def" } ] }, { "stems": [ "Vmovapd", "Vmovaps", "Vmovdqa", "Vmovdqu" ], "feature": "AVX", "args": [ { "class": "XmmReg", "usage": "def" }, { "class": "XmmReg", "usage": "use" } ] }, { "stems": [ "Vmovsd", "Vmovss" ], "args": [ { "class": "XmmReg", "usage": "def" }, { "class": "XmmReg", "usage": "use" }, { "class": "XmmReg", "usage": "use" } ] }, { "encodings": { "Vpinsrq": { "feature": "AVX", "opcodes": [ "C4", "03", "81", "22" ], "vex_rm_to_reg": true } }, "args": [ { "class": "VecReg128", "usage": "def" }, { "class": "VecReg128", "usage": "use" }, { "class": "GeneralReg64", "usage": "use" }, { "class": "Imm8" } ] }, { "stems": [ "Xchgq" ], "args": [ { "class": "GeneralReg64", "usage": "use_def" }, { "class": "GeneralReg64", "usage": "use_def" } ] }, { "encodings": { "Xchgq": { "opcodes": [ "87" ] } }, "args": [ { "class": "GeneralReg64", "usage": "use_def" }, { "class": "Mem64", "usage": "use_def" } ] } ] }