OLD | NEW |
1 //===- X86RegisterInfo.td - Describe the X86 Register File --*- tablegen -*-==// | 1 //===- X86RegisterInfo.td - Describe the X86 Register File --*- tablegen -*-==// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file describes the X86 Register file, defining the registers themselves, | 10 // This file describes the X86 Register file, defining the registers themselves, |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
255 def EFLAGS : X86Reg<"flags", 0>; | 255 def EFLAGS : X86Reg<"flags", 0>; |
256 | 256 |
257 // Segment registers | 257 // Segment registers |
258 def CS : X86Reg<"cs", 1>; | 258 def CS : X86Reg<"cs", 1>; |
259 def DS : X86Reg<"ds", 3>; | 259 def DS : X86Reg<"ds", 3>; |
260 def SS : X86Reg<"ss", 2>; | 260 def SS : X86Reg<"ss", 2>; |
261 def ES : X86Reg<"es", 0>; | 261 def ES : X86Reg<"es", 0>; |
262 def FS : X86Reg<"fs", 4>; | 262 def FS : X86Reg<"fs", 4>; |
263 def GS : X86Reg<"gs", 5>; | 263 def GS : X86Reg<"gs", 5>; |
264 | 264 |
| 265 def PSEUDO_NACL_SEG : X86Reg<"nacl", 6>; // @LOCALMOD |
| 266 |
265 // Debug registers | 267 // Debug registers |
266 def DR0 : X86Reg<"dr0", 0>; | 268 def DR0 : X86Reg<"dr0", 0>; |
267 def DR1 : X86Reg<"dr1", 1>; | 269 def DR1 : X86Reg<"dr1", 1>; |
268 def DR2 : X86Reg<"dr2", 2>; | 270 def DR2 : X86Reg<"dr2", 2>; |
269 def DR3 : X86Reg<"dr3", 3>; | 271 def DR3 : X86Reg<"dr3", 3>; |
270 def DR4 : X86Reg<"dr4", 4>; | 272 def DR4 : X86Reg<"dr4", 4>; |
271 def DR5 : X86Reg<"dr5", 5>; | 273 def DR5 : X86Reg<"dr5", 5>; |
272 def DR6 : X86Reg<"dr6", 6>; | 274 def DR6 : X86Reg<"dr6", 6>; |
273 def DR7 : X86Reg<"dr7", 7>; | 275 def DR7 : X86Reg<"dr7", 7>; |
274 | 276 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 // GR64 - 64-bit GPRs. This oddly includes RIP, which isn't accurate, since | 334 // GR64 - 64-bit GPRs. This oddly includes RIP, which isn't accurate, since |
333 // RIP isn't really a register and it can't be used anywhere except in an | 335 // RIP isn't really a register and it can't be used anywhere except in an |
334 // address, but it doesn't cause trouble. | 336 // address, but it doesn't cause trouble. |
335 def GR64 : RegisterClass<"X86", [i64], 64, | 337 def GR64 : RegisterClass<"X86", [i64], 64, |
336 (add RAX, RCX, RDX, RSI, RDI, R8, R9, R10, R11, | 338 (add RAX, RCX, RDX, RSI, RDI, R8, R9, R10, R11, |
337 RBX, R14, R15, R12, R13, RBP, RSP, RIP)>; | 339 RBX, R14, R15, R12, R13, RBP, RSP, RIP)>; |
338 | 340 |
339 // Segment registers for use by MOV instructions (and others) that have a | 341 // Segment registers for use by MOV instructions (and others) that have a |
340 // segment register as one operand. Always contain a 16-bit segment | 342 // segment register as one operand. Always contain a 16-bit segment |
341 // descriptor. | 343 // descriptor. |
342 def SEGMENT_REG : RegisterClass<"X86", [i16], 16, (add CS, DS, SS, ES, FS, GS)>; | 344 def SEGMENT_REG : RegisterClass<"X86", [i16], 16, (add CS, DS, SS, ES, FS, GS, |
| 345 // @LOCALMOD |
| 346 PSEUDO_NACL_SEG)>; |
343 | 347 |
344 // Debug registers. | 348 // Debug registers. |
345 def DEBUG_REG : RegisterClass<"X86", [i32], 32, (sequence "DR%u", 0, 7)>; | 349 def DEBUG_REG : RegisterClass<"X86", [i32], 32, (sequence "DR%u", 0, 7)>; |
346 | 350 |
347 // Control registers. | 351 // Control registers. |
348 def CONTROL_REG : RegisterClass<"X86", [i64], 64, (sequence "CR%u", 0, 15)>; | 352 def CONTROL_REG : RegisterClass<"X86", [i64], 64, (sequence "CR%u", 0, 15)>; |
349 | 353 |
350 // GR8_ABCD_L, GR8_ABCD_H, GR16_ABCD, GR32_ABCD, GR64_ABCD - Subclasses of | 354 // GR8_ABCD_L, GR8_ABCD_H, GR16_ABCD, GR32_ABCD, GR64_ABCD - Subclasses of |
351 // GR8, GR16, GR32, and GR64 which contain just the "a" "b", "c", and "d" | 355 // GR8, GR16, GR32, and GR64 which contain just the "a" "b", "c", and "d" |
352 // registers. On x86-32, GR16_ABCD and GR32_ABCD are classes for registers | 356 // registers. On x86-32, GR16_ABCD and GR32_ABCD are classes for registers |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 def VK32 : RegisterClass<"X86", [v32i1], 32, (add VK16)> {let Size = 32;} | 473 def VK32 : RegisterClass<"X86", [v32i1], 32, (add VK16)> {let Size = 32;} |
470 def VK64 : RegisterClass<"X86", [v64i1], 64, (add VK32)> {let Size = 64;} | 474 def VK64 : RegisterClass<"X86", [v64i1], 64, (add VK32)> {let Size = 64;} |
471 | 475 |
472 def VK1WM : RegisterClass<"X86", [i1], 16, (sub VK1, K0)> {let Size = 16;} | 476 def VK1WM : RegisterClass<"X86", [i1], 16, (sub VK1, K0)> {let Size = 16;} |
473 def VK2WM : RegisterClass<"X86", [v2i1], 16, (sub VK2, K0)> {let Size = 16;} | 477 def VK2WM : RegisterClass<"X86", [v2i1], 16, (sub VK2, K0)> {let Size = 16;} |
474 def VK4WM : RegisterClass<"X86", [v4i1], 16, (sub VK4, K0)> {let Size = 16;} | 478 def VK4WM : RegisterClass<"X86", [v4i1], 16, (sub VK4, K0)> {let Size = 16;} |
475 def VK8WM : RegisterClass<"X86", [v8i1], 16, (sub VK8, K0)> {let Size = 16;} | 479 def VK8WM : RegisterClass<"X86", [v8i1], 16, (sub VK8, K0)> {let Size = 16;} |
476 def VK16WM : RegisterClass<"X86", [v16i1], 16, (add VK8WM)> {let Size = 16;} | 480 def VK16WM : RegisterClass<"X86", [v16i1], 16, (add VK8WM)> {let Size = 16;} |
477 def VK32WM : RegisterClass<"X86", [v32i1], 32, (add VK16WM)> {let Size = 32;} | 481 def VK32WM : RegisterClass<"X86", [v32i1], 32, (add VK16WM)> {let Size = 32;} |
478 def VK64WM : RegisterClass<"X86", [v64i1], 64, (add VK32WM)> {let Size = 64;} | 482 def VK64WM : RegisterClass<"X86", [v64i1], 64, (add VK32WM)> {let Size = 64;} |
OLD | NEW |