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

Side by Side Diff: src/s390/assembler-s390.cc

Issue 2589063002: s390: clean up RR/RRE/RRD/RIL format in Assembler (Closed)
Patch Set: remove comments Created 4 years 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/s390/assembler-s390.h ('k') | src/s390/constants-s390.h » ('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 (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions 5 // modification, are permitted provided that the following conditions
6 // are met: 6 // are met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 } 521 }
522 L->link_to(pc_offset()); 522 L->link_to(pc_offset());
523 523
524 constant = target_pos - pc_offset(); 524 constant = target_pos - pc_offset();
525 } 525 }
526 llilf(r1, Operand(constant)); 526 llilf(r1, Operand(constant));
527 } 527 }
528 528
529 // Pseudo op - branch on condition 529 // Pseudo op - branch on condition
530 void Assembler::branchOnCond(Condition c, int branch_offset, bool is_bound) { 530 void Assembler::branchOnCond(Condition c, int branch_offset, bool is_bound) {
531 int offset = branch_offset; 531 int offset_in_halfwords = branch_offset / 2;
532 if (is_bound && is_int16(offset)) { 532 if (is_bound && is_int16(offset_in_halfwords)) {
533 brc(c, Operand(offset & 0xFFFF)); // short jump 533 brc(c, Operand(offset_in_halfwords & 0xFFFF)); // short jump
534 } else { 534 } else {
535 brcl(c, Operand(offset)); // long jump 535 brcl(c, Operand(offset_in_halfwords)); // long jump
536 } 536 }
537 } 537 }
538 538
539 // 32-bit Store Multiple - short displacement (12-bits unsigned) 539 // 32-bit Store Multiple - short displacement (12-bits unsigned)
540 void Assembler::stm(Register r1, Register r2, const MemOperand& src) { 540 void Assembler::stm(Register r1, Register r2, const MemOperand& src) {
541 rs_form(STM, r1, r2, src.rb(), src.offset()); 541 rs_form(STM, r1, r2, src.rb(), src.offset());
542 } 542 }
543 543
544 // 32-bit Store Multiple - long displacement (20-bits signed) 544 // 32-bit Store Multiple - long displacement (20-bits signed)
545 void Assembler::stmy(Register r1, Register r2, const MemOperand& src) { 545 void Assembler::stmy(Register r1, Register r2, const MemOperand& src) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 break; 579 break;
580 case DEBUG_BREAK_NOP: 580 case DEBUG_BREAK_NOP:
581 // TODO(john.yan): Use a better NOP break 581 // TODO(john.yan): Use a better NOP break
582 oill(r3, Operand::Zero()); 582 oill(r3, Operand::Zero());
583 break; 583 break;
584 default: 584 default:
585 UNIMPLEMENTED(); 585 UNIMPLEMENTED();
586 } 586 }
587 } 587 }
588 588
589 // RR format: <insn> R1,R2
590 // +--------+----+----+
591 // | OpCode | R1 | R2 |
592 // +--------+----+----+
593 // 0 8 12 15
594 #define RR_FORM_EMIT(name, op) \
595 void Assembler::name(Register r1, Register r2) { rr_form(op, r1, r2); }
596
597 void Assembler::rr_form(Opcode op, Register r1, Register r2) {
598 DCHECK(is_uint8(op));
599 emit2bytes(op * B8 | r1.code() * B4 | r2.code());
600 }
601
602 void Assembler::rr_form(Opcode op, DoubleRegister r1, DoubleRegister r2) {
603 DCHECK(is_uint8(op));
604 emit2bytes(op * B8 | r1.code() * B4 | r2.code());
605 }
606
607 // RR2 format: <insn> M1,R2
608 // +--------+----+----+
609 // | OpCode | M1 | R2 |
610 // +--------+----+----+
611 // 0 8 12 15
612 #define RR2_FORM_EMIT(name, op) \
613 void Assembler::name(Condition m1, Register r2) { rr_form(op, m1, r2); }
614
615 void Assembler::rr_form(Opcode op, Condition m1, Register r2) {
616 DCHECK(is_uint8(op));
617 DCHECK(is_uint4(m1));
618 emit2bytes(op * B8 | m1 * B4 | r2.code());
619 }
620
621 // RX format: <insn> R1,D2(X2,B2) 589 // RX format: <insn> R1,D2(X2,B2)
622 // +--------+----+----+----+-------------+ 590 // +--------+----+----+----+-------------+
623 // | OpCode | R1 | X2 | B2 | D2 | 591 // | OpCode | R1 | X2 | B2 | D2 |
624 // +--------+----+----+----+-------------+ 592 // +--------+----+----+----+-------------+
625 // 0 8 12 16 20 31 593 // 0 8 12 16 20 31
626 #define RX_FORM_EMIT(name, op) \ 594 #define RX_FORM_EMIT(name, op) \
627 void Assembler::name(Register r, const MemOperand& opnd) { \ 595 void Assembler::name(Register r, const MemOperand& opnd) { \
628 name(r, opnd.getIndexRegister(), opnd.getBaseRegister(), \ 596 name(r, opnd.getIndexRegister(), opnd.getBaseRegister(), \
629 opnd.getDisplacement()); \ 597 opnd.getDisplacement()); \
630 } \ 598 } \
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 DCHECK(is_uint16(op)); 683 DCHECK(is_uint16(op));
716 DCHECK(is_int16(i2.imm_)); 684 DCHECK(is_int16(i2.imm_));
717 uint64_t code = (static_cast<uint64_t>(op & 0xFF00)) * B32 | 685 uint64_t code = (static_cast<uint64_t>(op & 0xFF00)) * B32 |
718 (static_cast<uint64_t>(r1.code())) * B36 | 686 (static_cast<uint64_t>(r1.code())) * B36 |
719 (static_cast<uint64_t>(r3.code())) * B32 | 687 (static_cast<uint64_t>(r3.code())) * B32 |
720 (static_cast<uint64_t>(i2.imm_ & 0xFFFF)) * B16 | 688 (static_cast<uint64_t>(i2.imm_ & 0xFFFF)) * B16 |
721 (static_cast<uint64_t>(op & 0x00FF)); 689 (static_cast<uint64_t>(op & 0x00FF));
722 emit6bytes(code); 690 emit6bytes(code);
723 } 691 }
724 692
725 // RIL1 format: <insn> R1,I2
726 // +--------+----+----+------------------------------------+
727 // | OpCode | R1 |OpCd| I2 |
728 // +--------+----+----+------------------------------------+
729 // 0 8 12 16 47
730 #define RIL1_FORM_EMIT(name, op) \
731 void Assembler::name(Register r, const Operand& i2) { ril_form(op, r, i2); }
732
733 void Assembler::ril_form(Opcode op, Register r1, const Operand& i2) {
734 DCHECK(is_uint12(op));
735 uint64_t code = (static_cast<uint64_t>(op & 0xFF0)) * B36 |
736 (static_cast<uint64_t>(r1.code())) * B36 |
737 (static_cast<uint64_t>(op & 0x00F)) * B32 |
738 (static_cast<uint64_t>(i2.imm_) & 0xFFFFFFFF);
739 emit6bytes(code);
740 }
741
742 // RIL2 format: <insn> M1,I2
743 // +--------+----+----+------------------------------------+
744 // | OpCode | M1 |OpCd| I2 |
745 // +--------+----+----+------------------------------------+
746 // 0 8 12 16 47
747 #define RIL2_FORM_EMIT(name, op) \
748 void Assembler::name(Condition m1, const Operand& i2) { \
749 ril_form(op, m1, i2); \
750 }
751
752 void Assembler::ril_form(Opcode op, Condition m1, const Operand& i2) {
753 DCHECK(is_uint12(op));
754 DCHECK(is_uint4(m1));
755 uint64_t code = (static_cast<uint64_t>(op & 0xFF0)) * B36 |
756 (static_cast<uint64_t>(m1)) * B36 |
757 (static_cast<uint64_t>(op & 0x00F)) * B32 |
758 (static_cast<uint64_t>(i2.imm_ & 0xFFFFFFFF));
759 emit6bytes(code);
760 }
761
762 // RRE format: <insn> R1,R2
763 // +------------------+--------+----+----+
764 // | OpCode |////////| R1 | R2 |
765 // +------------------+--------+----+----+
766 // 0 16 24 28 31
767 #define RRE_FORM_EMIT(name, op) \
768 void Assembler::name(Register r1, Register r2) { rre_form(op, r1, r2); }
769
770 void Assembler::rre_form(Opcode op, Register r1, Register r2) {
771 DCHECK(is_uint16(op));
772 emit4bytes(op << 16 | r1.code() * B4 | r2.code());
773 }
774
775 void Assembler::rre_form(Opcode op, DoubleRegister r1, DoubleRegister r2) {
776 DCHECK(is_uint16(op));
777 emit4bytes(op << 16 | r1.code() * B4 | r2.code());
778 }
779
780 // RRD format: <insn> R1,R3, R2
781 // +------------------+----+----+----+----+
782 // | OpCode | R1 |////| R3 | R2 |
783 // +------------------+----+----+----+----+
784 // 0 16 20 24 28 31
785 #define RRD_FORM_EMIT(name, op) \
786 void Assembler::name(Register r1, Register r3, Register r2) { \
787 rrd_form(op, r1, r3, r2); \
788 }
789
790 void Assembler::rrd_form(Opcode op, Register r1, Register r3, Register r2) {
791 emit4bytes(op << 16 | r1.code() * B12 | r3.code() * B4 | r2.code());
792 }
793
794 // RS1 format: <insn> R1,R3,D2(B2) 693 // RS1 format: <insn> R1,R3,D2(B2)
795 // +--------+----+----+----+-------------+ 694 // +--------+----+----+----+-------------+
796 // | OpCode | R1 | R3 | B2 | D2 | 695 // | OpCode | R1 | R3 | B2 | D2 |
797 // +--------+----+----+----+-------------+ 696 // +--------+----+----+----+-------------+
798 // 0 8 12 16 20 31 697 // 0 8 12 16 20 31
799 #define RS1_FORM_EMIT(name, op) \ 698 #define RS1_FORM_EMIT(name, op) \
800 void Assembler::name(Register r1, Register r3, Register b2, Disp d2) { \ 699 void Assembler::name(Register r1, Register r3, Register b2, Disp d2) { \
801 rs_form(op, r1, r3, b2, d2); \ 700 rs_form(op, r1, r3, b2, d2); \
802 } \ 701 } \
803 void Assembler::name(Register r1, Register r3, const MemOperand& opnd) { \ 702 void Assembler::name(Register r1, Register r3, const MemOperand& opnd) { \
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
1417 void Assembler::rrfe_form(Opcode op, Condition m3, Condition m4, Register r1, 1316 void Assembler::rrfe_form(Opcode op, Condition m3, Condition m4, Register r1,
1418 Register r2) { 1317 Register r2) {
1419 uint32_t code = op << 16 | m3 * B12 | m4 * B8 | r1.code() * B4 | r2.code(); 1318 uint32_t code = op << 16 | m3 * B12 | m4 * B8 | r1.code() * B4 | r2.code();
1420 emit4bytes(code); 1319 emit4bytes(code);
1421 } 1320 }
1422 1321
1423 // end of S390 Instruction generation 1322 // end of S390 Instruction generation
1424 1323
1425 // start of S390 instruction 1324 // start of S390 instruction
1426 RX_FORM_EMIT(bc, BC) 1325 RX_FORM_EMIT(bc, BC)
1427 RR_FORM_EMIT(bctr, BCTR)
1428 RXE_FORM_EMIT(ceb, CEB) 1326 RXE_FORM_EMIT(ceb, CEB)
1429 SS1_FORM_EMIT(ed, ED) 1327 SS1_FORM_EMIT(ed, ED)
1430 RX_FORM_EMIT(ex, EX) 1328 RX_FORM_EMIT(ex, EX)
1431 RRE_FORM_EMIT(flogr, FLOGR)
1432 RRE_FORM_EMIT(lcgr, LCGR)
1433 RR_FORM_EMIT(lcr, LCR)
1434 RX_FORM_EMIT(le_z, LE) 1329 RX_FORM_EMIT(le_z, LE)
1435 RXY_FORM_EMIT(ley, LEY) 1330 RXY_FORM_EMIT(ley, LEY)
1436 RIL1_FORM_EMIT(llihf, LLIHF)
1437 RIL1_FORM_EMIT(llilf, LLILF)
1438 RRE_FORM_EMIT(lngr, LNGR)
1439 RR_FORM_EMIT(lnr, LNR)
1440 RRE_FORM_EMIT(lrvr, LRVR)
1441 RRE_FORM_EMIT(lrvgr, LRVGR)
1442 RXY_FORM_EMIT(lrv, LRV) 1331 RXY_FORM_EMIT(lrv, LRV)
1443 RXY_FORM_EMIT(lrvg, LRVG) 1332 RXY_FORM_EMIT(lrvg, LRVG)
1444 RXY_FORM_EMIT(lrvh, LRVH) 1333 RXY_FORM_EMIT(lrvh, LRVH)
1445 SS1_FORM_EMIT(mvn, MVN) 1334 SS1_FORM_EMIT(mvn, MVN)
1446 SS1_FORM_EMIT(nc, NC) 1335 SS1_FORM_EMIT(nc, NC)
1447 SI_FORM_EMIT(ni, NI) 1336 SI_FORM_EMIT(ni, NI)
1448 RIL1_FORM_EMIT(nihf, NIHF)
1449 RIL1_FORM_EMIT(nilf, NILF)
1450 RI1_FORM_EMIT(nilh, NILH) 1337 RI1_FORM_EMIT(nilh, NILH)
1451 RI1_FORM_EMIT(nill, NILL) 1338 RI1_FORM_EMIT(nill, NILL)
1452 RIL1_FORM_EMIT(oihf, OIHF)
1453 RIL1_FORM_EMIT(oilf, OILF)
1454 RI1_FORM_EMIT(oill, OILL) 1339 RI1_FORM_EMIT(oill, OILL)
1455 RRE_FORM_EMIT(popcnt, POPCNT_Z)
1456 RIL1_FORM_EMIT(slfi, SLFI)
1457 RXY_FORM_EMIT(slgf, SLGF) 1340 RXY_FORM_EMIT(slgf, SLGF)
1458 RIL1_FORM_EMIT(slgfi, SLGFI)
1459 RXY_FORM_EMIT(strvh, STRVH) 1341 RXY_FORM_EMIT(strvh, STRVH)
1460 RXY_FORM_EMIT(strv, STRV) 1342 RXY_FORM_EMIT(strv, STRV)
1461 RXY_FORM_EMIT(strvg, STRVG) 1343 RXY_FORM_EMIT(strvg, STRVG)
1462 RI1_FORM_EMIT(tmll, TMLL) 1344 RI1_FORM_EMIT(tmll, TMLL)
1463 SS1_FORM_EMIT(tr, TR) 1345 SS1_FORM_EMIT(tr, TR)
1464 S_FORM_EMIT(ts, TS) 1346 S_FORM_EMIT(ts, TS)
1465 RIL1_FORM_EMIT(xihf, XIHF)
1466 RIL1_FORM_EMIT(xilf, XILF)
1467 1347
1468 // ------------------------- 1348 // -------------------------
1469 // Load Address Instructions 1349 // Load Address Instructions
1470 // ------------------------- 1350 // -------------------------
1471 // Load Address Register-Storage 1351 // Load Address Register-Storage
1472 void Assembler::la(Register r1, const MemOperand& opnd) { 1352 void Assembler::la(Register r1, const MemOperand& opnd) {
1473 rx_form(LA, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1353 rx_form(LA, r1, opnd.rx(), opnd.rb(), opnd.offset());
1474 } 1354 }
1475 1355
1476 // Load Address Register-Storage 1356 // Load Address Register-Storage
1477 void Assembler::lay(Register r1, const MemOperand& opnd) { 1357 void Assembler::lay(Register r1, const MemOperand& opnd) {
1478 rxy_form(LAY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1358 rxy_form(LAY, r1, opnd.rx(), opnd.rb(), opnd.offset());
1479 } 1359 }
1480 1360
1481 // Load Address Relative Long 1361 // Load Address Relative Long
1482 void Assembler::larl(Register r1, const Operand& opnd) {
1483 ril_form(LARL, r1, opnd);
1484 }
1485
1486 // Load Address Relative Long
1487 void Assembler::larl(Register r1, Label* l) { 1362 void Assembler::larl(Register r1, Label* l) {
1488 larl(r1, Operand(branch_offset(l))); 1363 larl(r1, Operand(branch_offset(l)));
1489 } 1364 }
1490 1365
1491 // ----------------- 1366 // -----------------
1492 // Load Instructions 1367 // Load Instructions
1493 // ----------------- 1368 // -----------------
1494 // Load Byte Register-Storage (32<-8) 1369 // Load Byte Register-Storage (32<-8)
1495 void Assembler::lb(Register r, const MemOperand& src) { 1370 void Assembler::lb(Register r, const MemOperand& src) {
1496 rxy_form(LB, r, src.rx(), src.rb(), src.offset()); 1371 rxy_form(LB, r, src.rx(), src.rb(), src.offset());
1497 } 1372 }
1498 1373
1499 // Load Byte Register-Register (32<-8)
1500 void Assembler::lbr(Register r1, Register r2) { rre_form(LBR, r1, r2); }
1501
1502 // Load Byte Register-Storage (64<-8) 1374 // Load Byte Register-Storage (64<-8)
1503 void Assembler::lgb(Register r, const MemOperand& src) { 1375 void Assembler::lgb(Register r, const MemOperand& src) {
1504 rxy_form(LGB, r, src.rx(), src.rb(), src.offset()); 1376 rxy_form(LGB, r, src.rx(), src.rb(), src.offset());
1505 } 1377 }
1506 1378
1507 // Load Byte Register-Register (64<-8)
1508 void Assembler::lgbr(Register r1, Register r2) { rre_form(LGBR, r1, r2); }
1509
1510 // Load Halfword Register-Storage (32<-16) 1379 // Load Halfword Register-Storage (32<-16)
1511 void Assembler::lh(Register r, const MemOperand& src) { 1380 void Assembler::lh(Register r, const MemOperand& src) {
1512 rx_form(LH, r, src.rx(), src.rb(), src.offset()); 1381 rx_form(LH, r, src.rx(), src.rb(), src.offset());
1513 } 1382 }
1514 1383
1515 // Load Halfword Register-Storage (32<-16) 1384 // Load Halfword Register-Storage (32<-16)
1516 void Assembler::lhy(Register r, const MemOperand& src) { 1385 void Assembler::lhy(Register r, const MemOperand& src) {
1517 rxy_form(LHY, r, src.rx(), src.rb(), src.offset()); 1386 rxy_form(LHY, r, src.rx(), src.rb(), src.offset());
1518 } 1387 }
1519 1388
1520 // Load Halfword Register-Register (32<-16)
1521 void Assembler::lhr(Register r1, Register r2) { rre_form(LHR, r1, r2); }
1522
1523 // Load Halfword Register-Storage (64<-16) 1389 // Load Halfword Register-Storage (64<-16)
1524 void Assembler::lgh(Register r, const MemOperand& src) { 1390 void Assembler::lgh(Register r, const MemOperand& src) {
1525 rxy_form(LGH, r, src.rx(), src.rb(), src.offset()); 1391 rxy_form(LGH, r, src.rx(), src.rb(), src.offset());
1526 } 1392 }
1527 1393
1528 // Load Halfword Register-Register (64<-16)
1529 void Assembler::lghr(Register r1, Register r2) { rre_form(LGHR, r1, r2); }
1530
1531 // Load Register-Storage (32) 1394 // Load Register-Storage (32)
1532 void Assembler::l(Register r, const MemOperand& src) { 1395 void Assembler::l(Register r, const MemOperand& src) {
1533 rx_form(L, r, src.rx(), src.rb(), src.offset()); 1396 rx_form(L, r, src.rx(), src.rb(), src.offset());
1534 } 1397 }
1535 1398
1536 // Load Register-Storage (32) 1399 // Load Register-Storage (32)
1537 void Assembler::ly(Register r, const MemOperand& src) { 1400 void Assembler::ly(Register r, const MemOperand& src) {
1538 rxy_form(LY, r, src.rx(), src.rb(), src.offset()); 1401 rxy_form(LY, r, src.rx(), src.rb(), src.offset());
1539 } 1402 }
1540 1403
1541 // Load Register-Register (32)
1542 void Assembler::lr(Register r1, Register r2) { rr_form(LR, r1, r2); }
1543
1544 // Load Register-Storage (64) 1404 // Load Register-Storage (64)
1545 void Assembler::lg(Register r, const MemOperand& src) { 1405 void Assembler::lg(Register r, const MemOperand& src) {
1546 rxy_form(LG, r, src.rx(), src.rb(), src.offset()); 1406 rxy_form(LG, r, src.rx(), src.rb(), src.offset());
1547 } 1407 }
1548 1408
1549 // Load Register-Register (64)
1550 void Assembler::lgr(Register r1, Register r2) { rre_form(LGR, r1, r2); }
1551
1552 // Load Register-Storage (64<-32) 1409 // Load Register-Storage (64<-32)
1553 void Assembler::lgf(Register r, const MemOperand& src) { 1410 void Assembler::lgf(Register r, const MemOperand& src) {
1554 rxy_form(LGF, r, src.rx(), src.rb(), src.offset()); 1411 rxy_form(LGF, r, src.rx(), src.rb(), src.offset());
1555 } 1412 }
1556 1413
1557 // Load Sign Extended Register-Register (64<-32)
1558 void Assembler::lgfr(Register r1, Register r2) { rre_form(LGFR, r1, r2); }
1559
1560 // Load Halfword Immediate (32) 1414 // Load Halfword Immediate (32)
1561 void Assembler::lhi(Register r, const Operand& imm) { ri_form(LHI, r, imm); } 1415 void Assembler::lhi(Register r, const Operand& imm) { ri_form(LHI, r, imm); }
1562 1416
1563 // Load Halfword Immediate (64) 1417 // Load Halfword Immediate (64)
1564 void Assembler::lghi(Register r, const Operand& imm) { ri_form(LGHI, r, imm); } 1418 void Assembler::lghi(Register r, const Operand& imm) { ri_form(LGHI, r, imm); }
1565 1419
1566 // -------------------------- 1420 // --------------------------
1567 // Load And Test Instructions 1421 // Load And Test Instructions
1568 // -------------------------- 1422 // --------------------------
1569 // Load and Test Register-Storage (32) 1423 // Load and Test Register-Storage (32)
1570 void Assembler::lt_z(Register r1, const MemOperand& opnd) { 1424 void Assembler::lt_z(Register r1, const MemOperand& opnd) {
1571 rxy_form(LT, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1425 rxy_form(LT, r1, opnd.rx(), opnd.rb(), opnd.offset());
1572 } 1426 }
1573 1427
1574 // Load and Test Register-Storage (64) 1428 // Load and Test Register-Storage (64)
1575 void Assembler::ltg(Register r1, const MemOperand& opnd) { 1429 void Assembler::ltg(Register r1, const MemOperand& opnd) {
1576 rxy_form(LTG, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1430 rxy_form(LTG, r1, opnd.rx(), opnd.rb(), opnd.offset());
1577 } 1431 }
1578 1432
1579 // Load and Test Register-Register (32)
1580 void Assembler::ltr(Register r1, Register r2) { rr_form(LTR, r1, r2); }
1581
1582 // Load and Test Register-Register (64)
1583 void Assembler::ltgr(Register r1, Register r2) { rre_form(LTGR, r1, r2); }
1584
1585 // Load and Test Register-Register (64<-32)
1586 void Assembler::ltgfr(Register r1, Register r2) { rre_form(LTGFR, r1, r2); }
1587
1588 // ------------------------- 1433 // -------------------------
1589 // Load Logical Instructions 1434 // Load Logical Instructions
1590 // ------------------------- 1435 // -------------------------
1591 // Load Logical Character (32) - loads a byte and zero ext. 1436 // Load Logical Character (32) - loads a byte and zero ext.
1592 void Assembler::llc(Register r1, const MemOperand& opnd) { 1437 void Assembler::llc(Register r1, const MemOperand& opnd) {
1593 rxy_form(LLC, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1438 rxy_form(LLC, r1, opnd.rx(), opnd.rb(), opnd.offset());
1594 } 1439 }
1595 1440
1596 // Load Logical Character (64) - loads a byte and zero ext. 1441 // Load Logical Character (64) - loads a byte and zero ext.
1597 void Assembler::llgc(Register r1, const MemOperand& opnd) { 1442 void Assembler::llgc(Register r1, const MemOperand& opnd) {
1598 rxy_form(LLGC, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1443 rxy_form(LLGC, r1, opnd.rx(), opnd.rb(), opnd.offset());
1599 } 1444 }
1600 1445
1601 // Load Logical halfword Register-Storage (64<-32) 1446 // Load Logical halfword Register-Storage (64<-32)
1602 void Assembler::llgf(Register r1, const MemOperand& opnd) { 1447 void Assembler::llgf(Register r1, const MemOperand& opnd) {
1603 rxy_form(LLGF, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1448 rxy_form(LLGF, r1, opnd.rx(), opnd.rb(), opnd.offset());
1604 } 1449 }
1605 1450
1606 // Load Logical Register-Register (64<-32)
1607 void Assembler::llgfr(Register r1, Register r2) { rre_form(LLGFR, r1, r2); }
1608
1609 // Load Logical halfword Register-Storage (32) 1451 // Load Logical halfword Register-Storage (32)
1610 void Assembler::llh(Register r1, const MemOperand& opnd) { 1452 void Assembler::llh(Register r1, const MemOperand& opnd) {
1611 rxy_form(LLH, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1453 rxy_form(LLH, r1, opnd.rx(), opnd.rb(), opnd.offset());
1612 } 1454 }
1613 1455
1614 // Load Logical halfword Register-Storage (64) 1456 // Load Logical halfword Register-Storage (64)
1615 void Assembler::llgh(Register r1, const MemOperand& opnd) { 1457 void Assembler::llgh(Register r1, const MemOperand& opnd) {
1616 rxy_form(LLGH, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1458 rxy_form(LLGH, r1, opnd.rx(), opnd.rb(), opnd.offset());
1617 } 1459 }
1618 1460
1619 // Load Logical halfword Register-Register (32)
1620 void Assembler::llhr(Register r1, Register r2) { rre_form(LLHR, r1, r2); }
1621
1622 // Load Logical halfword Register-Register (64)
1623 void Assembler::llghr(Register r1, Register r2) { rre_form(LLGHR, r1, r2); }
1624
1625 // Load On Condition R-R (32) 1461 // Load On Condition R-R (32)
1626 void Assembler::locr(Condition m3, Register r1, Register r2) { 1462 void Assembler::locr(Condition m3, Register r1, Register r2) {
1627 rrf2_form(LOCR << 16 | m3 * B12 | r1.code() * B4 | r2.code()); 1463 rrf2_form(LOCR << 16 | m3 * B12 | r1.code() * B4 | r2.code());
1628 } 1464 }
1629 1465
1630 // Load On Condition R-R (64) 1466 // Load On Condition R-R (64)
1631 void Assembler::locgr(Condition m3, Register r1, Register r2) { 1467 void Assembler::locgr(Condition m3, Register r1, Register r2) {
1632 rrf2_form(LOCGR << 16 | m3 * B12 | r1.code() * B4 | r2.code()); 1468 rrf2_form(LOCGR << 16 | m3 * B12 | r1.code() * B4 | r2.code());
1633 } 1469 }
1634 1470
1635 // Load On Condition R-M (32) 1471 // Load On Condition R-M (32)
1636 void Assembler::loc(Condition m3, Register r1, const MemOperand& src) { 1472 void Assembler::loc(Condition m3, Register r1, const MemOperand& src) {
1637 rxy_form(LOC, r1, m3, src.rb(), src.offset()); 1473 rxy_form(LOC, r1, m3, src.rb(), src.offset());
1638 } 1474 }
1639 1475
1640 // Load On Condition R-M (64) 1476 // Load On Condition R-M (64)
1641 void Assembler::locg(Condition m3, Register r1, const MemOperand& src) { 1477 void Assembler::locg(Condition m3, Register r1, const MemOperand& src) {
1642 rxy_form(LOCG, r1, m3, src.rb(), src.offset()); 1478 rxy_form(LOCG, r1, m3, src.rb(), src.offset());
1643 } 1479 }
1644 1480
1645 // ------------------- 1481 // -------------------
1646 // Branch Instructions 1482 // Branch Instructions
1647 // ------------------- 1483 // -------------------
1648 // Branch and Save
1649 void Assembler::basr(Register r1, Register r2) { rr_form(BASR, r1, r2); }
1650
1651 // Indirect Conditional Branch via register
1652 void Assembler::bcr(Condition m, Register target) { rr_form(BCR, m, target); }
1653 1484
1654 // Branch on Count (32) 1485 // Branch on Count (32)
1655 void Assembler::bct(Register r, const MemOperand& opnd) { 1486 void Assembler::bct(Register r, const MemOperand& opnd) {
1656 rx_form(BCT, r, opnd.rx(), opnd.rb(), opnd.offset()); 1487 rx_form(BCT, r, opnd.rx(), opnd.rb(), opnd.offset());
1657 } 1488 }
1658 1489
1659 // Branch on Count (64) 1490 // Branch on Count (64)
1660 void Assembler::bctg(Register r, const MemOperand& opnd) { 1491 void Assembler::bctg(Register r, const MemOperand& opnd) {
1661 rxy_form(BCTG, r, opnd.rx(), opnd.rb(), opnd.offset()); 1492 rxy_form(BCTG, r, opnd.rx(), opnd.rb(), opnd.offset());
1662 } 1493 }
1663 1494
1664 // Branch Relative and Save (32) 1495 // Branch Relative and Save (32)
1665 void Assembler::bras(Register r, const Operand& opnd) { 1496 void Assembler::bras(Register r, const Operand& opnd) {
1666 ri_form(BRAS, r, opnd); 1497 ri_form(BRAS, r, opnd);
1667 } 1498 }
1668 1499
1669 // Branch Relative and Save (64)
1670 void Assembler::brasl(Register r, const Operand& opnd) {
1671 ril_form(BRASL, r, opnd);
1672 }
1673
1674 // Branch relative on Condition (32) 1500 // Branch relative on Condition (32)
1675 void Assembler::brc(Condition c, const Operand& opnd) { 1501 void Assembler::brc(Condition c, const Operand& opnd) { ri_form(BRC, c, opnd); }
1676 // BRC actually encodes # of halfwords, so divide by 2.
1677 int16_t numHalfwords = static_cast<int16_t>(opnd.immediate()) / 2;
1678 Operand halfwordOp = Operand(numHalfwords);
1679 halfwordOp.setBits(16);
1680 ri_form(BRC, c, halfwordOp);
1681 }
1682
1683 // Branch Relative on Condition (64)
1684 void Assembler::brcl(Condition c, const Operand& opnd, bool isCodeTarget) {
1685 Operand halfwordOp = opnd;
1686 // Operand for code targets will be index to code_targets_
1687 if (!isCodeTarget) {
1688 // BRCL actually encodes # of halfwords, so divide by 2.
1689 int32_t numHalfwords = static_cast<int32_t>(opnd.immediate()) / 2;
1690 halfwordOp = Operand(numHalfwords);
1691 }
1692 ril_form(BRCL, c, halfwordOp);
1693 }
1694 1502
1695 // Branch On Count (32) 1503 // Branch On Count (32)
1696 void Assembler::brct(Register r1, const Operand& imm) { 1504 void Assembler::brct(Register r1, const Operand& imm) {
1697 // BRCT encodes # of halfwords, so divide by 2. 1505 // BRCT encodes # of halfwords, so divide by 2.
1698 int16_t numHalfwords = static_cast<int16_t>(imm.immediate()) / 2; 1506 int16_t numHalfwords = static_cast<int16_t>(imm.immediate()) / 2;
1699 Operand halfwordOp = Operand(numHalfwords); 1507 Operand halfwordOp = Operand(numHalfwords);
1700 halfwordOp.setBits(16); 1508 halfwordOp.setBits(16);
1701 ri_form(BRCT, r1, halfwordOp); 1509 ri_form(BRCT, r1, halfwordOp);
1702 } 1510 }
1703 1511
(...skipping 12 matching lines...) Expand all
1716 // Compare Register-Storage (32) 1524 // Compare Register-Storage (32)
1717 void Assembler::c(Register r, const MemOperand& opnd) { 1525 void Assembler::c(Register r, const MemOperand& opnd) {
1718 rx_form(C, r, opnd.rx(), opnd.rb(), opnd.offset()); 1526 rx_form(C, r, opnd.rx(), opnd.rb(), opnd.offset());
1719 } 1527 }
1720 1528
1721 // Compare Register-Storage (32) 1529 // Compare Register-Storage (32)
1722 void Assembler::cy(Register r, const MemOperand& opnd) { 1530 void Assembler::cy(Register r, const MemOperand& opnd) {
1723 rxy_form(CY, r, opnd.rx(), opnd.rb(), opnd.offset()); 1531 rxy_form(CY, r, opnd.rx(), opnd.rb(), opnd.offset());
1724 } 1532 }
1725 1533
1726 // Compare Register-Register (32)
1727 void Assembler::cr_z(Register r1, Register r2) { rr_form(CR, r1, r2); }
1728
1729 // Compare Register-Storage (64) 1534 // Compare Register-Storage (64)
1730 void Assembler::cg(Register r, const MemOperand& opnd) { 1535 void Assembler::cg(Register r, const MemOperand& opnd) {
1731 rxy_form(CG, r, opnd.rx(), opnd.rb(), opnd.offset()); 1536 rxy_form(CG, r, opnd.rx(), opnd.rb(), opnd.offset());
1732 } 1537 }
1733 1538
1734 // Compare Register-Register (64)
1735 void Assembler::cgr(Register r1, Register r2) { rre_form(CGR, r1, r2); }
1736
1737 // Compare Halfword Register-Storage (32) 1539 // Compare Halfword Register-Storage (32)
1738 void Assembler::ch(Register r, const MemOperand& opnd) { 1540 void Assembler::ch(Register r, const MemOperand& opnd) {
1739 rx_form(CH, r, opnd.rx(), opnd.rb(), opnd.offset()); 1541 rx_form(CH, r, opnd.rx(), opnd.rb(), opnd.offset());
1740 } 1542 }
1741 1543
1742 // Compare Halfword Register-Storage (32) 1544 // Compare Halfword Register-Storage (32)
1743 void Assembler::chy(Register r, const MemOperand& opnd) { 1545 void Assembler::chy(Register r, const MemOperand& opnd) {
1744 rxy_form(CHY, r, opnd.rx(), opnd.rb(), opnd.offset()); 1546 rxy_form(CHY, r, opnd.rx(), opnd.rb(), opnd.offset());
1745 } 1547 }
1746 1548
1747 // Compare Halfword Immediate (32) 1549 // Compare Halfword Immediate (32)
1748 void Assembler::chi(Register r, const Operand& opnd) { ri_form(CHI, r, opnd); } 1550 void Assembler::chi(Register r, const Operand& opnd) { ri_form(CHI, r, opnd); }
1749 1551
1750 // Compare Halfword Immediate (64) 1552 // Compare Halfword Immediate (64)
1751 void Assembler::cghi(Register r, const Operand& opnd) { 1553 void Assembler::cghi(Register r, const Operand& opnd) {
1752 ri_form(CGHI, r, opnd); 1554 ri_form(CGHI, r, opnd);
1753 } 1555 }
1754 1556
1755 // Compare Immediate (32)
1756 void Assembler::cfi(Register r, const Operand& opnd) { ril_form(CFI, r, opnd); }
1757
1758 // Compare Immediate (64)
1759 void Assembler::cgfi(Register r, const Operand& opnd) {
1760 ril_form(CGFI, r, opnd);
1761 }
1762
1763 // ---------------------------- 1557 // ----------------------------
1764 // Compare Logical Instructions 1558 // Compare Logical Instructions
1765 // ---------------------------- 1559 // ----------------------------
1766 // Compare Logical Register-Storage (32) 1560 // Compare Logical Register-Storage (32)
1767 void Assembler::cl(Register r, const MemOperand& opnd) { 1561 void Assembler::cl(Register r, const MemOperand& opnd) {
1768 rx_form(CL, r, opnd.rx(), opnd.rb(), opnd.offset()); 1562 rx_form(CL, r, opnd.rx(), opnd.rb(), opnd.offset());
1769 } 1563 }
1770 1564
1771 // Compare Logical Register-Storage (32) 1565 // Compare Logical Register-Storage (32)
1772 void Assembler::cly(Register r, const MemOperand& opnd) { 1566 void Assembler::cly(Register r, const MemOperand& opnd) {
1773 rxy_form(CLY, r, opnd.rx(), opnd.rb(), opnd.offset()); 1567 rxy_form(CLY, r, opnd.rx(), opnd.rb(), opnd.offset());
1774 } 1568 }
1775 1569
1776 // Compare Logical Register-Register (32)
1777 void Assembler::clr(Register r1, Register r2) { rr_form(CLR, r1, r2); }
1778
1779 // Compare Logical Register-Storage (64) 1570 // Compare Logical Register-Storage (64)
1780 void Assembler::clg(Register r, const MemOperand& opnd) { 1571 void Assembler::clg(Register r, const MemOperand& opnd) {
1781 rxy_form(CLG, r, opnd.rx(), opnd.rb(), opnd.offset()); 1572 rxy_form(CLG, r, opnd.rx(), opnd.rb(), opnd.offset());
1782 } 1573 }
1783 1574
1784 // Compare Logical Register-Register (64)
1785 void Assembler::clgr(Register r1, Register r2) { rre_form(CLGR, r1, r2); }
1786
1787 // Compare Logical Immediate (32)
1788 void Assembler::clfi(Register r1, const Operand& i2) { ril_form(CLFI, r1, i2); }
1789
1790 // Compare Logical Immediate (64<32)
1791 void Assembler::clgfi(Register r1, const Operand& i2) {
1792 ril_form(CLGFI, r1, i2);
1793 }
1794
1795 // Compare Immediate (Mem - Imm) (8) 1575 // Compare Immediate (Mem - Imm) (8)
1796 void Assembler::cli(const MemOperand& opnd, const Operand& imm) { 1576 void Assembler::cli(const MemOperand& opnd, const Operand& imm) {
1797 si_form(CLI, imm, opnd.rb(), opnd.offset()); 1577 si_form(CLI, imm, opnd.rb(), opnd.offset());
1798 } 1578 }
1799 1579
1800 // Compare Immediate (Mem - Imm) (8) 1580 // Compare Immediate (Mem - Imm) (8)
1801 void Assembler::cliy(const MemOperand& opnd, const Operand& imm) { 1581 void Assembler::cliy(const MemOperand& opnd, const Operand& imm) {
1802 siy_form(CLIY, imm, opnd.rb(), opnd.offset()); 1582 siy_form(CLIY, imm, opnd.rb(), opnd.offset());
1803 } 1583 }
1804 1584
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1865 // Add Register-Storage (32) 1645 // Add Register-Storage (32)
1866 void Assembler::a(Register r1, const MemOperand& opnd) { 1646 void Assembler::a(Register r1, const MemOperand& opnd) {
1867 rx_form(A, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1647 rx_form(A, r1, opnd.rx(), opnd.rb(), opnd.offset());
1868 } 1648 }
1869 1649
1870 // Add Register-Storage (32) 1650 // Add Register-Storage (32)
1871 void Assembler::ay(Register r1, const MemOperand& opnd) { 1651 void Assembler::ay(Register r1, const MemOperand& opnd) {
1872 rxy_form(AY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1652 rxy_form(AY, r1, opnd.rx(), opnd.rb(), opnd.offset());
1873 } 1653 }
1874 1654
1875 // Add Immediate (32)
1876 void Assembler::afi(Register r1, const Operand& opnd) {
1877 ril_form(AFI, r1, opnd);
1878 }
1879
1880 // Add Halfword Register-Storage (32) 1655 // Add Halfword Register-Storage (32)
1881 void Assembler::ah(Register r1, const MemOperand& opnd) { 1656 void Assembler::ah(Register r1, const MemOperand& opnd) {
1882 rx_form(AH, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1657 rx_form(AH, r1, opnd.rx(), opnd.rb(), opnd.offset());
1883 } 1658 }
1884 1659
1885 // Add Halfword Register-Storage (32) 1660 // Add Halfword Register-Storage (32)
1886 void Assembler::ahy(Register r1, const MemOperand& opnd) { 1661 void Assembler::ahy(Register r1, const MemOperand& opnd) {
1887 rxy_form(AHY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1662 rxy_form(AHY, r1, opnd.rx(), opnd.rb(), opnd.offset());
1888 } 1663 }
1889 1664
1890 // Add Halfword Immediate (32) 1665 // Add Halfword Immediate (32)
1891 void Assembler::ahi(Register r1, const Operand& i2) { ri_form(AHI, r1, i2); } 1666 void Assembler::ahi(Register r1, const Operand& i2) { ri_form(AHI, r1, i2); }
1892 1667
1893 // Add Halfword Immediate (32) 1668 // Add Halfword Immediate (32)
1894 void Assembler::ahik(Register r1, Register r3, const Operand& i2) { 1669 void Assembler::ahik(Register r1, Register r3, const Operand& i2) {
1895 rie_form(AHIK, r1, r3, i2); 1670 rie_form(AHIK, r1, r3, i2);
1896 } 1671 }
1897 1672
1898 // Add Register (32)
1899 void Assembler::ar(Register r1, Register r2) { rr_form(AR, r1, r2); }
1900
1901 // Add Register-Register-Register (32) 1673 // Add Register-Register-Register (32)
1902 void Assembler::ark(Register r1, Register r2, Register r3) { 1674 void Assembler::ark(Register r1, Register r2, Register r3) {
1903 rrf1_form(ARK, r1, r2, r3); 1675 rrf1_form(ARK, r1, r2, r3);
1904 } 1676 }
1905 1677
1906 // Add Storage-Imm (32) 1678 // Add Storage-Imm (32)
1907 void Assembler::asi(const MemOperand& opnd, const Operand& imm) { 1679 void Assembler::asi(const MemOperand& opnd, const Operand& imm) {
1908 DCHECK(is_int8(imm.imm_)); 1680 DCHECK(is_int8(imm.imm_));
1909 DCHECK(is_int20(opnd.offset())); 1681 DCHECK(is_int20(opnd.offset()));
1910 siy_form(ASI, Operand(0xff & imm.imm_), opnd.rb(), 0xfffff & opnd.offset()); 1682 siy_form(ASI, Operand(0xff & imm.imm_), opnd.rb(), 0xfffff & opnd.offset());
1911 } 1683 }
1912 1684
1913 // ----------------------- 1685 // -----------------------
1914 // 64-bit Add Instructions 1686 // 64-bit Add Instructions
1915 // ----------------------- 1687 // -----------------------
1916 // Add Register-Storage (64) 1688 // Add Register-Storage (64)
1917 void Assembler::ag(Register r1, const MemOperand& opnd) { 1689 void Assembler::ag(Register r1, const MemOperand& opnd) {
1918 rxy_form(AG, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1690 rxy_form(AG, r1, opnd.rx(), opnd.rb(), opnd.offset());
1919 } 1691 }
1920 1692
1921 // Add Register-Storage (64<-32) 1693 // Add Register-Storage (64<-32)
1922 void Assembler::agf(Register r1, const MemOperand& opnd) { 1694 void Assembler::agf(Register r1, const MemOperand& opnd) {
1923 rxy_form(AGF, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1695 rxy_form(AGF, r1, opnd.rx(), opnd.rb(), opnd.offset());
1924 } 1696 }
1925 1697
1926 // Add Immediate (64)
1927 void Assembler::agfi(Register r1, const Operand& opnd) {
1928 ril_form(AGFI, r1, opnd);
1929 }
1930
1931 // Add Register-Register (64<-32)
1932 void Assembler::agfr(Register r1, Register r2) { rre_form(AGFR, r1, r2); }
1933
1934 // Add Halfword Immediate (64) 1698 // Add Halfword Immediate (64)
1935 void Assembler::aghi(Register r1, const Operand& i2) { ri_form(AGHI, r1, i2); } 1699 void Assembler::aghi(Register r1, const Operand& i2) { ri_form(AGHI, r1, i2); }
1936 1700
1937 // Add Halfword Immediate (64) 1701 // Add Halfword Immediate (64)
1938 void Assembler::aghik(Register r1, Register r3, const Operand& i2) { 1702 void Assembler::aghik(Register r1, Register r3, const Operand& i2) {
1939 rie_form(AGHIK, r1, r3, i2); 1703 rie_form(AGHIK, r1, r3, i2);
1940 } 1704 }
1941 1705
1942 // Add Register (64)
1943 void Assembler::agr(Register r1, Register r2) { rre_form(AGR, r1, r2); }
1944
1945 // Add Register-Register-Register (64) 1706 // Add Register-Register-Register (64)
1946 void Assembler::agrk(Register r1, Register r2, Register r3) { 1707 void Assembler::agrk(Register r1, Register r2, Register r3) {
1947 rrf1_form(AGRK, r1, r2, r3); 1708 rrf1_form(AGRK, r1, r2, r3);
1948 } 1709 }
1949 1710
1950 // Add Storage-Imm (64) 1711 // Add Storage-Imm (64)
1951 void Assembler::agsi(const MemOperand& opnd, const Operand& imm) { 1712 void Assembler::agsi(const MemOperand& opnd, const Operand& imm) {
1952 DCHECK(is_int8(imm.imm_)); 1713 DCHECK(is_int8(imm.imm_));
1953 DCHECK(is_int20(opnd.offset())); 1714 DCHECK(is_int20(opnd.offset()));
1954 siy_form(AGSI, Operand(0xff & imm.imm_), opnd.rb(), 0xfffff & opnd.offset()); 1715 siy_form(AGSI, Operand(0xff & imm.imm_), opnd.rb(), 0xfffff & opnd.offset());
1955 } 1716 }
1956 1717
1957 // ------------------------------- 1718 // -------------------------------
1958 // 32-bit Add Logical Instructions 1719 // 32-bit Add Logical Instructions
1959 // ------------------------------- 1720 // -------------------------------
1960 // Add Logical Register-Storage (32) 1721 // Add Logical Register-Storage (32)
1961 void Assembler::al_z(Register r1, const MemOperand& opnd) { 1722 void Assembler::al_z(Register r1, const MemOperand& opnd) {
1962 rx_form(AL, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1723 rx_form(AL, r1, opnd.rx(), opnd.rb(), opnd.offset());
1963 } 1724 }
1964 1725
1965 // Add Logical Register-Storage (32) 1726 // Add Logical Register-Storage (32)
1966 void Assembler::aly(Register r1, const MemOperand& opnd) { 1727 void Assembler::aly(Register r1, const MemOperand& opnd) {
1967 rxy_form(ALY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1728 rxy_form(ALY, r1, opnd.rx(), opnd.rb(), opnd.offset());
1968 } 1729 }
1969 1730
1970 // Add Logical Immediate (32)
1971 void Assembler::alfi(Register r1, const Operand& opnd) {
1972 ril_form(ALFI, r1, opnd);
1973 }
1974
1975 // Add Logical Register-Register (32)
1976 void Assembler::alr(Register r1, Register r2) { rr_form(ALR, r1, r2); }
1977
1978 // Add Logical With Carry Register-Register (32)
1979 void Assembler::alcr(Register r1, Register r2) { rre_form(ALCR, r1, r2); }
1980
1981 // Add Logical Register-Register-Register (32) 1731 // Add Logical Register-Register-Register (32)
1982 void Assembler::alrk(Register r1, Register r2, Register r3) { 1732 void Assembler::alrk(Register r1, Register r2, Register r3) {
1983 rrf1_form(ALRK, r1, r2, r3); 1733 rrf1_form(ALRK, r1, r2, r3);
1984 } 1734 }
1985 1735
1986 // ------------------------------- 1736 // -------------------------------
1987 // 64-bit Add Logical Instructions 1737 // 64-bit Add Logical Instructions
1988 // ------------------------------- 1738 // -------------------------------
1989 // Add Logical Register-Storage (64) 1739 // Add Logical Register-Storage (64)
1990 void Assembler::alg(Register r1, const MemOperand& opnd) { 1740 void Assembler::alg(Register r1, const MemOperand& opnd) {
1991 rxy_form(ALG, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1741 rxy_form(ALG, r1, opnd.rx(), opnd.rb(), opnd.offset());
1992 } 1742 }
1993 1743
1994 // Add Logical Immediate (64)
1995 void Assembler::algfi(Register r1, const Operand& opnd) {
1996 ril_form(ALGFI, r1, opnd);
1997 }
1998
1999 // Add Logical Register-Register (64)
2000 void Assembler::algr(Register r1, Register r2) { rre_form(ALGR, r1, r2); }
2001
2002 // Add Logical Register-Register-Register (64) 1744 // Add Logical Register-Register-Register (64)
2003 void Assembler::algrk(Register r1, Register r2, Register r3) { 1745 void Assembler::algrk(Register r1, Register r2, Register r3) {
2004 rrf1_form(ALGRK, r1, r2, r3); 1746 rrf1_form(ALGRK, r1, r2, r3);
2005 } 1747 }
2006 1748
2007 // ---------------------------- 1749 // ----------------------------
2008 // 32-bit Subtract Instructions 1750 // 32-bit Subtract Instructions
2009 // ---------------------------- 1751 // ----------------------------
2010 // Subtract Register-Storage (32) 1752 // Subtract Register-Storage (32)
2011 void Assembler::s(Register r1, const MemOperand& opnd) { 1753 void Assembler::s(Register r1, const MemOperand& opnd) {
2012 rx_form(S, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1754 rx_form(S, r1, opnd.rx(), opnd.rb(), opnd.offset());
2013 } 1755 }
2014 1756
2015 // Subtract Register-Storage (32) 1757 // Subtract Register-Storage (32)
2016 void Assembler::sy(Register r1, const MemOperand& opnd) { 1758 void Assembler::sy(Register r1, const MemOperand& opnd) {
2017 rxy_form(SY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1759 rxy_form(SY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2018 } 1760 }
2019 1761
2020 // Subtract Halfword Register-Storage (32) 1762 // Subtract Halfword Register-Storage (32)
2021 void Assembler::sh(Register r1, const MemOperand& opnd) { 1763 void Assembler::sh(Register r1, const MemOperand& opnd) {
2022 rx_form(SH, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1764 rx_form(SH, r1, opnd.rx(), opnd.rb(), opnd.offset());
2023 } 1765 }
2024 1766
2025 // Subtract Halfword Register-Storage (32) 1767 // Subtract Halfword Register-Storage (32)
2026 void Assembler::shy(Register r1, const MemOperand& opnd) { 1768 void Assembler::shy(Register r1, const MemOperand& opnd) {
2027 rxy_form(SHY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1769 rxy_form(SHY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2028 } 1770 }
2029 1771
2030 // Subtract Register (32)
2031 void Assembler::sr(Register r1, Register r2) { rr_form(SR, r1, r2); }
2032
2033 // Subtract Register-Register-Register (32) 1772 // Subtract Register-Register-Register (32)
2034 void Assembler::srk(Register r1, Register r2, Register r3) { 1773 void Assembler::srk(Register r1, Register r2, Register r3) {
2035 rrf1_form(SRK, r1, r2, r3); 1774 rrf1_form(SRK, r1, r2, r3);
2036 } 1775 }
2037 1776
2038 // ---------------------------- 1777 // ----------------------------
2039 // 64-bit Subtract Instructions 1778 // 64-bit Subtract Instructions
2040 // ---------------------------- 1779 // ----------------------------
2041 // Subtract Register-Storage (64) 1780 // Subtract Register-Storage (64)
2042 void Assembler::sg(Register r1, const MemOperand& opnd) { 1781 void Assembler::sg(Register r1, const MemOperand& opnd) {
2043 rxy_form(SG, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1782 rxy_form(SG, r1, opnd.rx(), opnd.rb(), opnd.offset());
2044 } 1783 }
2045 1784
2046 // Subtract Register-Storage (64<-32) 1785 // Subtract Register-Storage (64<-32)
2047 void Assembler::sgf(Register r1, const MemOperand& opnd) { 1786 void Assembler::sgf(Register r1, const MemOperand& opnd) {
2048 rxy_form(SGF, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1787 rxy_form(SGF, r1, opnd.rx(), opnd.rb(), opnd.offset());
2049 } 1788 }
2050 1789
2051 // Subtract Register (64)
2052 void Assembler::sgr(Register r1, Register r2) { rre_form(SGR, r1, r2); }
2053
2054 // Subtract Register (64<-32)
2055 void Assembler::sgfr(Register r1, Register r2) { rre_form(SGFR, r1, r2); }
2056
2057 // Subtract Register-Register-Register (64) 1790 // Subtract Register-Register-Register (64)
2058 void Assembler::sgrk(Register r1, Register r2, Register r3) { 1791 void Assembler::sgrk(Register r1, Register r2, Register r3) {
2059 rrf1_form(SGRK, r1, r2, r3); 1792 rrf1_form(SGRK, r1, r2, r3);
2060 } 1793 }
2061 1794
2062 // ------------------------------------ 1795 // ------------------------------------
2063 // 32-bit Subtract Logical Instructions 1796 // 32-bit Subtract Logical Instructions
2064 // ------------------------------------ 1797 // ------------------------------------
2065 // Subtract Logical Register-Storage (32) 1798 // Subtract Logical Register-Storage (32)
2066 void Assembler::sl(Register r1, const MemOperand& opnd) { 1799 void Assembler::sl(Register r1, const MemOperand& opnd) {
2067 rx_form(SL, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1800 rx_form(SL, r1, opnd.rx(), opnd.rb(), opnd.offset());
2068 } 1801 }
2069 1802
2070 // Subtract Logical Register-Storage (32) 1803 // Subtract Logical Register-Storage (32)
2071 void Assembler::sly(Register r1, const MemOperand& opnd) { 1804 void Assembler::sly(Register r1, const MemOperand& opnd) {
2072 rxy_form(SLY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1805 rxy_form(SLY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2073 } 1806 }
2074 1807
2075 // Subtract Logical Register-Register (32)
2076 void Assembler::slr(Register r1, Register r2) { rr_form(SLR, r1, r2); }
2077
2078 // Subtract Logical With Borrow Register-Register (32)
2079 void Assembler::slbr(Register r1, Register r2) { rre_form(SLBR, r1, r2); }
2080
2081 // Subtract Logical Register-Register-Register (32) 1808 // Subtract Logical Register-Register-Register (32)
2082 void Assembler::slrk(Register r1, Register r2, Register r3) { 1809 void Assembler::slrk(Register r1, Register r2, Register r3) {
2083 rrf1_form(SLRK, r1, r2, r3); 1810 rrf1_form(SLRK, r1, r2, r3);
2084 } 1811 }
2085 1812
2086 // ------------------------------------ 1813 // ------------------------------------
2087 // 64-bit Subtract Logical Instructions 1814 // 64-bit Subtract Logical Instructions
2088 // ------------------------------------ 1815 // ------------------------------------
2089 // Subtract Logical Register-Storage (64) 1816 // Subtract Logical Register-Storage (64)
2090 void Assembler::slg(Register r1, const MemOperand& opnd) { 1817 void Assembler::slg(Register r1, const MemOperand& opnd) {
2091 rxy_form(SLG, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1818 rxy_form(SLG, r1, opnd.rx(), opnd.rb(), opnd.offset());
2092 } 1819 }
2093 1820
2094 // Subtract Logical Register-Register (64)
2095 void Assembler::slgr(Register r1, Register r2) { rre_form(SLGR, r1, r2); }
2096
2097 // Subtract Logical Register-Register-Register (64) 1821 // Subtract Logical Register-Register-Register (64)
2098 void Assembler::slgrk(Register r1, Register r2, Register r3) { 1822 void Assembler::slgrk(Register r1, Register r2, Register r3) {
2099 rrf1_form(SLGRK, r1, r2, r3); 1823 rrf1_form(SLGRK, r1, r2, r3);
2100 } 1824 }
2101 1825
2102 // ---------------------------- 1826 // ----------------------------
2103 // 32-bit Multiply Instructions 1827 // 32-bit Multiply Instructions
2104 // ---------------------------- 1828 // ----------------------------
2105 // Multiply Register-Storage (64<32) 1829 // Multiply Register-Storage (64<32)
2106 void Assembler::m(Register r1, const MemOperand& opnd) { 1830 void Assembler::m(Register r1, const MemOperand& opnd) {
2107 DCHECK(r1.code() % 2 == 0); 1831 DCHECK(r1.code() % 2 == 0);
2108 rx_form(M, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1832 rx_form(M, r1, opnd.rx(), opnd.rb(), opnd.offset());
2109 } 1833 }
2110 1834
2111 void Assembler::mfy(Register r1, const MemOperand& opnd) { 1835 void Assembler::mfy(Register r1, const MemOperand& opnd) {
2112 DCHECK(r1.code() % 2 == 0); 1836 DCHECK(r1.code() % 2 == 0);
2113 rxy_form(MFY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1837 rxy_form(MFY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2114 } 1838 }
2115 1839
2116 // Multiply Register (64<32)
2117 void Assembler::mr_z(Register r1, Register r2) {
2118 DCHECK(r1.code() % 2 == 0);
2119 rr_form(MR, r1, r2);
2120 }
2121
2122 // Multiply Logical Register-Storage (64<32) 1840 // Multiply Logical Register-Storage (64<32)
2123 void Assembler::ml(Register r1, const MemOperand& opnd) { 1841 void Assembler::ml(Register r1, const MemOperand& opnd) {
2124 rxy_form(ML, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1842 rxy_form(ML, r1, opnd.rx(), opnd.rb(), opnd.offset());
2125 } 1843 }
2126 1844
2127 // Multiply Logical Register (64<32)
2128 void Assembler::mlr(Register r1, Register r2) {
2129 DCHECK(r1.code() % 2 == 0);
2130 rre_form(MLR, r1, r2);
2131 }
2132
2133 // Multiply Single Register-Storage (32) 1845 // Multiply Single Register-Storage (32)
2134 void Assembler::ms(Register r1, const MemOperand& opnd) { 1846 void Assembler::ms(Register r1, const MemOperand& opnd) {
2135 rx_form(MS, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1847 rx_form(MS, r1, opnd.rx(), opnd.rb(), opnd.offset());
2136 } 1848 }
2137 1849
2138 // Multiply Single Register-Storage (32) 1850 // Multiply Single Register-Storage (32)
2139 void Assembler::msy(Register r1, const MemOperand& opnd) { 1851 void Assembler::msy(Register r1, const MemOperand& opnd) {
2140 rxy_form(MSY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1852 rxy_form(MSY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2141 } 1853 }
2142 1854
2143 // Multiply Single Immediate (32)
2144 void Assembler::msfi(Register r1, const Operand& opnd) {
2145 ril_form(MSFI, r1, opnd);
2146 }
2147
2148 // Multiply Single Register (64<32)
2149 void Assembler::msr(Register r1, Register r2) { rre_form(MSR, r1, r2); }
2150
2151 // Multiply Halfword Register-Storage (32) 1855 // Multiply Halfword Register-Storage (32)
2152 void Assembler::mh(Register r1, const MemOperand& opnd) { 1856 void Assembler::mh(Register r1, const MemOperand& opnd) {
2153 rx_form(MH, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1857 rx_form(MH, r1, opnd.rx(), opnd.rb(), opnd.offset());
2154 } 1858 }
2155 1859
2156 // Multiply Halfword Register-Storage (32) 1860 // Multiply Halfword Register-Storage (32)
2157 void Assembler::mhy(Register r1, const MemOperand& opnd) { 1861 void Assembler::mhy(Register r1, const MemOperand& opnd) {
2158 rxy_form(MHY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1862 rxy_form(MHY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2159 } 1863 }
2160 1864
2161 // Multiply Halfword Immediate (32) 1865 // Multiply Halfword Immediate (32)
2162 void Assembler::mhi(Register r1, const Operand& opnd) { 1866 void Assembler::mhi(Register r1, const Operand& opnd) {
2163 ri_form(MHI, r1, opnd); 1867 ri_form(MHI, r1, opnd);
2164 } 1868 }
2165 1869
2166 // ---------------------------- 1870 // ----------------------------
2167 // 64-bit Multiply Instructions 1871 // 64-bit Multiply Instructions
2168 // ---------------------------- 1872 // ----------------------------
2169 // Multiply Logical Register-Storage (128<64) 1873 // Multiply Logical Register-Storage (128<64)
2170 void Assembler::mlg(Register r1, const MemOperand& opnd) { 1874 void Assembler::mlg(Register r1, const MemOperand& opnd) {
2171 rxy_form(MLG, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1875 rxy_form(MLG, r1, opnd.rx(), opnd.rb(), opnd.offset());
2172 } 1876 }
2173 1877
2174 // Multiply Register (128<64)
2175 void Assembler::mlgr(Register r1, Register r2) { rre_form(MLGR, r1, r2); }
2176
2177 // Multiply Halfword Immediate (64) 1878 // Multiply Halfword Immediate (64)
2178 void Assembler::mghi(Register r1, const Operand& opnd) { 1879 void Assembler::mghi(Register r1, const Operand& opnd) {
2179 ri_form(MGHI, r1, opnd); 1880 ri_form(MGHI, r1, opnd);
2180 } 1881 }
2181 1882
2182 // Multiply Single Immediate (64)
2183 void Assembler::msgfi(Register r1, const Operand& opnd) {
2184 ril_form(MSGFI, r1, opnd);
2185 }
2186
2187 // Multiply Single Register-Storage (64) 1883 // Multiply Single Register-Storage (64)
2188 void Assembler::msg(Register r1, const MemOperand& opnd) { 1884 void Assembler::msg(Register r1, const MemOperand& opnd) {
2189 rxy_form(MSG, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1885 rxy_form(MSG, r1, opnd.rx(), opnd.rb(), opnd.offset());
2190 } 1886 }
2191 1887
2192 // Multiply Single Register-Register (64)
2193 void Assembler::msgr(Register r1, Register r2) { rre_form(MSGR, r1, r2); }
2194
2195 // -------------------------- 1888 // --------------------------
2196 // 32-bit Divide Instructions 1889 // 32-bit Divide Instructions
2197 // -------------------------- 1890 // --------------------------
2198 // Divide Register-Storage (32<-64) 1891 // Divide Register-Storage (32<-64)
2199 void Assembler::d(Register r1, const MemOperand& opnd) { 1892 void Assembler::d(Register r1, const MemOperand& opnd) {
2200 rx_form(D, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1893 rx_form(D, r1, opnd.rx(), opnd.rb(), opnd.offset());
2201 } 1894 }
2202 1895
2203 // Divide Register (32<-64)
2204 void Assembler::dr(Register r1, Register r2) {
2205 DCHECK(r1.code() % 2 == 0);
2206 rr_form(DR, r1, r2);
2207 }
2208
2209 // Divide Logical Register-Storage (32<-64) 1896 // Divide Logical Register-Storage (32<-64)
2210 void Assembler::dl(Register r1, const MemOperand& opnd) { 1897 void Assembler::dl(Register r1, const MemOperand& opnd) {
2211 rx_form(DL, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1898 rx_form(DL, r1, opnd.rx(), opnd.rb(), opnd.offset());
2212 } 1899 }
2213 1900
2214 // Divide Logical Register (32<-64)
2215 void Assembler::dlr(Register r1, Register r2) { rre_form(DLR, r1, r2); }
2216
2217 // --------------------------
2218 // 64-bit Divide Instructions
2219 // --------------------------
2220 // Divide Logical Register (64<-128)
2221 void Assembler::dlgr(Register r1, Register r2) { rre_form(DLGR, r1, r2); }
2222
2223 // Divide Single Register (64<-32)
2224 void Assembler::dsgr(Register r1, Register r2) { rre_form(DSGR, r1, r2); }
2225
2226 // -------------------- 1901 // --------------------
2227 // Bitwise Instructions 1902 // Bitwise Instructions
2228 // -------------------- 1903 // --------------------
2229 // AND Register-Storage (32) 1904 // AND Register-Storage (32)
2230 void Assembler::n(Register r1, const MemOperand& opnd) { 1905 void Assembler::n(Register r1, const MemOperand& opnd) {
2231 rx_form(N, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1906 rx_form(N, r1, opnd.rx(), opnd.rb(), opnd.offset());
2232 } 1907 }
2233 1908
2234 // AND Register-Storage (32) 1909 // AND Register-Storage (32)
2235 void Assembler::ny(Register r1, const MemOperand& opnd) { 1910 void Assembler::ny(Register r1, const MemOperand& opnd) {
2236 rxy_form(NY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1911 rxy_form(NY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2237 } 1912 }
2238 1913
2239 // AND Register (32)
2240 void Assembler::nr(Register r1, Register r2) { rr_form(NR, r1, r2); }
2241
2242 // AND Register-Register-Register (32) 1914 // AND Register-Register-Register (32)
2243 void Assembler::nrk(Register r1, Register r2, Register r3) { 1915 void Assembler::nrk(Register r1, Register r2, Register r3) {
2244 rrf1_form(NRK, r1, r2, r3); 1916 rrf1_form(NRK, r1, r2, r3);
2245 } 1917 }
2246 1918
2247 // AND Register-Storage (64) 1919 // AND Register-Storage (64)
2248 void Assembler::ng(Register r1, const MemOperand& opnd) { 1920 void Assembler::ng(Register r1, const MemOperand& opnd) {
2249 rxy_form(NG, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1921 rxy_form(NG, r1, opnd.rx(), opnd.rb(), opnd.offset());
2250 } 1922 }
2251 1923
2252 // AND Register (64)
2253 void Assembler::ngr(Register r1, Register r2) { rre_form(NGR, r1, r2); }
2254
2255 // AND Register-Register-Register (64) 1924 // AND Register-Register-Register (64)
2256 void Assembler::ngrk(Register r1, Register r2, Register r3) { 1925 void Assembler::ngrk(Register r1, Register r2, Register r3) {
2257 rrf1_form(NGRK, r1, r2, r3); 1926 rrf1_form(NGRK, r1, r2, r3);
2258 } 1927 }
2259 1928
2260 // OR Register-Storage (32) 1929 // OR Register-Storage (32)
2261 void Assembler::o(Register r1, const MemOperand& opnd) { 1930 void Assembler::o(Register r1, const MemOperand& opnd) {
2262 rx_form(O, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1931 rx_form(O, r1, opnd.rx(), opnd.rb(), opnd.offset());
2263 } 1932 }
2264 1933
2265 // OR Register-Storage (32) 1934 // OR Register-Storage (32)
2266 void Assembler::oy(Register r1, const MemOperand& opnd) { 1935 void Assembler::oy(Register r1, const MemOperand& opnd) {
2267 rxy_form(OY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1936 rxy_form(OY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2268 } 1937 }
2269 1938
2270 // OR Register (32)
2271 void Assembler::or_z(Register r1, Register r2) { rr_form(OR, r1, r2); }
2272
2273 // OR Register-Register-Register (32) 1939 // OR Register-Register-Register (32)
2274 void Assembler::ork(Register r1, Register r2, Register r3) { 1940 void Assembler::ork(Register r1, Register r2, Register r3) {
2275 rrf1_form(ORK, r1, r2, r3); 1941 rrf1_form(ORK, r1, r2, r3);
2276 } 1942 }
2277 1943
2278 // OR Register-Storage (64) 1944 // OR Register-Storage (64)
2279 void Assembler::og(Register r1, const MemOperand& opnd) { 1945 void Assembler::og(Register r1, const MemOperand& opnd) {
2280 rxy_form(OG, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1946 rxy_form(OG, r1, opnd.rx(), opnd.rb(), opnd.offset());
2281 } 1947 }
2282 1948
2283 // OR Register (64)
2284 void Assembler::ogr(Register r1, Register r2) { rre_form(OGR, r1, r2); }
2285
2286 // OR Register-Register-Register (64) 1949 // OR Register-Register-Register (64)
2287 void Assembler::ogrk(Register r1, Register r2, Register r3) { 1950 void Assembler::ogrk(Register r1, Register r2, Register r3) {
2288 rrf1_form(OGRK, r1, r2, r3); 1951 rrf1_form(OGRK, r1, r2, r3);
2289 } 1952 }
2290 1953
2291 // XOR Register-Storage (32) 1954 // XOR Register-Storage (32)
2292 void Assembler::x(Register r1, const MemOperand& opnd) { 1955 void Assembler::x(Register r1, const MemOperand& opnd) {
2293 rx_form(X, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1956 rx_form(X, r1, opnd.rx(), opnd.rb(), opnd.offset());
2294 } 1957 }
2295 1958
2296 // XOR Register-Storage (32) 1959 // XOR Register-Storage (32)
2297 void Assembler::xy(Register r1, const MemOperand& opnd) { 1960 void Assembler::xy(Register r1, const MemOperand& opnd) {
2298 rxy_form(XY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1961 rxy_form(XY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2299 } 1962 }
2300 1963
2301 // XOR Register (32)
2302 void Assembler::xr(Register r1, Register r2) { rr_form(XR, r1, r2); }
2303
2304 // XOR Register-Register-Register (32) 1964 // XOR Register-Register-Register (32)
2305 void Assembler::xrk(Register r1, Register r2, Register r3) { 1965 void Assembler::xrk(Register r1, Register r2, Register r3) {
2306 rrf1_form(XRK, r1, r2, r3); 1966 rrf1_form(XRK, r1, r2, r3);
2307 } 1967 }
2308 1968
2309 // XOR Register-Storage (64) 1969 // XOR Register-Storage (64)
2310 void Assembler::xg(Register r1, const MemOperand& opnd) { 1970 void Assembler::xg(Register r1, const MemOperand& opnd) {
2311 rxy_form(XG, r1, opnd.rx(), opnd.rb(), opnd.offset()); 1971 rxy_form(XG, r1, opnd.rx(), opnd.rb(), opnd.offset());
2312 } 1972 }
2313 1973
2314 // XOR Register (64)
2315 void Assembler::xgr(Register r1, Register r2) { rre_form(XGR, r1, r2); }
2316
2317 // XOR Register-Register-Register (64) 1974 // XOR Register-Register-Register (64)
2318 void Assembler::xgrk(Register r1, Register r2, Register r3) { 1975 void Assembler::xgrk(Register r1, Register r2, Register r3) {
2319 rrf1_form(XGRK, r1, r2, r3); 1976 rrf1_form(XGRK, r1, r2, r3);
2320 } 1977 }
2321 1978
2322 // XOR Storage-Storage 1979 // XOR Storage-Storage
2323 void Assembler::xc(const MemOperand& opnd1, const MemOperand& opnd2, 1980 void Assembler::xc(const MemOperand& opnd1, const MemOperand& opnd2,
2324 Length length) { 1981 Length length) {
2325 ss_form(XC, length - 1, opnd1.getBaseRegister(), opnd1.getDisplacement(), 1982 ss_form(XC, length - 1, opnd1.getBaseRegister(), opnd1.getDisplacement(),
2326 opnd2.getBaseRegister(), opnd2.getDisplacement()); 1983 opnd2.getBaseRegister(), opnd2.getDisplacement());
2327 } 1984 }
2328 1985
2329 // -------------------------------------------
2330 // Bitwise GPR <-> FPR Conversion Instructions
2331 // -------------------------------------------
2332 // Load GR from FPR (64 <- L)
2333 void Assembler::lgdr(Register r1, DoubleRegister f2) {
2334 rre_form(LGDR, r1, Register::from_code(f2.code()));
2335 }
2336
2337 // Load FPR from FR (L <- 64)
2338 void Assembler::ldgr(DoubleRegister f1, Register r2) {
2339 rre_form(LDGR, Register::from_code(f1.code()), r2);
2340 }
2341
2342 void Assembler::EnsureSpaceFor(int space_needed) { 1986 void Assembler::EnsureSpaceFor(int space_needed) {
2343 if (buffer_space() <= (kGap + space_needed)) { 1987 if (buffer_space() <= (kGap + space_needed)) {
2344 GrowBuffer(space_needed); 1988 GrowBuffer(space_needed);
2345 } 1989 }
2346 } 1990 }
2347 1991
2348 // Rotate Left Single Logical (32) 1992 // Rotate Left Single Logical (32)
2349 void Assembler::rll(Register r1, Register r3, Register opnd) { 1993 void Assembler::rll(Register r1, Register r3, Register opnd) {
2350 DCHECK(!opnd.is(r0)); 1994 DCHECK(!opnd.is(r0));
2351 rsy_form(RLL, r1, r3, opnd, 0); 1995 rsy_form(RLL, r1, r3, opnd, 0);
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
2546 2190
2547 int32_t target_index = emit_code_target(target, rmode, ast_id); 2191 int32_t target_index = emit_code_target(target, rmode, ast_id);
2548 brasl(r14, Operand(target_index)); 2192 brasl(r14, Operand(target_index));
2549 } 2193 }
2550 2194
2551 void Assembler::jump(Handle<Code> target, RelocInfo::Mode rmode, 2195 void Assembler::jump(Handle<Code> target, RelocInfo::Mode rmode,
2552 Condition cond) { 2196 Condition cond) {
2553 EnsureSpace ensure_space(this); 2197 EnsureSpace ensure_space(this);
2554 2198
2555 int32_t target_index = emit_code_target(target, rmode); 2199 int32_t target_index = emit_code_target(target, rmode);
2556 brcl(cond, Operand(target_index), true); 2200 brcl(cond, Operand(target_index));
2557 } 2201 }
2558 2202
2559 // Store (32) 2203 // Store (32)
2560 void Assembler::st(Register src, const MemOperand& dst) { 2204 void Assembler::st(Register src, const MemOperand& dst) {
2561 rx_form(ST, src, dst.rx(), dst.rb(), dst.offset()); 2205 rx_form(ST, src, dst.rx(), dst.rb(), dst.offset());
2562 } 2206 }
2563 2207
2564 // Store (32) 2208 // Store (32)
2565 void Assembler::sty(Register src, const MemOperand& dst) { 2209 void Assembler::sty(Register src, const MemOperand& dst) {
2566 rxy_form(STY, src, dst.rx(), dst.rb(), dst.offset()); 2210 rxy_form(STY, src, dst.rx(), dst.rb(), dst.offset());
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2620 // Insert Character 2264 // Insert Character
2621 void Assembler::ic_z(Register r1, const MemOperand& opnd) { 2265 void Assembler::ic_z(Register r1, const MemOperand& opnd) {
2622 rx_form(IC_z, r1, opnd.rx(), opnd.rb(), opnd.offset()); 2266 rx_form(IC_z, r1, opnd.rx(), opnd.rb(), opnd.offset());
2623 } 2267 }
2624 2268
2625 // Insert Character 2269 // Insert Character
2626 void Assembler::icy(Register r1, const MemOperand& opnd) { 2270 void Assembler::icy(Register r1, const MemOperand& opnd) {
2627 rxy_form(ICY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 2271 rxy_form(ICY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2628 } 2272 }
2629 2273
2630 // Insert Immediate (High)
2631 void Assembler::iihf(Register r1, const Operand& opnd) {
2632 ril_form(IIHF, r1, opnd);
2633 }
2634
2635 // Insert Immediate (low)
2636 void Assembler::iilf(Register r1, const Operand& opnd) {
2637 ril_form(IILF, r1, opnd);
2638 }
2639
2640 // Insert Immediate (high high) 2274 // Insert Immediate (high high)
2641 void Assembler::iihh(Register r1, const Operand& opnd) { 2275 void Assembler::iihh(Register r1, const Operand& opnd) {
2642 ri_form(IIHH, r1, opnd); 2276 ri_form(IIHH, r1, opnd);
2643 } 2277 }
2644 2278
2645 // Insert Immediate (high low) 2279 // Insert Immediate (high low)
2646 void Assembler::iihl(Register r1, const Operand& opnd) { 2280 void Assembler::iihl(Register r1, const Operand& opnd) {
2647 ri_form(IIHL, r1, opnd); 2281 ri_form(IIHL, r1, opnd);
2648 } 2282 }
2649 2283
2650 // Insert Immediate (low high) 2284 // Insert Immediate (low high)
2651 void Assembler::iilh(Register r1, const Operand& opnd) { 2285 void Assembler::iilh(Register r1, const Operand& opnd) {
2652 ri_form(IILH, r1, opnd); 2286 ri_form(IILH, r1, opnd);
2653 } 2287 }
2654 2288
2655 // Insert Immediate (low low) 2289 // Insert Immediate (low low)
2656 void Assembler::iill(Register r1, const Operand& opnd) { 2290 void Assembler::iill(Register r1, const Operand& opnd) {
2657 ri_form(IILL, r1, opnd); 2291 ri_form(IILL, r1, opnd);
2658 } 2292 }
2659 2293
2660 // Load Immediate 32->64
2661 void Assembler::lgfi(Register r1, const Operand& opnd) {
2662 ril_form(LGFI, r1, opnd);
2663 }
2664
2665 // GPR <-> FPR Instructions 2294 // GPR <-> FPR Instructions
2666 2295
2667 // Floating point instructions 2296 // Floating point instructions
2668 // 2297 //
2669 // Load zero Register (64)
2670 void Assembler::lzdr(DoubleRegister r1) {
2671 rre_form(LZDR, Register::from_code(r1.code()), Register::from_code(0));
2672 }
2673
2674 // Add Register-Register (LB)
2675 void Assembler::aebr(DoubleRegister r1, DoubleRegister r2) {
2676 rre_form(AEBR, Register::from_code(r1.code()),
2677 Register::from_code(r2.code()));
2678 }
2679
2680 // Add Register-Storage (LB) 2298 // Add Register-Storage (LB)
2681 void Assembler::adb(DoubleRegister r1, const MemOperand& opnd) { 2299 void Assembler::adb(DoubleRegister r1, const MemOperand& opnd) {
2682 rxe_form(ADB, Register::from_code(r1.code()), opnd.rx(), opnd.rb(), 2300 rxe_form(ADB, Register::from_code(r1.code()), opnd.rx(), opnd.rb(),
2683 opnd.offset()); 2301 opnd.offset());
2684 } 2302 }
2685 2303
2686 // Add Register-Register (LB)
2687 void Assembler::adbr(DoubleRegister r1, DoubleRegister r2) {
2688 rre_form(ADBR, Register::from_code(r1.code()),
2689 Register::from_code(r2.code()));
2690 }
2691
2692 // Compare Register-Register (LB)
2693 void Assembler::cebr(DoubleRegister r1, DoubleRegister r2) {
2694 rre_form(CEBR, Register::from_code(r1.code()),
2695 Register::from_code(r2.code()));
2696 }
2697
2698 // Compare Register-Storage (LB) 2304 // Compare Register-Storage (LB)
2699 void Assembler::cdb(DoubleRegister r1, const MemOperand& opnd) { 2305 void Assembler::cdb(DoubleRegister r1, const MemOperand& opnd) {
2700 rx_form(CD, Register::from_code(r1.code()), opnd.rx(), opnd.rb(), 2306 rx_form(CD, Register::from_code(r1.code()), opnd.rx(), opnd.rb(),
2701 opnd.offset()); 2307 opnd.offset());
2702 } 2308 }
2703 2309
2704 // Compare Register-Register (LB)
2705 void Assembler::cdbr(DoubleRegister r1, DoubleRegister r2) {
2706 rre_form(CDBR, Register::from_code(r1.code()),
2707 Register::from_code(r2.code()));
2708 }
2709
2710 // Divide Register-Register (LB)
2711 void Assembler::debr(DoubleRegister r1, DoubleRegister r2) {
2712 rre_form(DEBR, Register::from_code(r1.code()),
2713 Register::from_code(r2.code()));
2714 }
2715
2716 // Divide Register-Storage (LB) 2310 // Divide Register-Storage (LB)
2717 void Assembler::ddb(DoubleRegister r1, const MemOperand& opnd) { 2311 void Assembler::ddb(DoubleRegister r1, const MemOperand& opnd) {
2718 rxe_form(DDB, Register::from_code(r1.code()), opnd.rx(), opnd.rb(), 2312 rxe_form(DDB, Register::from_code(r1.code()), opnd.rx(), opnd.rb(),
2719 opnd.offset()); 2313 opnd.offset());
2720 } 2314 }
2721 2315
2722 // Divide Register-Register (LB)
2723 void Assembler::ddbr(DoubleRegister r1, DoubleRegister r2) {
2724 rre_form(DDBR, Register::from_code(r1.code()),
2725 Register::from_code(r2.code()));
2726 }
2727
2728 // Multiply Register-Register (LB)
2729 void Assembler::meebr(DoubleRegister r1, DoubleRegister r2) {
2730 rre_form(MEEBR, Register::from_code(r1.code()),
2731 Register::from_code(r2.code()));
2732 }
2733
2734 // Multiply Register-Storage (LB) 2316 // Multiply Register-Storage (LB)
2735 void Assembler::mdb(DoubleRegister r1, const MemOperand& opnd) { 2317 void Assembler::mdb(DoubleRegister r1, const MemOperand& opnd) {
2736 rxe_form(MDB, Register::from_code(r1.code()), opnd.rb(), opnd.rx(), 2318 rxe_form(MDB, Register::from_code(r1.code()), opnd.rb(), opnd.rx(),
2737 opnd.offset()); 2319 opnd.offset());
2738 } 2320 }
2739 2321
2740 // Multiply Register-Register (LB)
2741 void Assembler::mdbr(DoubleRegister r1, DoubleRegister r2) {
2742 rre_form(MDBR, Register::from_code(r1.code()),
2743 Register::from_code(r2.code()));
2744 }
2745
2746 // Subtract Register-Register (LB)
2747 void Assembler::sebr(DoubleRegister r1, DoubleRegister r2) {
2748 rre_form(SEBR, Register::from_code(r1.code()),
2749 Register::from_code(r2.code()));
2750 }
2751
2752 // Subtract Register-Storage (LB) 2322 // Subtract Register-Storage (LB)
2753 void Assembler::sdb(DoubleRegister r1, const MemOperand& opnd) { 2323 void Assembler::sdb(DoubleRegister r1, const MemOperand& opnd) {
2754 rxe_form(SDB, Register::from_code(r1.code()), opnd.rx(), opnd.rb(), 2324 rxe_form(SDB, Register::from_code(r1.code()), opnd.rx(), opnd.rb(),
2755 opnd.offset()); 2325 opnd.offset());
2756 } 2326 }
2757 2327
2758 // Subtract Register-Register (LB)
2759 void Assembler::sdbr(DoubleRegister r1, DoubleRegister r2) {
2760 rre_form(SDBR, Register::from_code(r1.code()),
2761 Register::from_code(r2.code()));
2762 }
2763
2764 // Square Root (LB) 2328 // Square Root (LB)
2765 void Assembler::sqdb(DoubleRegister r1, const MemOperand& opnd) { 2329 void Assembler::sqdb(DoubleRegister r1, const MemOperand& opnd) {
2766 rxe_form(SQDB, Register::from_code(r1.code()), opnd.rx(), opnd.rb(), 2330 rxe_form(SQDB, Register::from_code(r1.code()), opnd.rx(), opnd.rb(),
2767 opnd.offset()); 2331 opnd.offset());
2768 } 2332 }
2769 2333
2770 // Square Root Register-Register (LB)
2771 void Assembler::sqebr(DoubleRegister r1, DoubleRegister r2) {
2772 rre_form(SQEBR, Register::from_code(r1.code()),
2773 Register::from_code(r2.code()));
2774 }
2775
2776 // Square Root Register-Register (LB)
2777 void Assembler::sqdbr(DoubleRegister r1, DoubleRegister r2) {
2778 rre_form(SQDBR, Register::from_code(r1.code()),
2779 Register::from_code(r2.code()));
2780 }
2781
2782 // Load Rounded (double -> float)
2783 void Assembler::ledbr(DoubleRegister r1, DoubleRegister r2) {
2784 rre_form(LEDBR, Register::from_code(r1.code()),
2785 Register::from_code(r2.code()));
2786 }
2787
2788 // Load Lengthen (float -> double)
2789 void Assembler::ldebr(DoubleRegister r1, DoubleRegister r2) {
2790 rre_form(LDEBR, Register::from_code(r1.code()),
2791 Register::from_code(r2.code()));
2792 }
2793
2794 // Load Complement Register-Register (LB)
2795 void Assembler::lcdbr(DoubleRegister r1, DoubleRegister r2) {
2796 rre_form(LCDBR, Register::from_code(r1.code()),
2797 Register::from_code(r2.code()));
2798 }
2799
2800 // Load Complement Register-Register (LB)
2801 void Assembler::lcebr(DoubleRegister r1, DoubleRegister r2) {
2802 rre_form(LCEBR, Register::from_code(r1.code()),
2803 Register::from_code(r2.code()));
2804 }
2805
2806 // Load Positive Register-Register (LB)
2807 void Assembler::lpebr(DoubleRegister r1, DoubleRegister r2) {
2808 rre_form(LPEBR, Register::from_code(r1.code()),
2809 Register::from_code(r2.code()));
2810 }
2811
2812 // Load Positive Register-Register (LB)
2813 void Assembler::lpdbr(DoubleRegister r1, DoubleRegister r2) {
2814 rre_form(LPDBR, Register::from_code(r1.code()),
2815 Register::from_code(r2.code()));
2816 }
2817
2818 // Store Double (64) 2334 // Store Double (64)
2819 void Assembler::std(DoubleRegister r1, const MemOperand& opnd) { 2335 void Assembler::std(DoubleRegister r1, const MemOperand& opnd) {
2820 rx_form(STD, r1, opnd.rx(), opnd.rb(), opnd.offset()); 2336 rx_form(STD, r1, opnd.rx(), opnd.rb(), opnd.offset());
2821 } 2337 }
2822 2338
2823 // Store Double (64) 2339 // Store Double (64)
2824 void Assembler::stdy(DoubleRegister r1, const MemOperand& opnd) { 2340 void Assembler::stdy(DoubleRegister r1, const MemOperand& opnd) {
2825 DCHECK(!(opnd.rb().code() == 15 && opnd.offset() < 0)); 2341 DCHECK(!(opnd.rb().code() == 15 && opnd.offset() < 0));
2826 rxy_form(STDY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 2342 rxy_form(STDY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2827 } 2343 }
(...skipping 26 matching lines...) Expand all
2854 DCHECK(is_uint12(opnd.offset())); 2370 DCHECK(is_uint12(opnd.offset()));
2855 rx_form(LE, r1, opnd.rx(), opnd.rb(), opnd.offset() & 0xfff); 2371 rx_form(LE, r1, opnd.rx(), opnd.rb(), opnd.offset() & 0xfff);
2856 } 2372 }
2857 2373
2858 // Load Float (32) 2374 // Load Float (32)
2859 void Assembler::ley(DoubleRegister r1, const MemOperand& opnd) { 2375 void Assembler::ley(DoubleRegister r1, const MemOperand& opnd) {
2860 DCHECK(is_int20(opnd.offset())); 2376 DCHECK(is_int20(opnd.offset()));
2861 rxy_form(LEY, r1, opnd.rx(), opnd.rb(), opnd.offset()); 2377 rxy_form(LEY, r1, opnd.rx(), opnd.rb(), opnd.offset());
2862 } 2378 }
2863 2379
2864 // Load Double Register-Register (64)
2865 void Assembler::ldr(DoubleRegister r1, DoubleRegister r2) {
2866 rr_form(LDR, r1, r2);
2867 }
2868
2869 // Load And Test Register-Register (L)
2870 void Assembler::ltebr(DoubleRegister r1, DoubleRegister r2) {
2871 rre_form(LTEBR, r1, r2);
2872 }
2873
2874 // Load And Test Register-Register (L)
2875 void Assembler::ltdbr(DoubleRegister r1, DoubleRegister r2) {
2876 rre_form(LTDBR, r1, r2);
2877 }
2878
2879 // Convert to Fixed point (64<-S) 2380 // Convert to Fixed point (64<-S)
2880 void Assembler::cgebr(Condition m, Register r1, DoubleRegister r2) { 2381 void Assembler::cgebr(Condition m, Register r1, DoubleRegister r2) {
2881 rrfe_form(CGEBR, m, Condition(0), r1, Register::from_code(r2.code())); 2382 rrfe_form(CGEBR, m, Condition(0), r1, Register::from_code(r2.code()));
2882 } 2383 }
2883 2384
2884 // Convert to Fixed point (64<-L) 2385 // Convert to Fixed point (64<-L)
2885 void Assembler::cgdbr(Condition m, Register r1, DoubleRegister r2) { 2386 void Assembler::cgdbr(Condition m, Register r1, DoubleRegister r2) {
2886 rrfe_form(CGDBR, m, Condition(0), r1, Register::from_code(r2.code())); 2387 rrfe_form(CGDBR, m, Condition(0), r1, Register::from_code(r2.code()));
2887 } 2388 }
2888 2389
2889 // Convert to Fixed point (32<-L) 2390 // Convert to Fixed point (32<-L)
2890 void Assembler::cfdbr(Condition m, Register r1, DoubleRegister r2) { 2391 void Assembler::cfdbr(Condition m, Register r1, DoubleRegister r2) {
2891 rrfe_form(CFDBR, m, Condition(0), r1, Register::from_code(r2.code())); 2392 rrfe_form(CFDBR, m, Condition(0), r1, Register::from_code(r2.code()));
2892 } 2393 }
2893 2394
2894 // Convert from Fixed point (L<-64)
2895 void Assembler::cegbr(DoubleRegister r1, Register r2) {
2896 rre_form(CEGBR, Register::from_code(r1.code()), r2);
2897 }
2898
2899 // Convert from Fixed point (L<-64)
2900 void Assembler::cdgbr(DoubleRegister r1, Register r2) {
2901 rre_form(CDGBR, Register::from_code(r1.code()), r2);
2902 }
2903
2904 // Convert from Fixed point (L<-32)
2905 void Assembler::cdfbr(DoubleRegister r1, Register r2) {
2906 rre_form(CDFBR, Register::from_code(r1.code()), r2);
2907 }
2908
2909 // Convert to Fixed Logical (64<-L) 2395 // Convert to Fixed Logical (64<-L)
2910 void Assembler::clgdbr(Condition m3, Condition m4, Register r1, 2396 void Assembler::clgdbr(Condition m3, Condition m4, Register r1,
2911 DoubleRegister r2) { 2397 DoubleRegister r2) {
2912 DCHECK_EQ(m4, Condition(0)); 2398 DCHECK_EQ(m4, Condition(0));
2913 rrfe_form(CLGDBR, m3, m4, r1, Register::from_code(r2.code())); 2399 rrfe_form(CLGDBR, m3, m4, r1, Register::from_code(r2.code()));
2914 } 2400 }
2915 2401
2916 // Convert to Fixed Logical (64<-F32) 2402 // Convert to Fixed Logical (64<-F32)
2917 void Assembler::clgebr(Condition m3, Condition m4, Register r1, 2403 void Assembler::clgebr(Condition m3, Condition m4, Register r1,
2918 DoubleRegister r2) { 2404 DoubleRegister r2) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2987 // Load FP Integer 2473 // Load FP Integer
2988 void Assembler::fiebra(DoubleRegister d1, DoubleRegister d2, FIDBRA_MASK3 m3) { 2474 void Assembler::fiebra(DoubleRegister d1, DoubleRegister d2, FIDBRA_MASK3 m3) {
2989 rrf2_form(FIEBRA << 16 | m3 * B12 | d1.code() * B4 | d2.code()); 2475 rrf2_form(FIEBRA << 16 | m3 * B12 | d1.code() * B4 | d2.code());
2990 } 2476 }
2991 2477
2992 // Load FP Integer 2478 // Load FP Integer
2993 void Assembler::fidbra(DoubleRegister d1, DoubleRegister d2, FIDBRA_MASK3 m3) { 2479 void Assembler::fidbra(DoubleRegister d1, DoubleRegister d2, FIDBRA_MASK3 m3) {
2994 rrf2_form(FIDBRA << 16 | m3 * B12 | d1.code() * B4 | d2.code()); 2480 rrf2_form(FIDBRA << 16 | m3 * B12 | d1.code() * B4 | d2.code());
2995 } 2481 }
2996 2482
2997 // Multiply and Add - MADBR R1, R3, R2
2998 // R1 = R3 * R2 + R1
2999 void Assembler::madbr(DoubleRegister d1, DoubleRegister d3, DoubleRegister d2) {
3000 rrd_form(MADBR, Register::from_code(d1.code()),
3001 Register::from_code(d3.code()), Register::from_code(d2.code()));
3002 }
3003
3004 // Multiply and Subtract - MSDBR R1, R3, R2
3005 // R1 = R3 * R2 - R1
3006 void Assembler::msdbr(DoubleRegister d1, DoubleRegister d3, DoubleRegister d2) {
3007 rrd_form(MSDBR, Register::from_code(d1.code()),
3008 Register::from_code(d3.code()), Register::from_code(d2.code()));
3009 }
3010
3011 // end of S390instructions 2483 // end of S390instructions
3012 2484
3013 bool Assembler::IsNop(SixByteInstr instr, int type) { 2485 bool Assembler::IsNop(SixByteInstr instr, int type) {
3014 DCHECK((0 == type) || (DEBUG_BREAK_NOP == type)); 2486 DCHECK((0 == type) || (DEBUG_BREAK_NOP == type));
3015 if (DEBUG_BREAK_NOP == type) { 2487 if (DEBUG_BREAK_NOP == type) {
3016 return ((instr & 0xffffffff) == 0xa53b0000); // oill r3, 0 2488 return ((instr & 0xffffffff) == 0xa53b0000); // oill r3, 0
3017 } 2489 }
3018 return ((instr & 0xffff) == 0x1800); // lr r0,r0 2490 return ((instr & 0xffff) == 0x1800); // lr r0,r0
3019 } 2491 }
3020 2492
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
3149 SKIP_ICACHE_FLUSH); 2621 SKIP_ICACHE_FLUSH);
3150 } 2622 }
3151 2623
3152 reloc_info_writer.Write(&rinfo); 2624 reloc_info_writer.Write(&rinfo);
3153 } 2625 }
3154 } 2626 }
3155 2627
3156 } // namespace internal 2628 } // namespace internal
3157 } // namespace v8 2629 } // namespace v8
3158 #endif // V8_TARGET_ARCH_S390 2630 #endif // V8_TARGET_ARCH_S390
OLDNEW
« no previous file with comments | « src/s390/assembler-s390.h ('k') | src/s390/constants-s390.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698