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

Side by Side Diff: src/mips64/macro-assembler-mips64.h

Issue 1784353003: MIPS64: Use BOVC/BNVC for overflow checking on r6. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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
« no previous file with comments | « src/mips64/assembler-mips64.cc ('k') | src/mips64/macro-assembler-mips64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 5 #ifndef V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 6 #define V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
7 7
8 #include "src/assembler.h" 8 #include "src/assembler.h"
9 #include "src/globals.h" 9 #include "src/globals.h"
10 #include "src/mips64/assembler-mips64.h" 10 #include "src/mips64/assembler-mips64.h"
(...skipping 1280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1291 // untagged value afterwards. 1291 // untagged value afterwards.
1292 void SmiToDoubleFPURegister(Register smi, 1292 void SmiToDoubleFPURegister(Register smi,
1293 FPURegister value, 1293 FPURegister value,
1294 Register scratch1); 1294 Register scratch1);
1295 1295
1296 // ------------------------------------------------------------------------- 1296 // -------------------------------------------------------------------------
1297 // Overflow handling functions. 1297 // Overflow handling functions.
1298 // Usage: first call the appropriate arithmetic function, then call one of the 1298 // Usage: first call the appropriate arithmetic function, then call one of the
1299 // jump functions with the overflow_dst register as the second parameter. 1299 // jump functions with the overflow_dst register as the second parameter.
1300 1300
1301 void AdduAndCheckForOverflow(Register dst, 1301 inline void AddBranchOvf(Register dst, Register left, const Operand& right,
1302 Register left, 1302 Label* overflow_label, Register scratch = at) {
1303 Register right, 1303 AddBranchOvf(dst, left, right, overflow_label, nullptr, scratch);
1304 Register overflow_dst, 1304 }
1305 Register scratch = at);
1306 1305
1307 void AdduAndCheckForOverflow(Register dst, Register left, 1306 inline void AddBranchNoOvf(Register dst, Register left, const Operand& right,
1308 const Operand& right, Register overflow_dst, 1307 Label* no_overflow_label, Register scratch = at) {
1309 Register scratch); 1308 AddBranchOvf(dst, left, right, nullptr, no_overflow_label, scratch);
1309 }
1310 1310
1311 void SubuAndCheckForOverflow(Register dst, 1311 void AddBranchOvf(Register dst, Register left, const Operand& right,
1312 Register left, 1312 Label* overflow_label, Label* no_overflow_label,
1313 Register right, 1313 Register scratch = at);
1314 Register overflow_dst,
1315 Register scratch = at);
1316 1314
1317 void SubuAndCheckForOverflow(Register dst, Register left, 1315 void AddBranchOvf(Register dst, Register left, Register right,
1318 const Operand& right, Register overflow_dst, 1316 Label* overflow_label, Label* no_overflow_label,
1319 Register scratch); 1317 Register scratch = at);
1320 1318
1321 void DadduAndCheckForOverflow(Register dst, Register left, Register right, 1319 inline void SubBranchOvf(Register dst, Register left, const Operand& right,
1322 Register overflow_dst, Register scratch = at); 1320 Label* overflow_label, Register scratch = at) {
1321 SubBranchOvf(dst, left, right, overflow_label, nullptr, scratch);
1322 }
1323 1323
1324 void DadduAndCheckForOverflow(Register dst, Register left, 1324 inline void SubBranchNoOvf(Register dst, Register left, const Operand& right,
1325 const Operand& right, Register overflow_dst, 1325 Label* no_overflow_label, Register scratch = at) {
1326 Register scratch); 1326 SubBranchOvf(dst, left, right, nullptr, no_overflow_label, scratch);
1327 }
1328
1329 void SubBranchOvf(Register dst, Register left, const Operand& right,
1330 Label* overflow_label, Label* no_overflow_label,
1331 Register scratch = at);
1332
1333 void SubBranchOvf(Register dst, Register left, Register right,
1334 Label* overflow_label, Label* no_overflow_label,
1335 Register scratch = at);
1327 1336
1328 inline void DaddBranchOvf(Register dst, Register left, const Operand& right, 1337 inline void DaddBranchOvf(Register dst, Register left, const Operand& right,
1329 Label* overflow_label, Register scratch = at) { 1338 Label* overflow_label, Register scratch = at) {
1330 DaddBranchOvf(dst, left, right, overflow_label, nullptr, scratch); 1339 DaddBranchOvf(dst, left, right, overflow_label, nullptr, scratch);
1331 } 1340 }
1332 1341
1333 inline void DaddBranchNoOvf(Register dst, Register left, const Operand& right, 1342 inline void DaddBranchNoOvf(Register dst, Register left, const Operand& right,
1334 Label* no_overflow_label, Register scratch = at) { 1343 Label* no_overflow_label, Register scratch = at) {
1335 DaddBranchOvf(dst, left, right, nullptr, no_overflow_label, scratch); 1344 DaddBranchOvf(dst, left, right, nullptr, no_overflow_label, scratch);
1336 } 1345 }
1337 1346
1338 void DaddBranchOvf(Register dst, Register left, const Operand& right, 1347 void DaddBranchOvf(Register dst, Register left, const Operand& right,
1339 Label* overflow_label, Label* no_overflow_label, 1348 Label* overflow_label, Label* no_overflow_label,
1340 Register scratch = at); 1349 Register scratch = at);
1341 1350
1342 void DaddBranchOvf(Register dst, Register left, Register right, 1351 void DaddBranchOvf(Register dst, Register left, Register right,
1343 Label* overflow_label, Label* no_overflow_label, 1352 Label* overflow_label, Label* no_overflow_label,
1344 Register scratch = at); 1353 Register scratch = at);
1345 1354
1346 void DsubuAndCheckForOverflow(Register dst, Register left, Register right,
1347 Register overflow_dst, Register scratch = at);
1348
1349 void DsubuAndCheckForOverflow(Register dst, Register left,
1350 const Operand& right, Register overflow_dst,
1351 Register scratch);
1352
1353 inline void DsubBranchOvf(Register dst, Register left, const Operand& right, 1355 inline void DsubBranchOvf(Register dst, Register left, const Operand& right,
1354 Label* overflow_label, Register scratch = at) { 1356 Label* overflow_label, Register scratch = at) {
1355 DsubBranchOvf(dst, left, right, overflow_label, nullptr, scratch); 1357 DsubBranchOvf(dst, left, right, overflow_label, nullptr, scratch);
1356 } 1358 }
1357 1359
1358 inline void DsubBranchNoOvf(Register dst, Register left, const Operand& right, 1360 inline void DsubBranchNoOvf(Register dst, Register left, const Operand& right,
1359 Label* no_overflow_label, Register scratch = at) { 1361 Label* no_overflow_label, Register scratch = at) {
1360 DsubBranchOvf(dst, left, right, nullptr, no_overflow_label, scratch); 1362 DsubBranchOvf(dst, left, right, nullptr, no_overflow_label, scratch);
1361 } 1363 }
1362 1364
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 1986 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
1985 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 1987 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
1986 #else 1988 #else
1987 #define ACCESS_MASM(masm) masm-> 1989 #define ACCESS_MASM(masm) masm->
1988 #endif 1990 #endif
1989 1991
1990 } // namespace internal 1992 } // namespace internal
1991 } // namespace v8 1993 } // namespace v8
1992 1994
1993 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_ 1995 #endif // V8_MIPS_MACRO_ASSEMBLER_MIPS_H_
OLDNEW
« no previous file with comments | « src/mips64/assembler-mips64.cc ('k') | src/mips64/macro-assembler-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698