OLD | NEW |
1 //===- subzero/src/IceInstARM32.cpp - ARM32 instruction implementation ----===// | 1 //===- subzero/src/IceInstARM32.cpp - ARM32 instruction implementation ----===// |
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 1099 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1110 PrintComma = true; | 1110 PrintComma = true; |
1111 } | 1111 } |
1112 } | 1112 } |
1113 Str << "}"; | 1113 Str << "}"; |
1114 NeedNewline = true; | 1114 NeedNewline = true; |
1115 } | 1115 } |
1116 | 1116 |
1117 for (const Operand *Op : Dests) { | 1117 for (const Operand *Op : Dests) { |
1118 if (isScalarIntegerType(Op->getType())) | 1118 if (isScalarIntegerType(Op->getType())) |
1119 continue; | 1119 continue; |
1120 startNextInst(Func); | |
1121 if (NeedNewline) { | 1120 if (NeedNewline) { |
1122 Str << "\n"; | 1121 Str << "\n"; |
| 1122 startNextInst(Func); |
1123 NeedNewline = false; | 1123 NeedNewline = false; |
1124 } | 1124 } |
1125 Str << "\t" | 1125 Str << "\t" |
1126 << "vpop" | 1126 << "vpop" |
1127 << "\t{"; | 1127 << "\t{"; |
1128 Op->emit(Func); | 1128 Op->emit(Func); |
1129 Str << "}"; | 1129 Str << "}"; |
1130 NeedNewline = true; | 1130 NeedNewline = true; |
1131 } | 1131 } |
1132 assert(NeedNewline); // caller will add the newline | 1132 assert(NeedNewline); // caller will add the newline |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1220 if (isScalarIntegerType(getSrc(i)->getType())) { | 1220 if (isScalarIntegerType(getSrc(i)->getType())) { |
1221 ++IntegerCount; | 1221 ++IntegerCount; |
1222 } | 1222 } |
1223 } | 1223 } |
1224 Ostream &Str = Func->getContext()->getStrEmit(); | 1224 Ostream &Str = Func->getContext()->getStrEmit(); |
1225 bool NeedNewline = false; | 1225 bool NeedNewline = false; |
1226 for (SizeT i = getSrcSize(); i > 0; --i) { | 1226 for (SizeT i = getSrcSize(); i > 0; --i) { |
1227 Operand *Op = getSrc(i - 1); | 1227 Operand *Op = getSrc(i - 1); |
1228 if (isScalarIntegerType(Op->getType())) | 1228 if (isScalarIntegerType(Op->getType())) |
1229 continue; | 1229 continue; |
| 1230 if (NeedNewline) { |
| 1231 Str << "\n"; |
| 1232 startNextInst(Func); |
| 1233 NeedNewline = false; |
| 1234 } |
1230 Str << "\t" | 1235 Str << "\t" |
1231 << "vpush" | 1236 << "vpush" |
1232 << "\t{"; | 1237 << "\t{"; |
1233 Op->emit(Func); | 1238 Op->emit(Func); |
1234 Str << "}"; | 1239 Str << "}"; |
1235 NeedNewline = true; | 1240 NeedNewline = true; |
1236 } | 1241 } |
1237 if (IntegerCount != 0) { | 1242 if (IntegerCount != 0) { |
1238 startNextInst(Func); | |
1239 if (NeedNewline) { | 1243 if (NeedNewline) { |
1240 Str << "\n"; | 1244 Str << "\n"; |
| 1245 startNextInst(Func); |
1241 NeedNewline = false; | 1246 NeedNewline = false; |
1242 } | 1247 } |
1243 Str << "\t" | 1248 Str << "\t" |
1244 << "push" | 1249 << "push" |
1245 << "\t{"; | 1250 << "\t{"; |
1246 bool PrintComma = false; | 1251 bool PrintComma = false; |
1247 for (SizeT i = 0; i < getSrcSize(); ++i) { | 1252 for (SizeT i = 0; i < getSrcSize(); ++i) { |
1248 Operand *Op = getSrc(i); | 1253 Operand *Op = getSrc(i); |
1249 if (isScalarIntegerType(Op->getType())) { | 1254 if (isScalarIntegerType(Op->getType())) { |
1250 if (PrintComma) | 1255 if (PrintComma) |
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1762 template class InstARM32UnaryopGPR<InstARM32::Uxt, true>; | 1767 template class InstARM32UnaryopGPR<InstARM32::Uxt, true>; |
1763 template class InstARM32UnaryopFP<InstARM32::Vsqrt>; | 1768 template class InstARM32UnaryopFP<InstARM32::Vsqrt>; |
1764 | 1769 |
1765 template class InstARM32FourAddrGPR<InstARM32::Mla>; | 1770 template class InstARM32FourAddrGPR<InstARM32::Mla>; |
1766 template class InstARM32FourAddrGPR<InstARM32::Mls>; | 1771 template class InstARM32FourAddrGPR<InstARM32::Mls>; |
1767 | 1772 |
1768 template class InstARM32CmpLike<InstARM32::Cmp>; | 1773 template class InstARM32CmpLike<InstARM32::Cmp>; |
1769 template class InstARM32CmpLike<InstARM32::Tst>; | 1774 template class InstARM32CmpLike<InstARM32::Tst>; |
1770 | 1775 |
1771 } // end of namespace Ice | 1776 } // end of namespace Ice |
OLD | NEW |