OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 const Register& rn, | 339 const Register& rn, |
340 const Register& rm) { | 340 const Register& rm) { |
341 ASSERT(allow_macro_instructions_); | 341 ASSERT(allow_macro_instructions_); |
342 ASSERT(!rd.IsZero()); | 342 ASSERT(!rd.IsZero()); |
343 asrv(rd, rn, rm); | 343 asrv(rd, rn, rm); |
344 } | 344 } |
345 | 345 |
346 | 346 |
347 void MacroAssembler::B(Label* label) { | 347 void MacroAssembler::B(Label* label) { |
348 b(label); | 348 b(label); |
| 349 CheckVeneers(false); |
349 } | 350 } |
350 | 351 |
351 | 352 |
352 void MacroAssembler::B(Condition cond, Label* label) { | 353 void MacroAssembler::B(Condition cond, Label* label) { |
353 ASSERT(allow_macro_instructions_); | 354 ASSERT(allow_macro_instructions_); |
354 B(label, cond); | 355 B(label, cond); |
355 } | 356 } |
356 | 357 |
357 | 358 |
358 void MacroAssembler::B(Label* label, Condition cond) { | |
359 ASSERT(allow_macro_instructions_); | |
360 ASSERT((cond != al) && (cond != nv)); | |
361 b(label, cond); | |
362 } | |
363 | |
364 | |
365 void MacroAssembler::Bfi(const Register& rd, | 359 void MacroAssembler::Bfi(const Register& rd, |
366 const Register& rn, | 360 const Register& rn, |
367 unsigned lsb, | 361 unsigned lsb, |
368 unsigned width) { | 362 unsigned width) { |
369 ASSERT(allow_macro_instructions_); | 363 ASSERT(allow_macro_instructions_); |
370 ASSERT(!rd.IsZero()); | 364 ASSERT(!rd.IsZero()); |
371 bfi(rd, rn, lsb, width); | 365 bfi(rd, rn, lsb, width); |
372 } | 366 } |
373 | 367 |
374 | 368 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 br(xn); | 401 br(xn); |
408 } | 402 } |
409 | 403 |
410 | 404 |
411 void MacroAssembler::Brk(int code) { | 405 void MacroAssembler::Brk(int code) { |
412 ASSERT(allow_macro_instructions_); | 406 ASSERT(allow_macro_instructions_); |
413 brk(code); | 407 brk(code); |
414 } | 408 } |
415 | 409 |
416 | 410 |
417 void MacroAssembler::Cbnz(const Register& rt, Label* label) { | |
418 ASSERT(allow_macro_instructions_); | |
419 cbnz(rt, label); | |
420 } | |
421 | |
422 | |
423 void MacroAssembler::Cbz(const Register& rt, Label* label) { | |
424 ASSERT(allow_macro_instructions_); | |
425 cbz(rt, label); | |
426 } | |
427 | |
428 | |
429 void MacroAssembler::Cinc(const Register& rd, | 411 void MacroAssembler::Cinc(const Register& rd, |
430 const Register& rn, | 412 const Register& rn, |
431 Condition cond) { | 413 Condition cond) { |
432 ASSERT(allow_macro_instructions_); | 414 ASSERT(allow_macro_instructions_); |
433 ASSERT(!rd.IsZero()); | 415 ASSERT(!rd.IsZero()); |
434 ASSERT((cond != al) && (cond != nv)); | 416 ASSERT((cond != al) && (cond != nv)); |
435 cinc(rd, rn, cond); | 417 cinc(rd, rn, cond); |
436 } | 418 } |
437 | 419 |
438 | 420 |
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1025 ASSERT(allow_macro_instructions_); | 1007 ASSERT(allow_macro_instructions_); |
1026 ASSERT(!rd.IsZero()); | 1008 ASSERT(!rd.IsZero()); |
1027 rbit(rd, rn); | 1009 rbit(rd, rn); |
1028 } | 1010 } |
1029 | 1011 |
1030 | 1012 |
1031 void MacroAssembler::Ret(const Register& xn) { | 1013 void MacroAssembler::Ret(const Register& xn) { |
1032 ASSERT(allow_macro_instructions_); | 1014 ASSERT(allow_macro_instructions_); |
1033 ASSERT(!xn.IsZero()); | 1015 ASSERT(!xn.IsZero()); |
1034 ret(xn); | 1016 ret(xn); |
| 1017 CheckVeneers(false); |
1035 } | 1018 } |
1036 | 1019 |
1037 | 1020 |
1038 void MacroAssembler::Rev(const Register& rd, const Register& rn) { | 1021 void MacroAssembler::Rev(const Register& rd, const Register& rn) { |
1039 ASSERT(allow_macro_instructions_); | 1022 ASSERT(allow_macro_instructions_); |
1040 ASSERT(!rd.IsZero()); | 1023 ASSERT(!rd.IsZero()); |
1041 rev(rd, rn); | 1024 rev(rd, rn); |
1042 } | 1025 } |
1043 | 1026 |
1044 | 1027 |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1179 } | 1162 } |
1180 | 1163 |
1181 | 1164 |
1182 void MacroAssembler::Sxtw(const Register& rd, const Register& rn) { | 1165 void MacroAssembler::Sxtw(const Register& rd, const Register& rn) { |
1183 ASSERT(allow_macro_instructions_); | 1166 ASSERT(allow_macro_instructions_); |
1184 ASSERT(!rd.IsZero()); | 1167 ASSERT(!rd.IsZero()); |
1185 sxtw(rd, rn); | 1168 sxtw(rd, rn); |
1186 } | 1169 } |
1187 | 1170 |
1188 | 1171 |
1189 void MacroAssembler::Tbnz(const Register& rt, unsigned bit_pos, Label* label) { | |
1190 ASSERT(allow_macro_instructions_); | |
1191 tbnz(rt, bit_pos, label); | |
1192 } | |
1193 | |
1194 | |
1195 void MacroAssembler::Tbz(const Register& rt, unsigned bit_pos, Label* label) { | |
1196 ASSERT(allow_macro_instructions_); | |
1197 tbz(rt, bit_pos, label); | |
1198 } | |
1199 | |
1200 | |
1201 void MacroAssembler::Ubfiz(const Register& rd, | 1172 void MacroAssembler::Ubfiz(const Register& rd, |
1202 const Register& rn, | 1173 const Register& rn, |
1203 unsigned lsb, | 1174 unsigned lsb, |
1204 unsigned width) { | 1175 unsigned width) { |
1205 ASSERT(allow_macro_instructions_); | 1176 ASSERT(allow_macro_instructions_); |
1206 ASSERT(!rd.IsZero()); | 1177 ASSERT(!rd.IsZero()); |
1207 ubfiz(rd, rn, lsb, width); | 1178 ubfiz(rd, rn, lsb, width); |
1208 } | 1179 } |
1209 | 1180 |
1210 | 1181 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1248 void MacroAssembler::Umsubl(const Register& rd, | 1219 void MacroAssembler::Umsubl(const Register& rd, |
1249 const Register& rn, | 1220 const Register& rn, |
1250 const Register& rm, | 1221 const Register& rm, |
1251 const Register& ra) { | 1222 const Register& ra) { |
1252 ASSERT(allow_macro_instructions_); | 1223 ASSERT(allow_macro_instructions_); |
1253 ASSERT(!rd.IsZero()); | 1224 ASSERT(!rd.IsZero()); |
1254 umsubl(rd, rn, rm, ra); | 1225 umsubl(rd, rn, rm, ra); |
1255 } | 1226 } |
1256 | 1227 |
1257 | 1228 |
1258 void MacroAssembler::Unreachable() { | |
1259 ASSERT(allow_macro_instructions_); | |
1260 hlt(kImmExceptionIsUnreachable); | |
1261 } | |
1262 | |
1263 | |
1264 void MacroAssembler::Uxtb(const Register& rd, const Register& rn) { | 1229 void MacroAssembler::Uxtb(const Register& rd, const Register& rn) { |
1265 ASSERT(allow_macro_instructions_); | 1230 ASSERT(allow_macro_instructions_); |
1266 ASSERT(!rd.IsZero()); | 1231 ASSERT(!rd.IsZero()); |
1267 uxtb(rd, rn); | 1232 uxtb(rd, rn); |
1268 } | 1233 } |
1269 | 1234 |
1270 | 1235 |
1271 void MacroAssembler::Uxth(const Register& rd, const Register& rn) { | 1236 void MacroAssembler::Uxth(const Register& rd, const Register& rn) { |
1272 ASSERT(allow_macro_instructions_); | 1237 ASSERT(allow_macro_instructions_); |
1273 ASSERT(!rd.IsZero()); | 1238 ASSERT(!rd.IsZero()); |
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1673 // characters are reserved for controlling features of the instrumentation. | 1638 // characters are reserved for controlling features of the instrumentation. |
1674 ASSERT(isprint(marker_name[0]) && isprint(marker_name[1])); | 1639 ASSERT(isprint(marker_name[0]) && isprint(marker_name[1])); |
1675 | 1640 |
1676 InstructionAccurateScope scope(this, 1); | 1641 InstructionAccurateScope scope(this, 1); |
1677 movn(xzr, (marker_name[1] << 8) | marker_name[0]); | 1642 movn(xzr, (marker_name[1] << 8) | marker_name[0]); |
1678 } | 1643 } |
1679 | 1644 |
1680 } } // namespace v8::internal | 1645 } } // namespace v8::internal |
1681 | 1646 |
1682 #endif // V8_A64_MACRO_ASSEMBLER_A64_INL_H_ | 1647 #endif // V8_A64_MACRO_ASSEMBLER_A64_INL_H_ |
OLD | NEW |