| 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 |