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

Side by Side Diff: src/compiler/s390/code-generator-s390.cc

Issue 2756733002: s390: Unify Visit(Word/Float)(32/64)(Unary/Bin)Op (Closed)
Patch Set: remove unnecessary check Created 3 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 | « no previous file | src/compiler/s390/instruction-selector-s390.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 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
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
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | src/compiler/s390/instruction-selector-s390.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698