OLD | NEW |
1 //===-- X86BaseInfo.h - Top level definitions for X86 -------- --*- C++ -*-===// | 1 //===-- X86BaseInfo.h - Top level definitions for X86 -------- --*- C++ -*-===// |
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 contains small standalone helper functions and enum definitions for | 10 // This file contains small standalone helper functions and enum definitions for |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 MRM_D8 = 48, MRM_D9 = 49, MRM_DA = 50, MRM_DB = 51, | 308 MRM_D8 = 48, MRM_D9 = 49, MRM_DA = 50, MRM_DB = 51, |
309 MRM_DC = 52, MRM_DD = 53, MRM_DE = 54, MRM_DF = 55, | 309 MRM_DC = 52, MRM_DD = 53, MRM_DE = 54, MRM_DF = 55, |
310 MRM_E0 = 56, MRM_E1 = 57, MRM_E2 = 58, MRM_E3 = 59, | 310 MRM_E0 = 56, MRM_E1 = 57, MRM_E2 = 58, MRM_E3 = 59, |
311 MRM_E4 = 60, MRM_E5 = 61, MRM_E8 = 62, MRM_E9 = 63, | 311 MRM_E4 = 60, MRM_E5 = 61, MRM_E8 = 62, MRM_E9 = 63, |
312 MRM_EA = 64, MRM_EB = 65, MRM_EC = 66, MRM_ED = 67, | 312 MRM_EA = 64, MRM_EB = 65, MRM_EC = 66, MRM_ED = 67, |
313 MRM_EE = 68, MRM_F0 = 69, MRM_F1 = 70, MRM_F2 = 71, | 313 MRM_EE = 68, MRM_F0 = 69, MRM_F1 = 70, MRM_F2 = 71, |
314 MRM_F3 = 72, MRM_F4 = 73, MRM_F5 = 74, MRM_F6 = 75, | 314 MRM_F3 = 72, MRM_F4 = 73, MRM_F5 = 74, MRM_F6 = 75, |
315 MRM_F7 = 76, MRM_F8 = 77, MRM_F9 = 78, MRM_FA = 79, | 315 MRM_F7 = 76, MRM_F8 = 77, MRM_F9 = 78, MRM_FA = 79, |
316 MRM_FB = 80, MRM_FC = 81, MRM_FD = 82, MRM_FE = 83, | 316 MRM_FB = 80, MRM_FC = 81, MRM_FD = 82, MRM_FE = 83, |
317 MRM_FF = 84, | 317 MRM_FF = 84, |
318 | 318 CustomFrm = 126, // @LOCALMOD |
319 FormMask = 127, | 319 FormMask = 127, |
320 | 320 |
321 //===------------------------------------------------------------------===// | 321 //===------------------------------------------------------------------===// |
322 // Actual flags... | 322 // Actual flags... |
323 | 323 |
324 // OpSize - OpSizeFixed implies instruction never needs a 0x66 prefix. | 324 // OpSize - OpSizeFixed implies instruction never needs a 0x66 prefix. |
325 // OpSize16 means this is a 16-bit instruction and needs 0x66 prefix in | 325 // OpSize16 means this is a 16-bit instruction and needs 0x66 prefix in |
326 // 32-bit mode. OpSize32 means this is a 32-bit instruction needs a 0x66 | 326 // 32-bit mode. OpSize32 means this is a 32-bit instruction needs a 0x66 |
327 // prefix in 16-bit mode. | 327 // prefix in 16-bit mode. |
328 OpSizeShift = 7, | 328 OpSizeShift = 7, |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
648 /// is duplicated in the MCInst (e.g. "EAX = addl EAX, [mem]") it is only | 648 /// is duplicated in the MCInst (e.g. "EAX = addl EAX, [mem]") it is only |
649 /// counted as one operand. | 649 /// counted as one operand. |
650 /// | 650 /// |
651 inline int getMemoryOperandNo(uint64_t TSFlags, unsigned Opcode) { | 651 inline int getMemoryOperandNo(uint64_t TSFlags, unsigned Opcode) { |
652 bool HasVEX_4V = TSFlags & X86II::VEX_4V; | 652 bool HasVEX_4V = TSFlags & X86II::VEX_4V; |
653 bool HasMemOp4 = TSFlags & X86II::MemOp4; | 653 bool HasMemOp4 = TSFlags & X86II::MemOp4; |
654 bool HasEVEX_K = TSFlags & X86II::EVEX_K; | 654 bool HasEVEX_K = TSFlags & X86II::EVEX_K; |
655 | 655 |
656 switch (TSFlags & X86II::FormMask) { | 656 switch (TSFlags & X86II::FormMask) { |
657 default: llvm_unreachable("Unknown FormMask value in getMemoryOperandNo!"); | 657 default: llvm_unreachable("Unknown FormMask value in getMemoryOperandNo!"); |
| 658 case X86II::CustomFrm: // @LOCALMOD |
658 case X86II::Pseudo: | 659 case X86II::Pseudo: |
659 case X86II::RawFrm: | 660 case X86II::RawFrm: |
660 case X86II::AddRegFrm: | 661 case X86II::AddRegFrm: |
661 case X86II::MRMDestReg: | 662 case X86II::MRMDestReg: |
662 case X86II::MRMSrcReg: | 663 case X86II::MRMSrcReg: |
663 case X86II::RawFrmImm8: | 664 case X86II::RawFrmImm8: |
664 case X86II::RawFrmImm16: | 665 case X86II::RawFrmImm16: |
665 case X86II::RawFrmMemOffs: | 666 case X86II::RawFrmMemOffs: |
666 case X86II::RawFrmSrc: | 667 case X86II::RawFrmSrc: |
667 case X86II::RawFrmDst: | 668 case X86II::RawFrmDst: |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
762 | 763 |
763 inline bool isX86_64NonExtLowByteReg(unsigned reg) { | 764 inline bool isX86_64NonExtLowByteReg(unsigned reg) { |
764 return (reg == X86::SPL || reg == X86::BPL || | 765 return (reg == X86::SPL || reg == X86::BPL || |
765 reg == X86::SIL || reg == X86::DIL); | 766 reg == X86::SIL || reg == X86::DIL); |
766 } | 767 } |
767 } | 768 } |
768 | 769 |
769 } // end namespace llvm; | 770 } // end namespace llvm; |
770 | 771 |
771 #endif | 772 #endif |
OLD | NEW |