OLD | NEW |
---|---|
1 //===- subzero/src/IceTargetLoweringX8632Traits.h - x86-32 traits -*- C++ -*-=// | 1 //===- subzero/src/IceTargetLoweringX8632Traits.h - x86-32 traits -*- C++ -*-=// |
2 // | 2 // |
3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
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 /// \file | 10 /// \file |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
61 enum ScaleFactor { TIMES_1 = 0, TIMES_2 = 1, TIMES_4 = 2, TIMES_8 = 3 }; | 61 enum ScaleFactor { TIMES_1 = 0, TIMES_2 = 1, TIMES_4 = 2, TIMES_8 = 3 }; |
62 | 62 |
63 using GPRRegister = ::Ice::RegX8632::GPRRegister; | 63 using GPRRegister = ::Ice::RegX8632::GPRRegister; |
64 using ByteRegister = ::Ice::RegX8632::ByteRegister; | 64 using ByteRegister = ::Ice::RegX8632::ByteRegister; |
65 using XmmRegister = ::Ice::RegX8632::XmmRegister; | 65 using XmmRegister = ::Ice::RegX8632::XmmRegister; |
66 using X87STRegister = ::Ice::RegX8632::X87STRegister; | 66 using X87STRegister = ::Ice::RegX8632::X87STRegister; |
67 | 67 |
68 using Cond = ::Ice::CondX86; | 68 using Cond = ::Ice::CondX86; |
69 | 69 |
70 using RegisterSet = ::Ice::RegX8632; | 70 using RegisterSet = ::Ice::RegX8632; |
71 static const SizeT StackPtr = RegX8632::Reg_esp; | |
72 static const SizeT FramePtr = RegX8632::Reg_ebp; | |
71 static const GPRRegister Encoded_Reg_Accumulator = RegX8632::Encoded_Reg_eax; | 73 static const GPRRegister Encoded_Reg_Accumulator = RegX8632::Encoded_Reg_eax; |
72 static const GPRRegister Encoded_Reg_Counter = RegX8632::Encoded_Reg_ecx; | 74 static const GPRRegister Encoded_Reg_Counter = RegX8632::Encoded_Reg_ecx; |
73 static const FixupKind PcRelFixup = llvm::ELF::R_386_PC32; | 75 static const FixupKind PcRelFixup = llvm::ELF::R_386_PC32; |
74 static const FixupKind RelFixup = llvm::ELF::R_386_32; | 76 static const FixupKind RelFixup = llvm::ELF::R_386_32; |
75 | 77 |
76 class Operand { | 78 class Operand { |
77 public: | 79 public: |
78 Operand(const Operand &other) | 80 Operand(const Operand &other) |
79 : fixup_(other.fixup_), length_(other.length_) { | 81 : fixup_(other.fixup_), length_(other.length_) { |
80 memmove(&encoding_[0], &other.encoding_[0], other.length_); | 82 memmove(&encoding_[0], &other.encoding_[0], other.length_); |
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
570 if (!First) | 572 if (!First) |
571 Str << " "; | 573 Str << " "; |
572 First = false; | 574 First = false; |
573 Str << getRegName(Register); | 575 Str << getRegName(Register); |
574 } | 576 } |
575 Str << "}\n"; | 577 Str << "}\n"; |
576 } | 578 } |
577 } | 579 } |
578 } | 580 } |
579 | 581 |
582 static int32_t getRaxOrDie() { | |
583 llvm::report_fatal_error("no rax in non-64-bit mode."); | |
584 } | |
Jim Stichnoth
2015/12/22 15:36:16
I would "return -1;" to avoid compiler warnings/er
John
2015/12/22 16:20:02
but that's what that attribute is for... there's j
| |
585 | |
586 static int32_t getRdxOrDie() { | |
587 llvm::report_fatal_error("no rdx in non-64-bit mode."); | |
588 } | |
589 | |
580 /// The maximum number of arguments to pass in XMM registers | 590 /// The maximum number of arguments to pass in XMM registers |
581 static const uint32_t X86_MAX_XMM_ARGS = 4; | 591 static const uint32_t X86_MAX_XMM_ARGS = 4; |
582 /// The maximum number of arguments to pass in GPR registers | 592 /// The maximum number of arguments to pass in GPR registers |
583 static const uint32_t X86_MAX_GPR_ARGS = 0; | 593 static const uint32_t X86_MAX_GPR_ARGS = 0; |
584 /// The number of bits in a byte | 594 /// The number of bits in a byte |
585 static const uint32_t X86_CHAR_BIT = 8; | 595 static const uint32_t X86_CHAR_BIT = 8; |
586 /// Stack alignment. This is defined in IceTargetLoweringX8632.cpp because it | 596 /// Stack alignment. This is defined in IceTargetLoweringX8632.cpp because it |
587 /// is used as an argument to std::max(), and the default std::less<T> has an | 597 /// is used as an argument to std::max(), and the default std::less<T> has an |
588 /// operator(T const&, T const&) which requires this member to have an | 598 /// operator(T const&, T const&) which requires this member to have an |
589 /// address. | 599 /// address. |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
867 | 877 |
868 } // end of namespace X86Internal | 878 } // end of namespace X86Internal |
869 | 879 |
870 namespace X8632 { | 880 namespace X8632 { |
871 using Traits = ::Ice::X86Internal::MachineTraits<TargetX8632>; | 881 using Traits = ::Ice::X86Internal::MachineTraits<TargetX8632>; |
872 } // end of namespace X8632 | 882 } // end of namespace X8632 |
873 | 883 |
874 } // end of namespace Ice | 884 } // end of namespace Ice |
875 | 885 |
876 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632TRAITS_H | 886 #endif // SUBZERO_SRC_ICETARGETLOWERINGX8632TRAITS_H |
OLD | NEW |