OLD | NEW |
1 //===- subzero/src/IceTargetLoweringX8632.cpp - x86-32 lowering -----------===// | 1 //===- subzero/src/IceTargetLoweringX8632.cpp - x86-32 lowering -----------===// |
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 // This file implements the TargetLoweringX8632 class, which | 10 // This file implements the TargetLoweringX8632 class, which |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 // The maximum number of arguments to pass in XMM registers | 121 // The maximum number of arguments to pass in XMM registers |
122 const unsigned X86_MAX_XMM_ARGS = 4; | 122 const unsigned X86_MAX_XMM_ARGS = 4; |
123 // The number of bits in a byte | 123 // The number of bits in a byte |
124 const unsigned X86_CHAR_BIT = 8; | 124 const unsigned X86_CHAR_BIT = 8; |
125 | 125 |
126 // Return a string representation of the type that is suitable for use | 126 // Return a string representation of the type that is suitable for use |
127 // in an identifier. | 127 // in an identifier. |
128 IceString typeIdentString(const Type Ty) { | 128 IceString typeIdentString(const Type Ty) { |
129 IceString Str; | 129 IceString Str; |
130 llvm::raw_string_ostream BaseOS(Str); | 130 llvm::raw_string_ostream BaseOS(Str); |
131 Ostream OS(&BaseOS); | |
132 if (isVectorType(Ty)) { | 131 if (isVectorType(Ty)) { |
133 OS << "v" << typeNumElements(Ty) << typeElementType(Ty); | 132 BaseOS << "v" << typeNumElements(Ty) << typeElementType(Ty); |
134 } else { | 133 } else { |
135 OS << Ty; | 134 BaseOS << Ty; |
136 } | 135 } |
137 return BaseOS.str(); | 136 return BaseOS.str(); |
138 } | 137 } |
139 | 138 |
140 // In some cases, there are x-macros tables for both high-level and | 139 // In some cases, there are x-macros tables for both high-level and |
141 // low-level instructions/operands that use the same enum key value. | 140 // low-level instructions/operands that use the same enum key value. |
142 // The tables are kept separate to maintain a proper separation | 141 // The tables are kept separate to maintain a proper separation |
143 // between abstraction layers. There is a risk that the tables | 142 // between abstraction layers. There is a risk that the tables |
144 // could get out of sync if enum values are reordered or if entries | 143 // could get out of sync if enum values are reordered or if entries |
145 // are added or deleted. This dummy function uses static_assert to | 144 // are added or deleted. This dummy function uses static_assert to |
(...skipping 3864 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4010 for (SizeT i = 0; i < Size; ++i) { | 4009 for (SizeT i = 0; i < Size; ++i) { |
4011 Str << "\t.byte\t" << (((unsigned)Data[i]) & 0xff) << "\n"; | 4010 Str << "\t.byte\t" << (((unsigned)Data[i]) & 0xff) << "\n"; |
4012 } | 4011 } |
4013 Str << "\t.size\t" << MangledName << ", " << Size << "\n"; | 4012 Str << "\t.size\t" << MangledName << ", " << Size << "\n"; |
4014 } | 4013 } |
4015 Str << "\t" << (IsInternal ? ".local" : ".global") << "\t" << MangledName | 4014 Str << "\t" << (IsInternal ? ".local" : ".global") << "\t" << MangledName |
4016 << "\n"; | 4015 << "\n"; |
4017 } | 4016 } |
4018 | 4017 |
4019 } // end of namespace Ice | 4018 } // end of namespace Ice |
OLD | NEW |