Lines Matching full:x86
1 //===-- X86BaseInfo.h - Top level definitions for X86 -------- --*- C++ -*-===//
10 // the X86 target useful for the compiler back-end and the MC libraries.
25 namespace X86 {
75 // X86 specific condition code. These correspond to X86_*_COND in
98 // which can't be represented on x86 with a single condition. These
131 case X86::TEST16i16: in classifyFirstOpcodeInMacroFusion()
132 case X86::TEST16mr: in classifyFirstOpcodeInMacroFusion()
133 case X86::TEST16ri: in classifyFirstOpcodeInMacroFusion()
134 case X86::TEST16rr: in classifyFirstOpcodeInMacroFusion()
135 case X86::TEST32i32: in classifyFirstOpcodeInMacroFusion()
136 case X86::TEST32mr: in classifyFirstOpcodeInMacroFusion()
137 case X86::TEST32ri: in classifyFirstOpcodeInMacroFusion()
138 case X86::TEST32rr: in classifyFirstOpcodeInMacroFusion()
139 case X86::TEST64i32: in classifyFirstOpcodeInMacroFusion()
140 case X86::TEST64mr: in classifyFirstOpcodeInMacroFusion()
141 case X86::TEST64ri32: in classifyFirstOpcodeInMacroFusion()
142 case X86::TEST64rr: in classifyFirstOpcodeInMacroFusion()
143 case X86::TEST8i8: in classifyFirstOpcodeInMacroFusion()
144 case X86::TEST8mr: in classifyFirstOpcodeInMacroFusion()
145 case X86::TEST8ri: in classifyFirstOpcodeInMacroFusion()
146 case X86::TEST8rr: in classifyFirstOpcodeInMacroFusion()
148 case X86::AND16i16: in classifyFirstOpcodeInMacroFusion()
149 case X86::AND16ri: in classifyFirstOpcodeInMacroFusion()
150 case X86::AND16ri8: in classifyFirstOpcodeInMacroFusion()
151 case X86::AND16rm: in classifyFirstOpcodeInMacroFusion()
152 case X86::AND16rr: in classifyFirstOpcodeInMacroFusion()
153 case X86::AND32i32: in classifyFirstOpcodeInMacroFusion()
154 case X86::AND32ri: in classifyFirstOpcodeInMacroFusion()
155 case X86::AND32ri8: in classifyFirstOpcodeInMacroFusion()
156 case X86::AND32rm: in classifyFirstOpcodeInMacroFusion()
157 case X86::AND32rr: in classifyFirstOpcodeInMacroFusion()
158 case X86::AND64i32: in classifyFirstOpcodeInMacroFusion()
159 case X86::AND64ri32: in classifyFirstOpcodeInMacroFusion()
160 case X86::AND64ri8: in classifyFirstOpcodeInMacroFusion()
161 case X86::AND64rm: in classifyFirstOpcodeInMacroFusion()
162 case X86::AND64rr: in classifyFirstOpcodeInMacroFusion()
163 case X86::AND8i8: in classifyFirstOpcodeInMacroFusion()
164 case X86::AND8ri: in classifyFirstOpcodeInMacroFusion()
165 case X86::AND8ri8: in classifyFirstOpcodeInMacroFusion()
166 case X86::AND8rm: in classifyFirstOpcodeInMacroFusion()
167 case X86::AND8rr: in classifyFirstOpcodeInMacroFusion()
170 case X86::CMP16i16: in classifyFirstOpcodeInMacroFusion()
171 case X86::CMP16mr: in classifyFirstOpcodeInMacroFusion()
172 case X86::CMP16ri: in classifyFirstOpcodeInMacroFusion()
173 case X86::CMP16ri8: in classifyFirstOpcodeInMacroFusion()
174 case X86::CMP16rm: in classifyFirstOpcodeInMacroFusion()
175 case X86::CMP16rr: in classifyFirstOpcodeInMacroFusion()
176 case X86::CMP32i32: in classifyFirstOpcodeInMacroFusion()
177 case X86::CMP32mr: in classifyFirstOpcodeInMacroFusion()
178 case X86::CMP32ri: in classifyFirstOpcodeInMacroFusion()
179 case X86::CMP32ri8: in classifyFirstOpcodeInMacroFusion()
180 case X86::CMP32rm: in classifyFirstOpcodeInMacroFusion()
181 case X86::CMP32rr: in classifyFirstOpcodeInMacroFusion()
182 case X86::CMP64i32: in classifyFirstOpcodeInMacroFusion()
183 case X86::CMP64mr: in classifyFirstOpcodeInMacroFusion()
184 case X86::CMP64ri32: in classifyFirstOpcodeInMacroFusion()
185 case X86::CMP64ri8: in classifyFirstOpcodeInMacroFusion()
186 case X86::CMP64rm: in classifyFirstOpcodeInMacroFusion()
187 case X86::CMP64rr: in classifyFirstOpcodeInMacroFusion()
188 case X86::CMP8i8: in classifyFirstOpcodeInMacroFusion()
189 case X86::CMP8mr: in classifyFirstOpcodeInMacroFusion()
190 case X86::CMP8ri: in classifyFirstOpcodeInMacroFusion()
191 case X86::CMP8ri8: in classifyFirstOpcodeInMacroFusion()
192 case X86::CMP8rm: in classifyFirstOpcodeInMacroFusion()
193 case X86::CMP8rr: in classifyFirstOpcodeInMacroFusion()
196 case X86::ADD16i16: in classifyFirstOpcodeInMacroFusion()
197 case X86::ADD16ri: in classifyFirstOpcodeInMacroFusion()
198 case X86::ADD16ri8: in classifyFirstOpcodeInMacroFusion()
199 case X86::ADD16rm: in classifyFirstOpcodeInMacroFusion()
200 case X86::ADD16rr: in classifyFirstOpcodeInMacroFusion()
201 case X86::ADD32i32: in classifyFirstOpcodeInMacroFusion()
202 case X86::ADD32ri: in classifyFirstOpcodeInMacroFusion()
203 case X86::ADD32ri8: in classifyFirstOpcodeInMacroFusion()
204 case X86::ADD32rm: in classifyFirstOpcodeInMacroFusion()
205 case X86::ADD32rr: in classifyFirstOpcodeInMacroFusion()
206 case X86::ADD64i32: in classifyFirstOpcodeInMacroFusion()
207 case X86::ADD64ri32: in classifyFirstOpcodeInMacroFusion()
208 case X86::ADD64ri8: in classifyFirstOpcodeInMacroFusion()
209 case X86::ADD64rm: in classifyFirstOpcodeInMacroFusion()
210 case X86::ADD64rr: in classifyFirstOpcodeInMacroFusion()
211 case X86::ADD8i8: in classifyFirstOpcodeInMacroFusion()
212 case X86::ADD8ri: in classifyFirstOpcodeInMacroFusion()
213 case X86::ADD8ri8: in classifyFirstOpcodeInMacroFusion()
214 case X86::ADD8rm: in classifyFirstOpcodeInMacroFusion()
215 case X86::ADD8rr: in classifyFirstOpcodeInMacroFusion()
217 case X86::SUB16i16: in classifyFirstOpcodeInMacroFusion()
218 case X86::SUB16ri: in classifyFirstOpcodeInMacroFusion()
219 case X86::SUB16ri8: in classifyFirstOpcodeInMacroFusion()
220 case X86::SUB16rm: in classifyFirstOpcodeInMacroFusion()
221 case X86::SUB16rr: in classifyFirstOpcodeInMacroFusion()
222 case X86::SUB32i32: in classifyFirstOpcodeInMacroFusion()
223 case X86::SUB32ri: in classifyFirstOpcodeInMacroFusion()
224 case X86::SUB32ri8: in classifyFirstOpcodeInMacroFusion()
225 case X86::SUB32rm: in classifyFirstOpcodeInMacroFusion()
226 case X86::SUB32rr: in classifyFirstOpcodeInMacroFusion()
227 case X86::SUB64i32: in classifyFirstOpcodeInMacroFusion()
228 case X86::SUB64ri32: in classifyFirstOpcodeInMacroFusion()
229 case X86::SUB64ri8: in classifyFirstOpcodeInMacroFusion()
230 case X86::SUB64rm: in classifyFirstOpcodeInMacroFusion()
231 case X86::SUB64rr: in classifyFirstOpcodeInMacroFusion()
232 case X86::SUB8i8: in classifyFirstOpcodeInMacroFusion()
233 case X86::SUB8ri: in classifyFirstOpcodeInMacroFusion()
234 case X86::SUB8ri8: in classifyFirstOpcodeInMacroFusion()
235 case X86::SUB8rm: in classifyFirstOpcodeInMacroFusion()
236 case X86::SUB8rr: in classifyFirstOpcodeInMacroFusion()
239 case X86::INC16r: in classifyFirstOpcodeInMacroFusion()
240 case X86::INC16r_alt: in classifyFirstOpcodeInMacroFusion()
241 case X86::INC32r: in classifyFirstOpcodeInMacroFusion()
242 case X86::INC32r_alt: in classifyFirstOpcodeInMacroFusion()
243 case X86::INC64r: in classifyFirstOpcodeInMacroFusion()
244 case X86::INC8r: in classifyFirstOpcodeInMacroFusion()
246 case X86::DEC16r: in classifyFirstOpcodeInMacroFusion()
247 case X86::DEC16r_alt: in classifyFirstOpcodeInMacroFusion()
248 case X86::DEC32r: in classifyFirstOpcodeInMacroFusion()
249 case X86::DEC32r_alt: in classifyFirstOpcodeInMacroFusion()
250 case X86::DEC64r: in classifyFirstOpcodeInMacroFusion()
251 case X86::DEC8r: in classifyFirstOpcodeInMacroFusion()
258 classifySecondCondCodeInMacroFusion(X86::CondCode CC) { in classifySecondCondCodeInMacroFusion()
259 if (CC == X86::COND_INVALID) in classifySecondCondCodeInMacroFusion()
264 case X86::COND_E: // JE,JZ in classifySecondCondCodeInMacroFusion()
265 case X86::COND_NE: // JNE,JNZ in classifySecondCondCodeInMacroFusion()
266 case X86::COND_L: // JL,JNGE in classifySecondCondCodeInMacroFusion()
267 case X86::COND_LE: // JLE,JNG in classifySecondCondCodeInMacroFusion()
268 case X86::COND_G: // JG,JNLE in classifySecondCondCodeInMacroFusion()
269 case X86::COND_GE: // JGE,JNL in classifySecondCondCodeInMacroFusion()
271 case X86::COND_B: // JB,JC in classifySecondCondCodeInMacroFusion()
272 case X86::COND_BE: // JNA,JBE in classifySecondCondCodeInMacroFusion()
273 case X86::COND_A: // JA,JNBE in classifySecondCondCodeInMacroFusion()
274 case X86::COND_AE: // JAE,JNC,JNB in classifySecondCondCodeInMacroFusion()
276 case X86::COND_S: // JS in classifySecondCondCodeInMacroFusion()
277 case X86::COND_NS: // JNS in classifySecondCondCodeInMacroFusion()
278 case X86::COND_P: // JP,JPE in classifySecondCondCodeInMacroFusion()
279 case X86::COND_NP: // JNP,JPO in classifySecondCondCodeInMacroFusion()
280 case X86::COND_O: // JO in classifySecondCondCodeInMacroFusion()
281 case X86::COND_NO: // JNO in classifySecondCondCodeInMacroFusion()
293 case X86::FirstMacroFusionInstKind::Test: in isMacroFused()
294 case X86::FirstMacroFusionInstKind::And: in isMacroFused()
296 case X86::FirstMacroFusionInstKind::Cmp: in isMacroFused()
297 case X86::FirstMacroFusionInstKind::AddSub: in isMacroFused()
298 return SecondKind == X86::SecondMacroFusionInstKind::AB || in isMacroFused()
299 SecondKind == X86::SecondMacroFusionInstKind::ELG; in isMacroFused()
300 case X86::FirstMacroFusionInstKind::IncDec: in isMacroFused()
301 return SecondKind == X86::SecondMacroFusionInstKind::ELG; in isMacroFused()
302 case X86::FirstMacroFusionInstKind::Invalid: in isMacroFused()
336 case X86::CS: in getSegmentOverridePrefixForReg()
338 case X86::DS: in getSegmentOverridePrefixForReg()
340 case X86::ES: in getSegmentOverridePrefixForReg()
342 case X86::FS: in getSegmentOverridePrefixForReg()
344 case X86::GS: in getSegmentOverridePrefixForReg()
346 case X86::SS: in getSegmentOverridePrefixForReg()
351 } // namespace X86
360 // X86 Specific MachineOperand flags.
374 /// See the X86-64 ELF ABI supplement for more details.
379 /// See the X86-64 ELF ABI supplement for more details.
385 /// See the X86-64 ELF ABI supplement for more details.
394 /// See the X86-64 ELF ABI supplement for more details.
408 /// block for the symbol. Used in the x86-64 local dynamic TLS access model.
422 /// symbol. Used in the x86-64 initial exec TLS access model.
434 /// the thread-pointer offset for the symbol. Used in the x86-64 local
493 // Instruction encodings. These are the standard/most common forms for X86
888 /// \returns the "base" X86 opcode for the specified machine
1157 static_assert(X86::XMM15 - X86::XMM0 == 15, in isXMMReg()
1159 static_assert(X86::XMM31 - X86::XMM16 == 15, in isXMMReg()
1161 return (RegNo >= X86::XMM0 && RegNo <= X86::XMM15) || in isXMMReg()
1162 (RegNo >= X86::XMM16 && RegNo <= X86::XMM31); in isXMMReg()
1167 static_assert(X86::YMM15 - X86::YMM0 == 15, in isYMMReg()
1169 static_assert(X86::YMM31 - X86::YMM16 == 15, in isYMMReg()
1171 return (RegNo >= X86::YMM0 && RegNo <= X86::YMM15) || in isYMMReg()
1172 (RegNo >= X86::YMM16 && RegNo <= X86::YMM31); in isYMMReg()
1177 static_assert(X86::ZMM31 - X86::ZMM0 == 31, in isZMMReg()
1179 return RegNo >= X86::ZMM0 && RegNo <= X86::ZMM31; in isZMMReg()
1184 static_assert(X86::R31WH - X86::R16 == 95, "EGPRs are not continuous"); in isApxExtendedReg()
1185 return RegNo >= X86::R16 && RegNo <= X86::R31WH; in isApxExtendedReg()
1188 /// \returns true if the MachineOperand is a x86-64 extended (r8 or
1191 if ((RegNo >= X86::XMM8 && RegNo <= X86::XMM15) || in isX86_64ExtendedReg()
1192 (RegNo >= X86::XMM16 && RegNo <= X86::XMM31) || in isX86_64ExtendedReg()
1193 (RegNo >= X86::YMM8 && RegNo <= X86::YMM15) || in isX86_64ExtendedReg()
1194 (RegNo >= X86::YMM16 && RegNo <= X86::YMM31) || in isX86_64ExtendedReg()
1195 (RegNo >= X86::ZMM8 && RegNo <= X86::ZMM31)) in isX86_64ExtendedReg()
1204 case X86::R8: in isX86_64ExtendedReg()
1205 case X86::R9: in isX86_64ExtendedReg()
1206 case X86::R10: in isX86_64ExtendedReg()
1207 case X86::R11: in isX86_64ExtendedReg()
1208 case X86::R12: in isX86_64ExtendedReg()
1209 case X86::R13: in isX86_64ExtendedReg()
1210 case X86::R14: in isX86_64ExtendedReg()
1211 case X86::R15: in isX86_64ExtendedReg()
1212 case X86::R8D: in isX86_64ExtendedReg()
1213 case X86::R9D: in isX86_64ExtendedReg()
1214 case X86::R10D: in isX86_64ExtendedReg()
1215 case X86::R11D: in isX86_64ExtendedReg()
1216 case X86::R12D: in isX86_64ExtendedReg()
1217 case X86::R13D: in isX86_64ExtendedReg()
1218 case X86::R14D: in isX86_64ExtendedReg()
1219 case X86::R15D: in isX86_64ExtendedReg()
1220 case X86::R8W: in isX86_64ExtendedReg()
1221 case X86::R9W: in isX86_64ExtendedReg()
1222 case X86::R10W: in isX86_64ExtendedReg()
1223 case X86::R11W: in isX86_64ExtendedReg()
1224 case X86::R12W: in isX86_64ExtendedReg()
1225 case X86::R13W: in isX86_64ExtendedReg()
1226 case X86::R14W: in isX86_64ExtendedReg()
1227 case X86::R15W: in isX86_64ExtendedReg()
1228 case X86::R8B: in isX86_64ExtendedReg()
1229 case X86::R9B: in isX86_64ExtendedReg()
1230 case X86::R10B: in isX86_64ExtendedReg()
1231 case X86::R11B: in isX86_64ExtendedReg()
1232 case X86::R12B: in isX86_64ExtendedReg()
1233 case X86::R13B: in isX86_64ExtendedReg()
1234 case X86::R14B: in isX86_64ExtendedReg()
1235 case X86::R15B: in isX86_64ExtendedReg()
1236 case X86::CR8: in isX86_64ExtendedReg()
1237 case X86::CR9: in isX86_64ExtendedReg()
1238 case X86::CR10: in isX86_64ExtendedReg()
1239 case X86::CR11: in isX86_64ExtendedReg()
1240 case X86::CR12: in isX86_64ExtendedReg()
1241 case X86::CR13: in isX86_64ExtendedReg()
1242 case X86::CR14: in isX86_64ExtendedReg()
1243 case X86::CR15: in isX86_64ExtendedReg()
1244 case X86::DR8: in isX86_64ExtendedReg()
1245 case X86::DR9: in isX86_64ExtendedReg()
1246 case X86::DR10: in isX86_64ExtendedReg()
1247 case X86::DR11: in isX86_64ExtendedReg()
1248 case X86::DR12: in isX86_64ExtendedReg()
1249 case X86::DR13: in isX86_64ExtendedReg()
1250 case X86::DR14: in isX86_64ExtendedReg()
1251 case X86::DR15: in isX86_64ExtendedReg()
1266 if (Opcode == X86::MOV32r0) in canUseApxExtendedReg()
1279 case X86::XSAVE: in canUseApxExtendedReg()
1280 case X86::XSAVE64: in canUseApxExtendedReg()
1281 case X86::XSAVEOPT: in canUseApxExtendedReg()
1282 case X86::XSAVEOPT64: in canUseApxExtendedReg()
1283 case X86::XSAVEC: in canUseApxExtendedReg()
1284 case X86::XSAVEC64: in canUseApxExtendedReg()
1285 case X86::XSAVES: in canUseApxExtendedReg()
1286 case X86::XSAVES64: in canUseApxExtendedReg()
1287 case X86::XRSTOR: in canUseApxExtendedReg()
1288 case X86::XRSTOR64: in canUseApxExtendedReg()
1289 case X86::XRSTORS: in canUseApxExtendedReg()
1290 case X86::XRSTORS64: in canUseApxExtendedReg()
1300 return ((RegNo >= X86::XMM16 && RegNo <= X86::XMM31) || in is32ExtendedReg()
1301 (RegNo >= X86::YMM16 && RegNo <= X86::YMM31) || in is32ExtendedReg()
1302 (RegNo >= X86::ZMM16 && RegNo <= X86::ZMM31)); in is32ExtendedReg()
1306 return (reg == X86::SPL || reg == X86::BPL || reg == X86::SIL || in isX86_64NonExtLowByteReg()
1307 reg == X86::DIL); in isX86_64NonExtLowByteReg()
1334 case X86::ESP: in needSIB()
1335 case X86::RSP: in needSIB()
1336 case X86::R12: in needSIB()
1337 case X86::R12D: in needSIB()
1338 case X86::R20: in needSIB()
1339 case X86::R20D: in needSIB()
1340 case X86::R28: in needSIB()
1341 case X86::R28D: in needSIB()