mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-22 16:43:05 -05:00
DecodeInstruction returned before reading the ModRM of FF /3 and FF /5, so a far CALL or JMP through a RIP-relative pointer had no RIP-relative displacement. A stub that moved such a JMP copied the displacement without relocating it. The decoder was compared with iced-x86 (AMD decoding) over 3.99 million encodings: every opcode of the legacy, 0F, 0F38 and 0F3A maps under 34 prefix combinations and the VEX 0F, 0F38 and 0F3A maps, each with 48 ModRM forms. Apart from this, it agrees on length, RIP-relative offset, control flow kind and branch target for every valid Zen 2 instruction except near branches with a 66 prefix, recorded as technical debt, and kernel-only returns, which it treats as sequential. Add the comparison's metadata as cases: one RIP-relative encoding per opcode, map and immediate size, every FF /r form, and the branch forms with their flow kind and target. The existing cases check lengths only; a loop or jrcxz decoded as an unconditional jump passed the whole suite.
793 lines
27 KiB
C++
793 lines
27 KiB
C++
#ifndef CODEGEN_TESTS_DECODERMETADATACASES_HPP
|
|
#define CODEGEN_TESTS_DECODERMETADATACASES_HPP
|
|
|
|
#include <codegen/CodegenTypes.hpp>
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
|
|
struct DecoderRipRelativeCase {
|
|
const char* Bytes;
|
|
std::size_t Length;
|
|
std::size_t DisplacementOffset;
|
|
};
|
|
|
|
struct DecoderBranchCase {
|
|
const char* Bytes;
|
|
std::size_t Length;
|
|
Codegen::ControlFlowKind FlowKind;
|
|
bool HasBranchTarget;
|
|
std::int64_t BranchDisp;
|
|
};
|
|
|
|
inline constexpr DecoderRipRelativeCase kDecoderRipRelativeCases[] = {
|
|
{"ff0511111111", 6, 2},
|
|
{"ff0d11111111", 6, 2},
|
|
{"ff1511111111", 6, 2},
|
|
{"ff1d11111111", 6, 2},
|
|
{"ff2511111111", 6, 2},
|
|
{"ff2d11111111", 6, 2},
|
|
{"ff3511111111", 6, 2},
|
|
{"000511111111", 6, 2},
|
|
{"010511111111", 6, 2},
|
|
{"020511111111", 6, 2},
|
|
{"030511111111", 6, 2},
|
|
{"080511111111", 6, 2},
|
|
{"090511111111", 6, 2},
|
|
{"0a0511111111", 6, 2},
|
|
{"0b0511111111", 6, 2},
|
|
{"100511111111", 6, 2},
|
|
{"110511111111", 6, 2},
|
|
{"120511111111", 6, 2},
|
|
{"130511111111", 6, 2},
|
|
{"180511111111", 6, 2},
|
|
{"190511111111", 6, 2},
|
|
{"1a0511111111", 6, 2},
|
|
{"1b0511111111", 6, 2},
|
|
{"200511111111", 6, 2},
|
|
{"210511111111", 6, 2},
|
|
{"220511111111", 6, 2},
|
|
{"230511111111", 6, 2},
|
|
{"280511111111", 6, 2},
|
|
{"290511111111", 6, 2},
|
|
{"2a0511111111", 6, 2},
|
|
{"2b0511111111", 6, 2},
|
|
{"300511111111", 6, 2},
|
|
{"310511111111", 6, 2},
|
|
{"320511111111", 6, 2},
|
|
{"330511111111", 6, 2},
|
|
{"380511111111", 6, 2},
|
|
{"390511111111", 6, 2},
|
|
{"3a0511111111", 6, 2},
|
|
{"3b0511111111", 6, 2},
|
|
{"630511111111", 6, 2},
|
|
{"666905111111111111", 9, 3},
|
|
{"69051111111111111111", 10, 2},
|
|
{"6b051111111111", 7, 2},
|
|
{"80051111111111", 7, 2},
|
|
{"668105111111111111", 9, 3},
|
|
{"81051111111111111111", 10, 2},
|
|
{"83051111111111", 7, 2},
|
|
{"840511111111", 6, 2},
|
|
{"850511111111", 6, 2},
|
|
{"860511111111", 6, 2},
|
|
{"870511111111", 6, 2},
|
|
{"880511111111", 6, 2},
|
|
{"890511111111", 6, 2},
|
|
{"8a0511111111", 6, 2},
|
|
{"8b0511111111", 6, 2},
|
|
{"8c0511111111", 6, 2},
|
|
{"8d0511111111", 6, 2},
|
|
{"8e0511111111", 6, 2},
|
|
{"c0051111111111", 7, 2},
|
|
{"c1051111111111", 7, 2},
|
|
{"c6051111111111", 7, 2},
|
|
{"66c705111111111111", 9, 3},
|
|
{"c7051111111111111111", 10, 2},
|
|
{"d00511111111", 6, 2},
|
|
{"d10511111111", 6, 2},
|
|
{"d20511111111", 6, 2},
|
|
{"d30511111111", 6, 2},
|
|
{"d80511111111", 6, 2},
|
|
{"d90511111111", 6, 2},
|
|
{"da0511111111", 6, 2},
|
|
{"db0511111111", 6, 2},
|
|
{"dc0511111111", 6, 2},
|
|
{"dd0511111111", 6, 2},
|
|
{"de0511111111", 6, 2},
|
|
{"df0511111111", 6, 2},
|
|
{"f61511111111", 6, 2},
|
|
{"f6051111111111", 7, 2},
|
|
{"f71511111111", 6, 2},
|
|
{"66f705111111111111", 9, 3},
|
|
{"f7051111111111111111", 10, 2},
|
|
{"fe0511111111", 6, 2},
|
|
{"0f000511111111", 7, 3},
|
|
{"0f010511111111", 7, 3},
|
|
{"0f020511111111", 7, 3},
|
|
{"0f030511111111", 7, 3},
|
|
{"0f0d0511111111", 7, 3},
|
|
{"0f100511111111", 7, 3},
|
|
{"0f110511111111", 7, 3},
|
|
{"0f120511111111", 7, 3},
|
|
{"0f130511111111", 7, 3},
|
|
{"0f140511111111", 7, 3},
|
|
{"0f150511111111", 7, 3},
|
|
{"0f160511111111", 7, 3},
|
|
{"0f170511111111", 7, 3},
|
|
{"0f180511111111", 7, 3},
|
|
{"0f190511111111", 7, 3},
|
|
{"0f1a0511111111", 7, 3},
|
|
{"0f1b0511111111", 7, 3},
|
|
{"0f1c0511111111", 7, 3},
|
|
{"0f1d0511111111", 7, 3},
|
|
{"0f1e0511111111", 7, 3},
|
|
{"0f1f0511111111", 7, 3},
|
|
{"0f280511111111", 7, 3},
|
|
{"0f290511111111", 7, 3},
|
|
{"0f2a0511111111", 7, 3},
|
|
{"0f2b0511111111", 7, 3},
|
|
{"0f2c0511111111", 7, 3},
|
|
{"0f2d0511111111", 7, 3},
|
|
{"0f2e0511111111", 7, 3},
|
|
{"0f2f0511111111", 7, 3},
|
|
{"0f400511111111", 7, 3},
|
|
{"0f410511111111", 7, 3},
|
|
{"0f420511111111", 7, 3},
|
|
{"0f430511111111", 7, 3},
|
|
{"0f440511111111", 7, 3},
|
|
{"0f450511111111", 7, 3},
|
|
{"0f460511111111", 7, 3},
|
|
{"0f470511111111", 7, 3},
|
|
{"0f480511111111", 7, 3},
|
|
{"0f490511111111", 7, 3},
|
|
{"0f4a0511111111", 7, 3},
|
|
{"0f4b0511111111", 7, 3},
|
|
{"0f4c0511111111", 7, 3},
|
|
{"0f4d0511111111", 7, 3},
|
|
{"0f4e0511111111", 7, 3},
|
|
{"0f4f0511111111", 7, 3},
|
|
{"0f510511111111", 7, 3},
|
|
{"0f520511111111", 7, 3},
|
|
{"0f530511111111", 7, 3},
|
|
{"0f540511111111", 7, 3},
|
|
{"0f550511111111", 7, 3},
|
|
{"0f560511111111", 7, 3},
|
|
{"0f570511111111", 7, 3},
|
|
{"0f580511111111", 7, 3},
|
|
{"0f590511111111", 7, 3},
|
|
{"0f5a0511111111", 7, 3},
|
|
{"0f5b0511111111", 7, 3},
|
|
{"0f5c0511111111", 7, 3},
|
|
{"0f5d0511111111", 7, 3},
|
|
{"0f5e0511111111", 7, 3},
|
|
{"0f5f0511111111", 7, 3},
|
|
{"0f600511111111", 7, 3},
|
|
{"0f610511111111", 7, 3},
|
|
{"0f620511111111", 7, 3},
|
|
{"0f630511111111", 7, 3},
|
|
{"0f640511111111", 7, 3},
|
|
{"0f650511111111", 7, 3},
|
|
{"0f660511111111", 7, 3},
|
|
{"0f670511111111", 7, 3},
|
|
{"0f680511111111", 7, 3},
|
|
{"0f690511111111", 7, 3},
|
|
{"0f6a0511111111", 7, 3},
|
|
{"0f6b0511111111", 7, 3},
|
|
{"660f6c0511111111", 8, 4},
|
|
{"660f6d0511111111", 8, 4},
|
|
{"0f6e0511111111", 7, 3},
|
|
{"0f6f0511111111", 7, 3},
|
|
{"0f70051111111111", 8, 3},
|
|
{"0f740511111111", 7, 3},
|
|
{"0f750511111111", 7, 3},
|
|
{"0f760511111111", 7, 3},
|
|
{"660f7c0511111111", 8, 4},
|
|
{"660f7d0511111111", 8, 4},
|
|
{"0f7e0511111111", 7, 3},
|
|
{"0f7f0511111111", 7, 3},
|
|
{"0f900511111111", 7, 3},
|
|
{"0f910511111111", 7, 3},
|
|
{"0f920511111111", 7, 3},
|
|
{"0f930511111111", 7, 3},
|
|
{"0f940511111111", 7, 3},
|
|
{"0f950511111111", 7, 3},
|
|
{"0f960511111111", 7, 3},
|
|
{"0f970511111111", 7, 3},
|
|
{"0f980511111111", 7, 3},
|
|
{"0f990511111111", 7, 3},
|
|
{"0f9a0511111111", 7, 3},
|
|
{"0f9b0511111111", 7, 3},
|
|
{"0f9c0511111111", 7, 3},
|
|
{"0f9d0511111111", 7, 3},
|
|
{"0f9e0511111111", 7, 3},
|
|
{"0f9f0511111111", 7, 3},
|
|
{"0fa30511111111", 7, 3},
|
|
{"0fa4051111111111", 8, 3},
|
|
{"0fa50511111111", 7, 3},
|
|
{"0fab0511111111", 7, 3},
|
|
{"0fac051111111111", 8, 3},
|
|
{"0fad0511111111", 7, 3},
|
|
{"0fae0511111111", 7, 3},
|
|
{"0faf0511111111", 7, 3},
|
|
{"0fb00511111111", 7, 3},
|
|
{"0fb10511111111", 7, 3},
|
|
{"0fb20511111111", 7, 3},
|
|
{"0fb30511111111", 7, 3},
|
|
{"0fb40511111111", 7, 3},
|
|
{"0fb50511111111", 7, 3},
|
|
{"0fb60511111111", 7, 3},
|
|
{"0fb70511111111", 7, 3},
|
|
{"f30fb80511111111", 8, 4},
|
|
{"0fb90511111111", 7, 3},
|
|
{"0fba251111111111", 8, 3},
|
|
{"0fbb0511111111", 7, 3},
|
|
{"0fbc0511111111", 7, 3},
|
|
{"0fbd0511111111", 7, 3},
|
|
{"0fbe0511111111", 7, 3},
|
|
{"0fbf0511111111", 7, 3},
|
|
{"0fc00511111111", 7, 3},
|
|
{"0fc10511111111", 7, 3},
|
|
{"0fc2051111111111", 8, 3},
|
|
{"0fc30511111111", 7, 3},
|
|
{"0fc4051111111111", 8, 3},
|
|
{"0fc6051111111111", 8, 3},
|
|
{"0fc70d11111111", 7, 3},
|
|
{"660fd00511111111", 8, 4},
|
|
{"0fd10511111111", 7, 3},
|
|
{"0fd20511111111", 7, 3},
|
|
{"0fd30511111111", 7, 3},
|
|
{"0fd40511111111", 7, 3},
|
|
{"0fd50511111111", 7, 3},
|
|
{"660fd60511111111", 8, 4},
|
|
{"0fd80511111111", 7, 3},
|
|
{"0fd90511111111", 7, 3},
|
|
{"0fda0511111111", 7, 3},
|
|
{"0fdb0511111111", 7, 3},
|
|
{"0fdc0511111111", 7, 3},
|
|
{"0fdd0511111111", 7, 3},
|
|
{"0fde0511111111", 7, 3},
|
|
{"0fdf0511111111", 7, 3},
|
|
{"0fe00511111111", 7, 3},
|
|
{"0fe10511111111", 7, 3},
|
|
{"0fe20511111111", 7, 3},
|
|
{"0fe30511111111", 7, 3},
|
|
{"0fe40511111111", 7, 3},
|
|
{"0fe50511111111", 7, 3},
|
|
{"660fe60511111111", 8, 4},
|
|
{"0fe70511111111", 7, 3},
|
|
{"0fe80511111111", 7, 3},
|
|
{"0fe90511111111", 7, 3},
|
|
{"0fea0511111111", 7, 3},
|
|
{"0feb0511111111", 7, 3},
|
|
{"0fec0511111111", 7, 3},
|
|
{"0fed0511111111", 7, 3},
|
|
{"0fee0511111111", 7, 3},
|
|
{"0fef0511111111", 7, 3},
|
|
{"f20ff00511111111", 8, 4},
|
|
{"0ff10511111111", 7, 3},
|
|
{"0ff20511111111", 7, 3},
|
|
{"0ff30511111111", 7, 3},
|
|
{"0ff40511111111", 7, 3},
|
|
{"0ff50511111111", 7, 3},
|
|
{"0ff60511111111", 7, 3},
|
|
{"0ff80511111111", 7, 3},
|
|
{"0ff90511111111", 7, 3},
|
|
{"0ffa0511111111", 7, 3},
|
|
{"0ffb0511111111", 7, 3},
|
|
{"0ffc0511111111", 7, 3},
|
|
{"0ffd0511111111", 7, 3},
|
|
{"0ffe0511111111", 7, 3},
|
|
{"0f38000511111111", 8, 4},
|
|
{"0f38010511111111", 8, 4},
|
|
{"0f38020511111111", 8, 4},
|
|
{"0f38030511111111", 8, 4},
|
|
{"0f38040511111111", 8, 4},
|
|
{"0f38050511111111", 8, 4},
|
|
{"0f38060511111111", 8, 4},
|
|
{"0f38070511111111", 8, 4},
|
|
{"0f38080511111111", 8, 4},
|
|
{"0f38090511111111", 8, 4},
|
|
{"0f380a0511111111", 8, 4},
|
|
{"0f380b0511111111", 8, 4},
|
|
{"660f38100511111111", 9, 5},
|
|
{"660f38140511111111", 9, 5},
|
|
{"660f38150511111111", 9, 5},
|
|
{"660f38170511111111", 9, 5},
|
|
{"0f381c0511111111", 8, 4},
|
|
{"0f381d0511111111", 8, 4},
|
|
{"0f381e0511111111", 8, 4},
|
|
{"660f38200511111111", 9, 5},
|
|
{"660f38210511111111", 9, 5},
|
|
{"660f38220511111111", 9, 5},
|
|
{"660f38230511111111", 9, 5},
|
|
{"660f38240511111111", 9, 5},
|
|
{"660f38250511111111", 9, 5},
|
|
{"660f38280511111111", 9, 5},
|
|
{"660f38290511111111", 9, 5},
|
|
{"660f382a0511111111", 9, 5},
|
|
{"660f382b0511111111", 9, 5},
|
|
{"660f38300511111111", 9, 5},
|
|
{"660f38310511111111", 9, 5},
|
|
{"660f38320511111111", 9, 5},
|
|
{"660f38330511111111", 9, 5},
|
|
{"660f38340511111111", 9, 5},
|
|
{"660f38350511111111", 9, 5},
|
|
{"660f38370511111111", 9, 5},
|
|
{"660f38380511111111", 9, 5},
|
|
{"660f38390511111111", 9, 5},
|
|
{"660f383a0511111111", 9, 5},
|
|
{"660f383b0511111111", 9, 5},
|
|
{"660f383c0511111111", 9, 5},
|
|
{"660f383d0511111111", 9, 5},
|
|
{"660f383e0511111111", 9, 5},
|
|
{"660f383f0511111111", 9, 5},
|
|
{"660f38400511111111", 9, 5},
|
|
{"660f38410511111111", 9, 5},
|
|
{"660f38820511111111", 9, 5},
|
|
{"0f38c80511111111", 8, 4},
|
|
{"0f38c90511111111", 8, 4},
|
|
{"0f38ca0511111111", 8, 4},
|
|
{"0f38cb0511111111", 8, 4},
|
|
{"0f38cc0511111111", 8, 4},
|
|
{"0f38cd0511111111", 8, 4},
|
|
{"f30f38d80511111111", 9, 5},
|
|
{"660f38db0511111111", 9, 5},
|
|
{"660f38dc0511111111", 9, 5},
|
|
{"660f38dd0511111111", 9, 5},
|
|
{"660f38de0511111111", 9, 5},
|
|
{"660f38df0511111111", 9, 5},
|
|
{"0f38f00511111111", 8, 4},
|
|
{"0f38f10511111111", 8, 4},
|
|
{"660f38f60511111111", 9, 5},
|
|
{"660f3a08051111111111", 10, 5},
|
|
{"660f3a09051111111111", 10, 5},
|
|
{"660f3a0a051111111111", 10, 5},
|
|
{"660f3a0b051111111111", 10, 5},
|
|
{"660f3a0c051111111111", 10, 5},
|
|
{"660f3a0d051111111111", 10, 5},
|
|
{"660f3a0e051111111111", 10, 5},
|
|
{"0f3a0f051111111111", 9, 4},
|
|
{"660f3a14051111111111", 10, 5},
|
|
{"660f3a15051111111111", 10, 5},
|
|
{"660f3a16051111111111", 10, 5},
|
|
{"660f3a17051111111111", 10, 5},
|
|
{"660f3a20051111111111", 10, 5},
|
|
{"660f3a21051111111111", 10, 5},
|
|
{"660f3a22051111111111", 10, 5},
|
|
{"660f3a40051111111111", 10, 5},
|
|
{"660f3a41051111111111", 10, 5},
|
|
{"660f3a42051111111111", 10, 5},
|
|
{"660f3a44051111111111", 10, 5},
|
|
{"660f3a60051111111111", 10, 5},
|
|
{"660f3a61051111111111", 10, 5},
|
|
{"660f3a62051111111111", 10, 5},
|
|
{"660f3a63051111111111", 10, 5},
|
|
{"0f3acc051111111111", 9, 4},
|
|
{"660f3adf051111111111", 10, 5},
|
|
{"c5f8100511111111", 8, 4},
|
|
{"c5f8110511111111", 8, 4},
|
|
{"c5f8120511111111", 8, 4},
|
|
{"c5f8130511111111", 8, 4},
|
|
{"c5f8140511111111", 8, 4},
|
|
{"c5f8150511111111", 8, 4},
|
|
{"c5f8160511111111", 8, 4},
|
|
{"c5f8170511111111", 8, 4},
|
|
{"c5f8280511111111", 8, 4},
|
|
{"c5f8290511111111", 8, 4},
|
|
{"c5fa2a0511111111", 8, 4},
|
|
{"c5f82b0511111111", 8, 4},
|
|
{"c5fa2c0511111111", 8, 4},
|
|
{"c5fa2d0511111111", 8, 4},
|
|
{"c5f82e0511111111", 8, 4},
|
|
{"c5f82f0511111111", 8, 4},
|
|
{"c5f8510511111111", 8, 4},
|
|
{"c5f8520511111111", 8, 4},
|
|
{"c5f8530511111111", 8, 4},
|
|
{"c5f8540511111111", 8, 4},
|
|
{"c5f8550511111111", 8, 4},
|
|
{"c5f8560511111111", 8, 4},
|
|
{"c5f8570511111111", 8, 4},
|
|
{"c5f8580511111111", 8, 4},
|
|
{"c5f8590511111111", 8, 4},
|
|
{"c5f85a0511111111", 8, 4},
|
|
{"c5f85b0511111111", 8, 4},
|
|
{"c5f85c0511111111", 8, 4},
|
|
{"c5f85d0511111111", 8, 4},
|
|
{"c5f85e0511111111", 8, 4},
|
|
{"c5f85f0511111111", 8, 4},
|
|
{"c5f9600511111111", 8, 4},
|
|
{"c5f9610511111111", 8, 4},
|
|
{"c5f9620511111111", 8, 4},
|
|
{"c5f9630511111111", 8, 4},
|
|
{"c5f9640511111111", 8, 4},
|
|
{"c5f9650511111111", 8, 4},
|
|
{"c5f9660511111111", 8, 4},
|
|
{"c5f9670511111111", 8, 4},
|
|
{"c5f9680511111111", 8, 4},
|
|
{"c5f9690511111111", 8, 4},
|
|
{"c5f96a0511111111", 8, 4},
|
|
{"c5f96b0511111111", 8, 4},
|
|
{"c5f96c0511111111", 8, 4},
|
|
{"c5f96d0511111111", 8, 4},
|
|
{"c5f96e0511111111", 8, 4},
|
|
{"c5f96f0511111111", 8, 4},
|
|
{"c5f970051111111111", 9, 4},
|
|
{"c5f9740511111111", 8, 4},
|
|
{"c5f9750511111111", 8, 4},
|
|
{"c5f9760511111111", 8, 4},
|
|
{"c5f97c0511111111", 8, 4},
|
|
{"c5f97d0511111111", 8, 4},
|
|
{"c5f97e0511111111", 8, 4},
|
|
{"c5f97f0511111111", 8, 4},
|
|
{"c5f8ae1511111111", 8, 4},
|
|
{"c5f8c2051111111111", 9, 4},
|
|
{"c5f9c4051111111111", 9, 4},
|
|
{"c5f8c6051111111111", 9, 4},
|
|
{"c5f9d00511111111", 8, 4},
|
|
{"c5f9d10511111111", 8, 4},
|
|
{"c5f9d20511111111", 8, 4},
|
|
{"c5f9d30511111111", 8, 4},
|
|
{"c5f9d40511111111", 8, 4},
|
|
{"c5f9d50511111111", 8, 4},
|
|
{"c5f9d60511111111", 8, 4},
|
|
{"c5f9d80511111111", 8, 4},
|
|
{"c5f9d90511111111", 8, 4},
|
|
{"c5f9da0511111111", 8, 4},
|
|
{"c5f9db0511111111", 8, 4},
|
|
{"c5f9dc0511111111", 8, 4},
|
|
{"c5f9dd0511111111", 8, 4},
|
|
{"c5f9de0511111111", 8, 4},
|
|
{"c5f9df0511111111", 8, 4},
|
|
{"c5f9e00511111111", 8, 4},
|
|
{"c5f9e10511111111", 8, 4},
|
|
{"c5f9e20511111111", 8, 4},
|
|
{"c5f9e30511111111", 8, 4},
|
|
{"c5f9e40511111111", 8, 4},
|
|
{"c5f9e50511111111", 8, 4},
|
|
{"c5f9e60511111111", 8, 4},
|
|
{"c5f9e70511111111", 8, 4},
|
|
{"c5f9e80511111111", 8, 4},
|
|
{"c5f9e90511111111", 8, 4},
|
|
{"c5f9ea0511111111", 8, 4},
|
|
{"c5f9eb0511111111", 8, 4},
|
|
{"c5f9ec0511111111", 8, 4},
|
|
{"c5f9ed0511111111", 8, 4},
|
|
{"c5f9ee0511111111", 8, 4},
|
|
{"c5f9ef0511111111", 8, 4},
|
|
{"c5fbf00511111111", 8, 4},
|
|
{"c5f9f10511111111", 8, 4},
|
|
{"c5f9f20511111111", 8, 4},
|
|
{"c5f9f30511111111", 8, 4},
|
|
{"c5f9f40511111111", 8, 4},
|
|
{"c5f9f50511111111", 8, 4},
|
|
{"c5f9f60511111111", 8, 4},
|
|
{"c5f9f80511111111", 8, 4},
|
|
{"c5f9f90511111111", 8, 4},
|
|
{"c5f9fa0511111111", 8, 4},
|
|
{"c5f9fb0511111111", 8, 4},
|
|
{"c5f9fc0511111111", 8, 4},
|
|
{"c5f9fd0511111111", 8, 4},
|
|
{"c5f9fe0511111111", 8, 4},
|
|
{"c4e178100511111111", 9, 5},
|
|
{"c4e178110511111111", 9, 5},
|
|
{"c4e178120511111111", 9, 5},
|
|
{"c4e178130511111111", 9, 5},
|
|
{"c4e178140511111111", 9, 5},
|
|
{"c4e178150511111111", 9, 5},
|
|
{"c4e178160511111111", 9, 5},
|
|
{"c4e178170511111111", 9, 5},
|
|
{"c4e178280511111111", 9, 5},
|
|
{"c4e178290511111111", 9, 5},
|
|
{"c4e17a2a0511111111", 9, 5},
|
|
{"c4e1782b0511111111", 9, 5},
|
|
{"c4e17a2c0511111111", 9, 5},
|
|
{"c4e17a2d0511111111", 9, 5},
|
|
{"c4e1782e0511111111", 9, 5},
|
|
{"c4e1782f0511111111", 9, 5},
|
|
{"c4e178510511111111", 9, 5},
|
|
{"c4e178520511111111", 9, 5},
|
|
{"c4e178530511111111", 9, 5},
|
|
{"c4e178540511111111", 9, 5},
|
|
{"c4e178550511111111", 9, 5},
|
|
{"c4e178560511111111", 9, 5},
|
|
{"c4e178570511111111", 9, 5},
|
|
{"c4e178580511111111", 9, 5},
|
|
{"c4e178590511111111", 9, 5},
|
|
{"c4e1785a0511111111", 9, 5},
|
|
{"c4e1785b0511111111", 9, 5},
|
|
{"c4e1785c0511111111", 9, 5},
|
|
{"c4e1785d0511111111", 9, 5},
|
|
{"c4e1785e0511111111", 9, 5},
|
|
{"c4e1785f0511111111", 9, 5},
|
|
{"c4e179600511111111", 9, 5},
|
|
{"c4e179610511111111", 9, 5},
|
|
{"c4e179620511111111", 9, 5},
|
|
{"c4e179630511111111", 9, 5},
|
|
{"c4e179640511111111", 9, 5},
|
|
{"c4e179650511111111", 9, 5},
|
|
{"c4e179660511111111", 9, 5},
|
|
{"c4e179670511111111", 9, 5},
|
|
{"c4e179680511111111", 9, 5},
|
|
{"c4e179690511111111", 9, 5},
|
|
{"c4e1796a0511111111", 9, 5},
|
|
{"c4e1796b0511111111", 9, 5},
|
|
{"c4e1796c0511111111", 9, 5},
|
|
{"c4e1796d0511111111", 9, 5},
|
|
{"c4e1796e0511111111", 9, 5},
|
|
{"c4e1796f0511111111", 9, 5},
|
|
{"c4e17970051111111111", 10, 5},
|
|
{"c4e179740511111111", 9, 5},
|
|
{"c4e179750511111111", 9, 5},
|
|
{"c4e179760511111111", 9, 5},
|
|
{"c4e1797c0511111111", 9, 5},
|
|
{"c4e1797d0511111111", 9, 5},
|
|
{"c4e1797e0511111111", 9, 5},
|
|
{"c4e1797f0511111111", 9, 5},
|
|
{"c4e178ae1511111111", 9, 5},
|
|
{"c4e178c2051111111111", 10, 5},
|
|
{"c4e179c4051111111111", 10, 5},
|
|
{"c4e178c6051111111111", 10, 5},
|
|
{"c4e179d00511111111", 9, 5},
|
|
{"c4e179d10511111111", 9, 5},
|
|
{"c4e179d20511111111", 9, 5},
|
|
{"c4e179d30511111111", 9, 5},
|
|
{"c4e179d40511111111", 9, 5},
|
|
{"c4e179d50511111111", 9, 5},
|
|
{"c4e179d60511111111", 9, 5},
|
|
{"c4e179d80511111111", 9, 5},
|
|
{"c4e179d90511111111", 9, 5},
|
|
{"c4e179da0511111111", 9, 5},
|
|
{"c4e179db0511111111", 9, 5},
|
|
{"c4e179dc0511111111", 9, 5},
|
|
{"c4e179dd0511111111", 9, 5},
|
|
{"c4e179de0511111111", 9, 5},
|
|
{"c4e179df0511111111", 9, 5},
|
|
{"c4e179e00511111111", 9, 5},
|
|
{"c4e179e10511111111", 9, 5},
|
|
{"c4e179e20511111111", 9, 5},
|
|
{"c4e179e30511111111", 9, 5},
|
|
{"c4e179e40511111111", 9, 5},
|
|
{"c4e179e50511111111", 9, 5},
|
|
{"c4e179e60511111111", 9, 5},
|
|
{"c4e179e70511111111", 9, 5},
|
|
{"c4e179e80511111111", 9, 5},
|
|
{"c4e179e90511111111", 9, 5},
|
|
{"c4e179ea0511111111", 9, 5},
|
|
{"c4e179eb0511111111", 9, 5},
|
|
{"c4e179ec0511111111", 9, 5},
|
|
{"c4e179ed0511111111", 9, 5},
|
|
{"c4e179ee0511111111", 9, 5},
|
|
{"c4e179ef0511111111", 9, 5},
|
|
{"c4e17bf00511111111", 9, 5},
|
|
{"c4e179f10511111111", 9, 5},
|
|
{"c4e179f20511111111", 9, 5},
|
|
{"c4e179f30511111111", 9, 5},
|
|
{"c4e179f40511111111", 9, 5},
|
|
{"c4e179f50511111111", 9, 5},
|
|
{"c4e179f60511111111", 9, 5},
|
|
{"c4e179f80511111111", 9, 5},
|
|
{"c4e179f90511111111", 9, 5},
|
|
{"c4e179fa0511111111", 9, 5},
|
|
{"c4e179fb0511111111", 9, 5},
|
|
{"c4e179fc0511111111", 9, 5},
|
|
{"c4e179fd0511111111", 9, 5},
|
|
{"c4e179fe0511111111", 9, 5},
|
|
{"c4e279000511111111", 9, 5},
|
|
{"c4e279010511111111", 9, 5},
|
|
{"c4e279020511111111", 9, 5},
|
|
{"c4e279030511111111", 9, 5},
|
|
{"c4e279040511111111", 9, 5},
|
|
{"c4e279050511111111", 9, 5},
|
|
{"c4e279060511111111", 9, 5},
|
|
{"c4e279070511111111", 9, 5},
|
|
{"c4e279080511111111", 9, 5},
|
|
{"c4e279090511111111", 9, 5},
|
|
{"c4e2790a0511111111", 9, 5},
|
|
{"c4e2790b0511111111", 9, 5},
|
|
{"c4e2790c0511111111", 9, 5},
|
|
{"c4e2790d0511111111", 9, 5},
|
|
{"c4e2790e0511111111", 9, 5},
|
|
{"c4e2790f0511111111", 9, 5},
|
|
{"c4e279130511111111", 9, 5},
|
|
{"c4e27d160511111111", 9, 5},
|
|
{"c4e279170511111111", 9, 5},
|
|
{"c4e279180511111111", 9, 5},
|
|
{"c4e27d190511111111", 9, 5},
|
|
{"c4e27d1a0511111111", 9, 5},
|
|
{"c4e2791c0511111111", 9, 5},
|
|
{"c4e2791d0511111111", 9, 5},
|
|
{"c4e2791e0511111111", 9, 5},
|
|
{"c4e279200511111111", 9, 5},
|
|
{"c4e279210511111111", 9, 5},
|
|
{"c4e279220511111111", 9, 5},
|
|
{"c4e279230511111111", 9, 5},
|
|
{"c4e279240511111111", 9, 5},
|
|
{"c4e279250511111111", 9, 5},
|
|
{"c4e279280511111111", 9, 5},
|
|
{"c4e279290511111111", 9, 5},
|
|
{"c4e2792a0511111111", 9, 5},
|
|
{"c4e2792b0511111111", 9, 5},
|
|
{"c4e2792c0511111111", 9, 5},
|
|
{"c4e2792d0511111111", 9, 5},
|
|
{"c4e2792e0511111111", 9, 5},
|
|
{"c4e2792f0511111111", 9, 5},
|
|
{"c4e279300511111111", 9, 5},
|
|
{"c4e279310511111111", 9, 5},
|
|
{"c4e279320511111111", 9, 5},
|
|
{"c4e279330511111111", 9, 5},
|
|
{"c4e279340511111111", 9, 5},
|
|
{"c4e279350511111111", 9, 5},
|
|
{"c4e27d360511111111", 9, 5},
|
|
{"c4e279370511111111", 9, 5},
|
|
{"c4e279380511111111", 9, 5},
|
|
{"c4e279390511111111", 9, 5},
|
|
{"c4e2793a0511111111", 9, 5},
|
|
{"c4e2793b0511111111", 9, 5},
|
|
{"c4e2793c0511111111", 9, 5},
|
|
{"c4e2793d0511111111", 9, 5},
|
|
{"c4e2793e0511111111", 9, 5},
|
|
{"c4e2793f0511111111", 9, 5},
|
|
{"c4e279400511111111", 9, 5},
|
|
{"c4e279410511111111", 9, 5},
|
|
{"c4e279450511111111", 9, 5},
|
|
{"c4e279460511111111", 9, 5},
|
|
{"c4e279470511111111", 9, 5},
|
|
{"c4e279580511111111", 9, 5},
|
|
{"c4e279590511111111", 9, 5},
|
|
{"c4e27d5a0511111111", 9, 5},
|
|
{"c4e279780511111111", 9, 5},
|
|
{"c4e279790511111111", 9, 5},
|
|
{"c4e2798c0511111111", 9, 5},
|
|
{"c4e2798e0511111111", 9, 5},
|
|
{"c4e279960511111111", 9, 5},
|
|
{"c4e279970511111111", 9, 5},
|
|
{"c4e279980511111111", 9, 5},
|
|
{"c4e279990511111111", 9, 5},
|
|
{"c4e2799a0511111111", 9, 5},
|
|
{"c4e2799b0511111111", 9, 5},
|
|
{"c4e2799c0511111111", 9, 5},
|
|
{"c4e2799d0511111111", 9, 5},
|
|
{"c4e2799e0511111111", 9, 5},
|
|
{"c4e2799f0511111111", 9, 5},
|
|
{"c4e279a60511111111", 9, 5},
|
|
{"c4e279a70511111111", 9, 5},
|
|
{"c4e279a80511111111", 9, 5},
|
|
{"c4e279a90511111111", 9, 5},
|
|
{"c4e279aa0511111111", 9, 5},
|
|
{"c4e279ab0511111111", 9, 5},
|
|
{"c4e279ac0511111111", 9, 5},
|
|
{"c4e279ad0511111111", 9, 5},
|
|
{"c4e279ae0511111111", 9, 5},
|
|
{"c4e279af0511111111", 9, 5},
|
|
{"c4e279b60511111111", 9, 5},
|
|
{"c4e279b70511111111", 9, 5},
|
|
{"c4e279b80511111111", 9, 5},
|
|
{"c4e279b90511111111", 9, 5},
|
|
{"c4e279ba0511111111", 9, 5},
|
|
{"c4e279bb0511111111", 9, 5},
|
|
{"c4e279bc0511111111", 9, 5},
|
|
{"c4e279bd0511111111", 9, 5},
|
|
{"c4e279be0511111111", 9, 5},
|
|
{"c4e279bf0511111111", 9, 5},
|
|
{"c4e279db0511111111", 9, 5},
|
|
{"c4e279dc0511111111", 9, 5},
|
|
{"c4e279dd0511111111", 9, 5},
|
|
{"c4e279de0511111111", 9, 5},
|
|
{"c4e279df0511111111", 9, 5},
|
|
{"c4e278f20511111111", 9, 5},
|
|
{"c4e278f30d11111111", 9, 5},
|
|
{"c4e278f50511111111", 9, 5},
|
|
{"c4e27bf60511111111", 9, 5},
|
|
{"c4e278f70511111111", 9, 5},
|
|
{"c4e3fd00051111111111", 10, 5},
|
|
{"c4e3fd01051111111111", 10, 5},
|
|
{"c4e37902051111111111", 10, 5},
|
|
{"c4e37904051111111111", 10, 5},
|
|
{"c4e37905051111111111", 10, 5},
|
|
{"c4e37d06051111111111", 10, 5},
|
|
{"c4e37908051111111111", 10, 5},
|
|
{"c4e37909051111111111", 10, 5},
|
|
{"c4e3790a051111111111", 10, 5},
|
|
{"c4e3790b051111111111", 10, 5},
|
|
{"c4e3790c051111111111", 10, 5},
|
|
{"c4e3790d051111111111", 10, 5},
|
|
{"c4e3790e051111111111", 10, 5},
|
|
{"c4e3790f051111111111", 10, 5},
|
|
{"c4e37914051111111111", 10, 5},
|
|
{"c4e37915051111111111", 10, 5},
|
|
{"c4e37916051111111111", 10, 5},
|
|
{"c4e37917051111111111", 10, 5},
|
|
{"c4e37d18051111111111", 10, 5},
|
|
{"c4e37d19051111111111", 10, 5},
|
|
{"c4e3791d051111111111", 10, 5},
|
|
{"c4e37920051111111111", 10, 5},
|
|
{"c4e37921051111111111", 10, 5},
|
|
{"c4e37922051111111111", 10, 5},
|
|
{"c4e37d38051111111111", 10, 5},
|
|
{"c4e37d39051111111111", 10, 5},
|
|
{"c4e37940051111111111", 10, 5},
|
|
{"c4e37941051111111111", 10, 5},
|
|
{"c4e37942051111111111", 10, 5},
|
|
{"c4e37944051111111111", 10, 5},
|
|
{"c4e37d46051111111111", 10, 5},
|
|
{"c4e3794a051111111111", 10, 5},
|
|
{"c4e3794b051111111111", 10, 5},
|
|
{"c4e3794c051111111111", 10, 5},
|
|
{"c4e37960051111111111", 10, 5},
|
|
{"c4e37961051111111111", 10, 5},
|
|
{"c4e37962051111111111", 10, 5},
|
|
{"c4e37963051111111111", 10, 5},
|
|
{"c4e379df051111111111", 10, 5},
|
|
{"c4e37bf0051111111111", 10, 5},
|
|
};
|
|
|
|
inline constexpr DecoderBranchCase kDecoderBranchCases[] = {
|
|
{"0f0b", 2, Codegen::ControlFlowKind::Trap, false, 0},
|
|
{"0f80c0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f81c0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f82c0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f83c0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f84c0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f85c0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f86c0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f87c0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f88c0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f89c0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f8ac0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f8bc0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f8cc0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f8dc0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f8ec0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0f8fc0111111", 6, Codegen::ControlFlowKind::ConditionalBranch, true, 286331328},
|
|
{"0fb9c0", 3, Codegen::ControlFlowKind::Trap, false, 0},
|
|
{"480fb9c0", 4, Codegen::ControlFlowKind::Trap, false, 0},
|
|
{"48cac011", 4, Codegen::ControlFlowKind::Return, false, 0},
|
|
{"48cb", 2, Codegen::ControlFlowKind::Return, false, 0},
|
|
{"660fb9c0", 4, Codegen::ControlFlowKind::Trap, false, 0},
|
|
{"66c2c011", 4, Codegen::ControlFlowKind::Return, false, 0},
|
|
{"66c3", 2, Codegen::ControlFlowKind::Return, false, 0},
|
|
{"66cac011", 4, Codegen::ControlFlowKind::Return, false, 0},
|
|
{"66cb", 2, Codegen::ControlFlowKind::Return, false, 0},
|
|
{"66ff18", 3, Codegen::ControlFlowKind::IndirectCall, false, 0},
|
|
{"66ff28", 3, Codegen::ControlFlowKind::IndirectJump, false, 0},
|
|
{"66ffd0", 3, Codegen::ControlFlowKind::IndirectCall, false, 0},
|
|
{"66ffe0", 3, Codegen::ControlFlowKind::IndirectJump, false, 0},
|
|
{"70c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"71c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"72c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"73c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"74c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"75c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"76c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"77c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"78c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"79c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"7ac0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"7bc0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"7cc0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"7dc0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"7ec0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"7fc0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"c2c011", 3, Codegen::ControlFlowKind::Return, false, 0},
|
|
{"c3", 1, Codegen::ControlFlowKind::Return, false, 0},
|
|
{"cac011", 3, Codegen::ControlFlowKind::Return, false, 0},
|
|
{"cb", 1, Codegen::ControlFlowKind::Return, false, 0},
|
|
{"e0c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"e1c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"e2c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"e3c0", 2, Codegen::ControlFlowKind::ConditionalBranch, true, -64},
|
|
{"e8c0111111", 5, Codegen::ControlFlowKind::Call, true, 286331328},
|
|
{"e9c0111111", 5, Codegen::ControlFlowKind::UnconditionalJump, true, 286331328},
|
|
{"ebc0", 2, Codegen::ControlFlowKind::UnconditionalJump, true, -64},
|
|
{"ff1511111111", 6, Codegen::ControlFlowKind::Call, false, 0},
|
|
{"ff1d11111111", 6, Codegen::ControlFlowKind::IndirectCall, false, 0},
|
|
{"ff2511111111", 6, Codegen::ControlFlowKind::UnconditionalJump, true, 286331153},
|
|
{"ff2d11111111", 6, Codegen::ControlFlowKind::IndirectJump, false, 0},
|
|
{"ff18", 2, Codegen::ControlFlowKind::IndirectCall, false, 0},
|
|
{"ff28", 2, Codegen::ControlFlowKind::IndirectJump, false, 0},
|
|
{"ffd0", 2, Codegen::ControlFlowKind::IndirectCall, false, 0},
|
|
{"ffe0", 2, Codegen::ControlFlowKind::IndirectJump, false, 0},
|
|
};
|
|
|
|
#endif
|