| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 #include "src/compiler/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
| 6 | 6 |
| 7 #include "src/compilation-info.h" | 7 #include "src/compilation-info.h" |
| 8 #include "src/compiler/code-generator-impl.h" | 8 #include "src/compiler/code-generator-impl.h" |
| 9 #include "src/compiler/gap-resolver.h" | 9 #include "src/compiler/gap-resolver.h" |
| 10 #include "src/compiler/node-matchers.h" | 10 #include "src/compiler/node-matchers.h" |
| (...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 template <class _RR, class _RM, class _RI> | 482 template <class _RR, class _RM, class _RI> |
| 483 static inline int AssembleBinOp(Instruction* instr, _RR _rr, _RM _rm, _RI _ri) { | 483 static inline int AssembleBinOp(Instruction* instr, _RR _rr, _RM _rm, _RI _ri) { |
| 484 return AssembleOp<2>(instr, _rr, _rm, _ri); | 484 return AssembleOp<2>(instr, _rr, _rm, _ri); |
| 485 } | 485 } |
| 486 | 486 |
| 487 template <class _R, class _M, class _I> | 487 template <class _R, class _M, class _I> |
| 488 static inline int AssembleUnaryOp(Instruction* instr, _R _r, _M _m, _I _i) { | 488 static inline int AssembleUnaryOp(Instruction* instr, _R _r, _M _m, _I _i) { |
| 489 return AssembleOp<1>(instr, _r, _m, _i); | 489 return AssembleOp<1>(instr, _r, _m, _i); |
| 490 } | 490 } |
| 491 | 491 |
| 492 #define ASSEMBLE_BIN_OP(_rr, _rm, _ri) AssembleBinOp(instr, _rr, _rm, _ri) |
| 493 #define ASSEMBLE_UNARY_OP(_r, _m, _i) AssembleUnaryOp(instr, _r, _m, _i) |
| 494 |
| 495 #ifdef V8_TARGET_ARCH_S390X |
| 492 #define CHECK_AND_ZERO_EXT_OUTPUT(num) \ | 496 #define CHECK_AND_ZERO_EXT_OUTPUT(num) \ |
| 493 ([&](int index) { \ | 497 ([&](int index) { \ |
| 494 DCHECK(HasImmediateInput(instr, (index))); \ | 498 DCHECK(HasImmediateInput(instr, (index))); \ |
| 495 int doZeroExt = i.InputInt32(index); \ | 499 int doZeroExt = i.InputInt32(index); \ |
| 496 if (doZeroExt) __ LoadlW(i.OutputRegister(), i.OutputRegister()); \ | 500 if (doZeroExt) __ LoadlW(i.OutputRegister(), i.OutputRegister()); \ |
| 497 })(num) | 501 })(num) |
| 498 | 502 |
| 499 #define ASSEMBLE_BIN_OP(_rr, _rm, _ri) AssembleBinOp(instr, _rr, _rm, _ri) | |
| 500 #define ASSEMBLE_UNARY_OP(_r, _m, _i) AssembleUnaryOp(instr, _r, _m, _i) | |
| 501 | |
| 502 #define ASSEMBLE_BIN32_OP(_rr, _rm, _ri) \ | 503 #define ASSEMBLE_BIN32_OP(_rr, _rm, _ri) \ |
| 503 { CHECK_AND_ZERO_EXT_OUTPUT(AssembleBinOp(instr, _rr, _rm, _ri)); } | 504 { CHECK_AND_ZERO_EXT_OUTPUT(AssembleBinOp(instr, _rr, _rm, _ri)); } |
| 505 #else |
| 506 #define ASSEMBLE_BIN32_OP ASSEMBLE_BIN_OP |
| 507 #define CHECK_AND_ZERO_EXT_OUTPUT(num) |
| 508 #endif |
| 504 | 509 |
| 505 } // namespace | 510 } // namespace |
| 506 | 511 |
| 507 #define ASSEMBLE_FLOAT_UNOP(asm_instr) \ | 512 #define ASSEMBLE_FLOAT_UNOP(asm_instr) \ |
| 508 do { \ | 513 do { \ |
| 509 __ asm_instr(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); \ | 514 __ asm_instr(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); \ |
| 510 } while (0) | 515 } while (0) |
| 511 | 516 |
| 512 #define ASSEMBLE_FLOAT_BINOP(asm_instr) \ | 517 #define ASSEMBLE_FLOAT_BINOP(asm_instr) \ |
| 513 do { \ | 518 do { \ |
| (...skipping 822 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1336 break; | 1341 break; |
| 1337 } | 1342 } |
| 1338 case kArchStackSlot: { | 1343 case kArchStackSlot: { |
| 1339 FrameOffset offset = | 1344 FrameOffset offset = |
| 1340 frame_access_state()->GetFrameOffset(i.InputInt32(0)); | 1345 frame_access_state()->GetFrameOffset(i.InputInt32(0)); |
| 1341 __ AddP(i.OutputRegister(), offset.from_stack_pointer() ? sp : fp, | 1346 __ AddP(i.OutputRegister(), offset.from_stack_pointer() ? sp : fp, |
| 1342 Operand(offset.offset())); | 1347 Operand(offset.offset())); |
| 1343 break; | 1348 break; |
| 1344 } | 1349 } |
| 1345 case kS390_And32: | 1350 case kS390_And32: |
| 1351 // zero-ext |
| 1346 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1352 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1347 ASSEMBLE_BIN32_OP(RRRInstr(nrk), RM32Instr(And), RIInstr(nilf)); | 1353 ASSEMBLE_BIN32_OP(RRRInstr(nrk), RM32Instr(And), RIInstr(nilf)); |
| 1348 } else { | 1354 } else { |
| 1349 ASSEMBLE_BIN32_OP(RRInstr(nr), RM32Instr(And), RIInstr(nilf)); | 1355 ASSEMBLE_BIN32_OP(RRInstr(nr), RM32Instr(And), RIInstr(nilf)); |
| 1350 } | 1356 } |
| 1351 break; | 1357 break; |
| 1352 case kS390_And64: | 1358 case kS390_And64: |
| 1353 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1359 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1354 ASSEMBLE_BIN_OP(RRRInstr(ngrk), RM64Instr(ng), nullInstr); | 1360 ASSEMBLE_BIN_OP(RRRInstr(ngrk), RM64Instr(ng), nullInstr); |
| 1355 } else { | 1361 } else { |
| 1356 ASSEMBLE_BIN_OP(RRInstr(ngr), RM64Instr(ng), nullInstr); | 1362 ASSEMBLE_BIN_OP(RRInstr(ngr), RM64Instr(ng), nullInstr); |
| 1357 } | 1363 } |
| 1358 break; | 1364 break; |
| 1359 case kS390_Or32: | 1365 case kS390_Or32: |
| 1366 // zero-ext |
| 1360 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1367 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1361 ASSEMBLE_BIN32_OP(RRRInstr(ork), RM32Instr(Or), RIInstr(oilf)); | 1368 ASSEMBLE_BIN32_OP(RRRInstr(ork), RM32Instr(Or), RIInstr(oilf)); |
| 1362 } else { | 1369 } else { |
| 1363 ASSEMBLE_BIN32_OP(RRInstr(or_z), RM32Instr(Or), RIInstr(oilf)); | 1370 ASSEMBLE_BIN32_OP(RRInstr(or_z), RM32Instr(Or), RIInstr(oilf)); |
| 1364 } | 1371 } |
| 1365 break; | 1372 break; |
| 1366 case kS390_Or64: | 1373 case kS390_Or64: |
| 1367 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1374 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1368 ASSEMBLE_BIN_OP(RRRInstr(ogrk), RM64Instr(og), nullInstr); | 1375 ASSEMBLE_BIN_OP(RRRInstr(ogrk), RM64Instr(og), nullInstr); |
| 1369 } else { | 1376 } else { |
| 1370 ASSEMBLE_BIN_OP(RRInstr(ogr), RM64Instr(og), nullInstr); | 1377 ASSEMBLE_BIN_OP(RRInstr(ogr), RM64Instr(og), nullInstr); |
| 1371 } | 1378 } |
| 1372 break; | 1379 break; |
| 1373 case kS390_Xor32: | 1380 case kS390_Xor32: |
| 1381 // zero-ext |
| 1374 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1382 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1375 ASSEMBLE_BIN32_OP(RRRInstr(xrk), RM32Instr(Xor), RIInstr(xilf)); | 1383 ASSEMBLE_BIN32_OP(RRRInstr(xrk), RM32Instr(Xor), RIInstr(xilf)); |
| 1376 } else { | 1384 } else { |
| 1377 ASSEMBLE_BIN32_OP(RRInstr(xr), RM32Instr(Xor), RIInstr(xilf)); | 1385 ASSEMBLE_BIN32_OP(RRInstr(xr), RM32Instr(Xor), RIInstr(xilf)); |
| 1378 } | 1386 } |
| 1379 break; | 1387 break; |
| 1380 case kS390_Xor64: | 1388 case kS390_Xor64: |
| 1381 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1389 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1382 ASSEMBLE_BIN_OP(RRRInstr(xgrk), RM64Instr(xg), nullInstr); | 1390 ASSEMBLE_BIN_OP(RRRInstr(xgrk), RM64Instr(xg), nullInstr); |
| 1383 } else { | 1391 } else { |
| 1384 ASSEMBLE_BIN_OP(RRInstr(xgr), RM64Instr(xg), nullInstr); | 1392 ASSEMBLE_BIN_OP(RRInstr(xgr), RM64Instr(xg), nullInstr); |
| 1385 } | 1393 } |
| 1386 break; | 1394 break; |
| 1387 case kS390_ShiftLeft32: | 1395 case kS390_ShiftLeft32: |
| 1396 // zero-ext |
| 1388 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1397 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1389 ASSEMBLE_BIN32_OP(RRRInstr(ShiftLeft), nullInstr, RRIInstr(ShiftLeft)); | 1398 ASSEMBLE_BIN32_OP(RRRInstr(ShiftLeft), nullInstr, RRIInstr(ShiftLeft)); |
| 1390 } else { | 1399 } else { |
| 1391 ASSEMBLE_BIN32_OP(RRInstr(sll), nullInstr, RIInstr(sll)); | 1400 ASSEMBLE_BIN32_OP(RRInstr(sll), nullInstr, RIInstr(sll)); |
| 1392 } | 1401 } |
| 1393 break; | 1402 break; |
| 1394 case kS390_ShiftLeft64: | 1403 case kS390_ShiftLeft64: |
| 1395 ASSEMBLE_BIN_OP(RRRInstr(sllg), nullInstr, RRIInstr(sllg)); | 1404 ASSEMBLE_BIN_OP(RRRInstr(sllg), nullInstr, RRIInstr(sllg)); |
| 1396 break; | 1405 break; |
| 1397 case kS390_ShiftRight32: | 1406 case kS390_ShiftRight32: |
| 1407 // zero-ext |
| 1398 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1408 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1399 ASSEMBLE_BIN32_OP(RRRInstr(srlk), nullInstr, RRIInstr(srlk)); | 1409 ASSEMBLE_BIN32_OP(RRRInstr(srlk), nullInstr, RRIInstr(srlk)); |
| 1400 } else { | 1410 } else { |
| 1401 ASSEMBLE_BIN32_OP(RRInstr(srl), nullInstr, RIInstr(srl)); | 1411 ASSEMBLE_BIN32_OP(RRInstr(srl), nullInstr, RIInstr(srl)); |
| 1402 } | 1412 } |
| 1403 break; | 1413 break; |
| 1404 case kS390_ShiftRight64: | 1414 case kS390_ShiftRight64: |
| 1405 ASSEMBLE_BIN_OP(RRRInstr(srlg), nullInstr, RRIInstr(srlg)); | 1415 ASSEMBLE_BIN_OP(RRRInstr(srlg), nullInstr, RRIInstr(srlg)); |
| 1406 break; | 1416 break; |
| 1407 case kS390_ShiftRightArith32: | 1417 case kS390_ShiftRightArith32: |
| 1418 // zero-ext |
| 1408 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1419 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1409 ASSEMBLE_BIN32_OP(RRRInstr(srak), nullInstr, RRIInstr(srak)); | 1420 ASSEMBLE_BIN32_OP(RRRInstr(srak), nullInstr, RRIInstr(srak)); |
| 1410 } else { | 1421 } else { |
| 1411 ASSEMBLE_BIN32_OP(RRInstr(sra), nullInstr, RIInstr(sra)); | 1422 ASSEMBLE_BIN32_OP(RRInstr(sra), nullInstr, RIInstr(sra)); |
| 1412 } | 1423 } |
| 1413 break; | 1424 break; |
| 1414 case kS390_ShiftRightArith64: | 1425 case kS390_ShiftRightArith64: |
| 1415 ASSEMBLE_BIN_OP(RRRInstr(srag), nullInstr, RRIInstr(srag)); | 1426 ASSEMBLE_BIN_OP(RRRInstr(srag), nullInstr, RRIInstr(srag)); |
| 1416 break; | 1427 break; |
| 1417 #if !V8_TARGET_ARCH_S390X | 1428 #if !V8_TARGET_ARCH_S390X |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1483 i.InputInt32(2)); | 1494 i.InputInt32(2)); |
| 1484 } else { | 1495 } else { |
| 1485 __ ShiftRightArithPair(i.OutputRegister(0), second_output, | 1496 __ ShiftRightArithPair(i.OutputRegister(0), second_output, |
| 1486 i.InputRegister(0), i.InputRegister(1), | 1497 i.InputRegister(0), i.InputRegister(1), |
| 1487 kScratchReg, i.InputRegister(2)); | 1498 kScratchReg, i.InputRegister(2)); |
| 1488 } | 1499 } |
| 1489 break; | 1500 break; |
| 1490 } | 1501 } |
| 1491 #endif | 1502 #endif |
| 1492 case kS390_RotRight32: { | 1503 case kS390_RotRight32: { |
| 1504 // zero-ext |
| 1493 if (HasRegisterInput(instr, 1)) { | 1505 if (HasRegisterInput(instr, 1)) { |
| 1494 __ LoadComplementRR(kScratchReg, i.InputRegister(1)); | 1506 __ LoadComplementRR(kScratchReg, i.InputRegister(1)); |
| 1495 __ rll(i.OutputRegister(), i.InputRegister(0), kScratchReg); | 1507 __ rll(i.OutputRegister(), i.InputRegister(0), kScratchReg); |
| 1496 } else { | 1508 } else { |
| 1497 __ rll(i.OutputRegister(), i.InputRegister(0), | 1509 __ rll(i.OutputRegister(), i.InputRegister(0), |
| 1498 Operand(32 - i.InputInt32(1))); | 1510 Operand(32 - i.InputInt32(1))); |
| 1499 } | 1511 } |
| 1500 CHECK_AND_ZERO_EXT_OUTPUT(2); | 1512 CHECK_AND_ZERO_EXT_OUTPUT(2); |
| 1501 break; | 1513 break; |
| 1502 } | 1514 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1552 Operand(endBit), Operand(shiftAmount), true); | 1564 Operand(endBit), Operand(shiftAmount), true); |
| 1553 } else { | 1565 } else { |
| 1554 int shiftAmount = i.InputInt32(1); | 1566 int shiftAmount = i.InputInt32(1); |
| 1555 int clearBit = i.InputInt32(2); | 1567 int clearBit = i.InputInt32(2); |
| 1556 __ rllg(i.OutputRegister(), i.InputRegister(0), Operand(shiftAmount)); | 1568 __ rllg(i.OutputRegister(), i.InputRegister(0), Operand(shiftAmount)); |
| 1557 __ srlg(i.OutputRegister(), i.OutputRegister(), Operand(clearBit)); | 1569 __ srlg(i.OutputRegister(), i.OutputRegister(), Operand(clearBit)); |
| 1558 __ sllg(i.OutputRegister(), i.OutputRegister(), Operand(clearBit)); | 1570 __ sllg(i.OutputRegister(), i.OutputRegister(), Operand(clearBit)); |
| 1559 } | 1571 } |
| 1560 break; | 1572 break; |
| 1561 case kS390_Add32: { | 1573 case kS390_Add32: { |
| 1574 // zero-ext |
| 1562 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1575 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1563 ASSEMBLE_BIN32_OP(RRRInstr(ark), RM32Instr(Add32), RRIInstr(Add32)); | 1576 ASSEMBLE_BIN32_OP(RRRInstr(ark), RM32Instr(Add32), RRIInstr(Add32)); |
| 1564 } else { | 1577 } else { |
| 1565 ASSEMBLE_BIN32_OP(RRInstr(ar), RM32Instr(Add32), RIInstr(Add32)); | 1578 ASSEMBLE_BIN32_OP(RRInstr(ar), RM32Instr(Add32), RIInstr(Add32)); |
| 1566 } | 1579 } |
| 1567 break; | 1580 break; |
| 1568 } | 1581 } |
| 1569 case kS390_Add64: | 1582 case kS390_Add64: |
| 1570 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1583 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1571 ASSEMBLE_BIN_OP(RRRInstr(agrk), RM64Instr(ag), RRIInstr(AddP)); | 1584 ASSEMBLE_BIN_OP(RRRInstr(agrk), RM64Instr(ag), RRIInstr(AddP)); |
| 1572 } else { | 1585 } else { |
| 1573 ASSEMBLE_BIN_OP(RRInstr(agr), RM64Instr(ag), RIInstr(agfi)); | 1586 ASSEMBLE_BIN_OP(RRInstr(agr), RM64Instr(ag), RIInstr(agfi)); |
| 1574 } | 1587 } |
| 1575 break; | 1588 break; |
| 1576 case kS390_AddFloat: | 1589 case kS390_AddFloat: |
| 1577 ASSEMBLE_BIN_OP(DDInstr(aebr), DMTInstr(AddFloat32), nullInstr); | 1590 ASSEMBLE_BIN_OP(DDInstr(aebr), DMTInstr(AddFloat32), nullInstr); |
| 1578 break; | 1591 break; |
| 1579 case kS390_AddDouble: | 1592 case kS390_AddDouble: |
| 1580 ASSEMBLE_BIN_OP(DDInstr(adbr), DMTInstr(AddFloat64), nullInstr); | 1593 ASSEMBLE_BIN_OP(DDInstr(adbr), DMTInstr(AddFloat64), nullInstr); |
| 1581 break; | 1594 break; |
| 1582 case kS390_Sub32: | 1595 case kS390_Sub32: |
| 1596 // zero-ext |
| 1583 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1597 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1584 ASSEMBLE_BIN32_OP(RRRInstr(srk), RM32Instr(Sub32), RRIInstr(Sub32)); | 1598 ASSEMBLE_BIN32_OP(RRRInstr(srk), RM32Instr(Sub32), RRIInstr(Sub32)); |
| 1585 } else { | 1599 } else { |
| 1586 ASSEMBLE_BIN32_OP(RRInstr(sr), RM32Instr(Sub32), RIInstr(Sub32)); | 1600 ASSEMBLE_BIN32_OP(RRInstr(sr), RM32Instr(Sub32), RIInstr(Sub32)); |
| 1587 } | 1601 } |
| 1588 break; | 1602 break; |
| 1589 case kS390_Sub64: | 1603 case kS390_Sub64: |
| 1590 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { | 1604 if (CpuFeatures::IsSupported(DISTINCT_OPS)) { |
| 1591 ASSEMBLE_BIN_OP(RRRInstr(sgrk), RM64Instr(sg), RRIInstr(SubP)); | 1605 ASSEMBLE_BIN_OP(RRRInstr(sgrk), RM64Instr(sg), RRIInstr(SubP)); |
| 1592 } else { | 1606 } else { |
| 1593 ASSEMBLE_BIN_OP(RRInstr(sgr), RM64Instr(sg), RIInstr(SubP)); | 1607 ASSEMBLE_BIN_OP(RRInstr(sgr), RM64Instr(sg), RIInstr(SubP)); |
| 1594 } | 1608 } |
| 1595 break; | 1609 break; |
| 1596 case kS390_SubFloat: | 1610 case kS390_SubFloat: |
| 1597 ASSEMBLE_BIN_OP(DDInstr(sebr), DMTInstr(SubFloat32), nullInstr); | 1611 ASSEMBLE_BIN_OP(DDInstr(sebr), DMTInstr(SubFloat32), nullInstr); |
| 1598 break; | 1612 break; |
| 1599 case kS390_SubDouble: | 1613 case kS390_SubDouble: |
| 1600 ASSEMBLE_BIN_OP(DDInstr(sdbr), DMTInstr(SubFloat64), nullInstr); | 1614 ASSEMBLE_BIN_OP(DDInstr(sdbr), DMTInstr(SubFloat64), nullInstr); |
| 1601 break; | 1615 break; |
| 1602 case kS390_Mul32: | 1616 case kS390_Mul32: |
| 1617 // zero-ext |
| 1603 ASSEMBLE_BIN32_OP(RRInstr(Mul32), RM32Instr(Mul32), RIInstr(Mul32)); | 1618 ASSEMBLE_BIN32_OP(RRInstr(Mul32), RM32Instr(Mul32), RIInstr(Mul32)); |
| 1604 break; | 1619 break; |
| 1605 case kS390_Mul32WithOverflow: | 1620 case kS390_Mul32WithOverflow: |
| 1621 // zero-ext |
| 1606 ASSEMBLE_BIN32_OP(RRRInstr(Mul32WithOverflowIfCCUnequal), | 1622 ASSEMBLE_BIN32_OP(RRRInstr(Mul32WithOverflowIfCCUnequal), |
| 1607 RRM32Instr(Mul32WithOverflowIfCCUnequal), | 1623 RRM32Instr(Mul32WithOverflowIfCCUnequal), |
| 1608 RRIInstr(Mul32WithOverflowIfCCUnequal)); | 1624 RRIInstr(Mul32WithOverflowIfCCUnequal)); |
| 1609 break; | 1625 break; |
| 1610 case kS390_Mul64: | 1626 case kS390_Mul64: |
| 1611 ASSEMBLE_BIN_OP(RRInstr(Mul64), RM64Instr(Mul64), RIInstr(Mul64)); | 1627 ASSEMBLE_BIN_OP(RRInstr(Mul64), RM64Instr(Mul64), RIInstr(Mul64)); |
| 1612 break; | 1628 break; |
| 1613 case kS390_MulHigh32: | 1629 case kS390_MulHigh32: |
| 1614 ASSEMBLE_BIN32_OP(RRRInstr(MulHigh32), RRM32Instr(MulHigh32), | 1630 // zero-ext |
| 1615 RRIInstr(MulHigh32)); | 1631 ASSEMBLE_BIN_OP(RRRInstr(MulHigh32), RRM32Instr(MulHigh32), |
| 1632 RRIInstr(MulHigh32)); |
| 1616 break; | 1633 break; |
| 1617 case kS390_MulHighU32: | 1634 case kS390_MulHighU32: |
| 1618 ASSEMBLE_BIN32_OP(RRRInstr(MulHighU32), RRM32Instr(MulHighU32), | 1635 // zero-ext |
| 1619 RRIInstr(MulHighU32)); | 1636 ASSEMBLE_BIN_OP(RRRInstr(MulHighU32), RRM32Instr(MulHighU32), |
| 1637 RRIInstr(MulHighU32)); |
| 1620 break; | 1638 break; |
| 1621 case kS390_MulFloat: | 1639 case kS390_MulFloat: |
| 1622 ASSEMBLE_BIN_OP(DDInstr(meebr), DMTInstr(MulFloat32), nullInstr); | 1640 ASSEMBLE_BIN_OP(DDInstr(meebr), DMTInstr(MulFloat32), nullInstr); |
| 1623 break; | 1641 break; |
| 1624 case kS390_MulDouble: | 1642 case kS390_MulDouble: |
| 1625 ASSEMBLE_BIN_OP(DDInstr(mdbr), DMTInstr(MulFloat64), nullInstr); | 1643 ASSEMBLE_BIN_OP(DDInstr(mdbr), DMTInstr(MulFloat64), nullInstr); |
| 1626 break; | 1644 break; |
| 1627 case kS390_Div64: | 1645 case kS390_Div64: |
| 1628 ASSEMBLE_BIN_OP(RRRInstr(Div64), RRM64Instr(Div64), nullInstr); | 1646 ASSEMBLE_BIN_OP(RRRInstr(Div64), RRM64Instr(Div64), nullInstr); |
| 1629 break; | 1647 break; |
| 1630 case kS390_Div32: { | 1648 case kS390_Div32: { |
| 1631 ASSEMBLE_BIN32_OP(RRRInstr(Div32), RRM32Instr(Div32), nullInstr); | 1649 // zero-ext |
| 1650 ASSEMBLE_BIN_OP(RRRInstr(Div32), RRM32Instr(Div32), nullInstr); |
| 1632 break; | 1651 break; |
| 1633 } | 1652 } |
| 1634 case kS390_DivU64: | 1653 case kS390_DivU64: |
| 1635 ASSEMBLE_BIN_OP(RRRInstr(DivU64), RRM64Instr(DivU64), nullInstr); | 1654 ASSEMBLE_BIN_OP(RRRInstr(DivU64), RRM64Instr(DivU64), nullInstr); |
| 1636 break; | 1655 break; |
| 1637 case kS390_DivU32: { | 1656 case kS390_DivU32: { |
| 1638 ASSEMBLE_BIN32_OP(RRRInstr(DivU32), RRM32Instr(DivU32), nullInstr); | 1657 // zero-ext |
| 1658 ASSEMBLE_BIN_OP(RRRInstr(DivU32), RRM32Instr(DivU32), nullInstr); |
| 1639 break; | 1659 break; |
| 1640 } | 1660 } |
| 1641 case kS390_DivFloat: | 1661 case kS390_DivFloat: |
| 1642 ASSEMBLE_BIN_OP(DDInstr(debr), DMTInstr(DivFloat32), nullInstr); | 1662 ASSEMBLE_BIN_OP(DDInstr(debr), DMTInstr(DivFloat32), nullInstr); |
| 1643 break; | 1663 break; |
| 1644 case kS390_DivDouble: | 1664 case kS390_DivDouble: |
| 1645 ASSEMBLE_BIN_OP(DDInstr(ddbr), DMTInstr(DivFloat64), nullInstr); | 1665 ASSEMBLE_BIN_OP(DDInstr(ddbr), DMTInstr(DivFloat64), nullInstr); |
| 1646 break; | 1666 break; |
| 1647 case kS390_Mod32: | 1667 case kS390_Mod32: |
| 1648 ASSEMBLE_BIN32_OP(RRRInstr(Mod32), RRM32Instr(Mod32), nullInstr); | 1668 // zero-ext |
| 1669 ASSEMBLE_BIN_OP(RRRInstr(Mod32), RRM32Instr(Mod32), nullInstr); |
| 1649 break; | 1670 break; |
| 1650 case kS390_ModU32: | 1671 case kS390_ModU32: |
| 1651 ASSEMBLE_BIN32_OP(RRRInstr(ModU32), RRM32Instr(ModU32), nullInstr); | 1672 // zero-ext |
| 1673 ASSEMBLE_BIN_OP(RRRInstr(ModU32), RRM32Instr(ModU32), nullInstr); |
| 1652 break; | 1674 break; |
| 1653 case kS390_Mod64: | 1675 case kS390_Mod64: |
| 1654 ASSEMBLE_BIN_OP(RRRInstr(Mod64), RRM64Instr(Mod64), nullInstr); | 1676 ASSEMBLE_BIN_OP(RRRInstr(Mod64), RRM64Instr(Mod64), nullInstr); |
| 1655 break; | 1677 break; |
| 1656 case kS390_ModU64: | 1678 case kS390_ModU64: |
| 1657 ASSEMBLE_BIN_OP(RRRInstr(ModU64), RRM64Instr(ModU64), nullInstr); | 1679 ASSEMBLE_BIN_OP(RRRInstr(ModU64), RRM64Instr(ModU64), nullInstr); |
| 1658 break; | 1680 break; |
| 1659 case kS390_AbsFloat: | 1681 case kS390_AbsFloat: |
| 1660 __ lpebr(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); | 1682 __ lpebr(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); |
| 1661 break; | 1683 break; |
| (...skipping 1268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2930 padding_size -= 2; | 2952 padding_size -= 2; |
| 2931 } | 2953 } |
| 2932 } | 2954 } |
| 2933 } | 2955 } |
| 2934 | 2956 |
| 2935 #undef __ | 2957 #undef __ |
| 2936 | 2958 |
| 2937 } // namespace compiler | 2959 } // namespace compiler |
| 2938 } // namespace internal | 2960 } // namespace internal |
| 2939 } // namespace v8 | 2961 } // namespace v8 |
| OLD | NEW |