25 { X86::ADC16mi8, X86::ADC16mi },
26 { X86::ADC16ri8, X86::ADC16ri },
27 { X86::ADC32mi8, X86::ADC32mi },
28 { X86::ADC32ri8, X86::ADC32ri },
29 { X86::ADC64mi8, X86::ADC64mi32 },
30 { X86::ADC64ri8, X86::ADC64ri32 },
32 { X86::ADD16mi8, X86::ADD16mi },
33 { X86::ADD16ri8, X86::ADD16ri },
34 { X86::ADD32mi8, X86::ADD32mi },
35 { X86::ADD32ri8, X86::ADD32ri },
36 { X86::ADD64mi8, X86::ADD64mi32 },
37 { X86::ADD64ri8, X86::ADD64ri32 },
39 { X86::AND16mi8, X86::AND16mi },
40 { X86::AND16ri8, X86::AND16ri },
41 { X86::AND32mi8, X86::AND32mi },
42 { X86::AND32ri8, X86::AND32ri },
43 { X86::AND64mi8, X86::AND64mi32 },
44 { X86::AND64ri8, X86::AND64ri32 },
46 { X86::CMP16mi8, X86::CMP16mi },
47 { X86::CMP16ri8, X86::CMP16ri },
48 { X86::CMP32mi8, X86::CMP32mi },
49 { X86::CMP32ri8, X86::CMP32ri },
50 { X86::CMP64mi8, X86::CMP64mi32 },
51 { X86::CMP64ri8, X86::CMP64ri32 },
53 { X86::IMUL16rmi8, X86::IMUL16rmi },
54 { X86::IMUL16rri8, X86::IMUL16rri },
55 { X86::IMUL32rmi8, X86::IMUL32rmi },
56 { X86::IMUL32rri8, X86::IMUL32rri },
57 { X86::IMUL64rmi8, X86::IMUL64rmi32 },
58 { X86::IMUL64rri8, X86::IMUL64rri32 },
60 { X86::OR16mi8, X86::OR16mi },
61 { X86::OR16ri8, X86::OR16ri },
62 { X86::OR32mi8, X86::OR32mi },
63 { X86::OR32ri8, X86::OR32ri },
64 { X86::OR64mi8, X86::OR64mi32 },
65 { X86::OR64ri8, X86::OR64ri32 },
67 { X86::PUSH16i8, X86::PUSHi16 },
68 { X86::PUSH32i8, X86::PUSHi32 },
69 { X86::PUSH64i8, X86::PUSH64i32 },
71 { X86::SBB16mi8, X86::SBB16mi },
72 { X86::SBB16ri8, X86::SBB16ri },
73 { X86::SBB32mi8, X86::SBB32mi },
74 { X86::SBB32ri8, X86::SBB32ri },
75 { X86::SBB64mi8, X86::SBB64mi32 },
76 { X86::SBB64ri8, X86::SBB64ri32 },
78 { X86::SUB16mi8, X86::SUB16mi },
79 { X86::SUB16ri8, X86::SUB16ri },
80 { X86::SUB32mi8, X86::SUB32mi },
81 { X86::SUB32ri8, X86::SUB32ri },
82 { X86::SUB64mi8, X86::SUB64mi32 },
83 { X86::SUB64ri8, X86::SUB64ri32 },
85 { X86::XOR16mi8, X86::XOR16mi },
86 { X86::XOR16ri8, X86::XOR16ri },
87 { X86::XOR32mi8, X86::XOR32mi },
88 { X86::XOR32ri8, X86::XOR32ri },
89 { X86::XOR64mi8, X86::XOR64mi32 },
90 { X86::XOR64ri8, X86::XOR64ri32 },
98 static std::atomic<bool> RelaxTableChecked(
false);
99 if (!RelaxTableChecked.load(std::memory_order_relaxed)) {
104 "InstrRelaxTable is not sorted and unique!");
105 RelaxTableChecked.store(
true, std::memory_order_relaxed);
123 struct X86ShortFormTable {
127 X86ShortFormTable() {
129 Table.push_back({Entry.DstOp, Entry.KeyOp});
134 assert(std::adjacent_find(Table.begin(), Table.end()) == Table.end() &&
135 "Short form table is not unique!");
145 if (
I != Table.end() &&
I->KeyOp == RelaxOp)