Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(167)

Side by Side Diff: src/a64/macro-assembler-a64-inl.h

Issue 169893002: A64: Let the MacroAssembler resolve branches to distant targets. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed Ulan's comments. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698