| OLD | NEW |
| 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 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 // FIXED_SEQUENCE | 545 // FIXED_SEQUENCE |
| 546 static constexpr int kDebugBreakSlotInstructions = | 546 static constexpr int kDebugBreakSlotInstructions = |
| 547 kMovInstructionsNoConstantPool + 2; | 547 kMovInstructionsNoConstantPool + 2; |
| 548 static constexpr int kDebugBreakSlotLength = | 548 static constexpr int kDebugBreakSlotLength = |
| 549 kDebugBreakSlotInstructions * kInstrSize; | 549 kDebugBreakSlotInstructions * kInstrSize; |
| 550 | 550 |
| 551 static inline int encode_crbit(const CRegister& cr, enum CRBit crbit) { | 551 static inline int encode_crbit(const CRegister& cr, enum CRBit crbit) { |
| 552 return ((cr.code() * CRWIDTH) + crbit); | 552 return ((cr.code() * CRWIDTH) + crbit); |
| 553 } | 553 } |
| 554 | 554 |
| 555 #define DECLARE_PPC_X_INSTRUCTIONS_A_FORM(name, instr_name, instr_value) \ |
| 556 inline void name(const Register rt, const Register ra, \ |
| 557 const Register rb, const RCBit rc = LeaveRC) { \ |
| 558 x_form(instr_name, rt, ra, rb, rc); \ |
| 559 } |
| 560 |
| 561 #define DECLARE_PPC_X_INSTRUCTIONS_B_FORM(name, instr_name, instr_value) \ |
| 562 inline void name(const Register ra, const Register rs, \ |
| 563 const Register rb, const RCBit rc = LeaveRC) { \ |
| 564 x_form(instr_name, rs, ra, rb, rc); \ |
| 565 } |
| 566 |
| 567 #define DECLARE_PPC_X_INSTRUCTIONS_C_FORM(name, instr_name, instr_value) \ |
| 568 inline void name(const Register dst, const Register src, \ |
| 569 const RCBit rc = LeaveRC) { \ |
| 570 x_form(instr_name, src, dst, r0, rc); \ |
| 571 } |
| 572 |
| 573 #define DECLARE_PPC_X_INSTRUCTIONS_D_FORM(name, instr_name, instr_value) \ |
| 574 template <class R> \ |
| 575 inline void name(const R rt, const Register ra, \ |
| 576 const Register rb, const RCBit rc = LeaveRC) { \ |
| 577 DCHECK(!ra.is(r0)); \ |
| 578 x_form(instr_name, rt.code(), ra.code(), rb.code(), rc); \ |
| 579 } \ |
| 580 template <class R> \ |
| 581 inline void name(const R dst, const MemOperand& src) { \ |
| 582 name(dst, src.ra(), src.rb()); \ |
| 583 } |
| 584 |
| 585 #define DECLARE_PPC_X_INSTRUCTIONS_E_FORM(name, instr_name, instr_value) \ |
| 586 inline void name(const Register dst, const Register src, \ |
| 587 const int sh, const RCBit rc = LeaveRC) { \ |
| 588 x_form(instr_name, src.code(), dst.code(), sh, rc); \ |
| 589 } |
| 590 |
| 591 #define DECLARE_PPC_X_INSTRUCTIONS_F_FORM(name, instr_name, instr_value) \ |
| 592 inline void name(const Register src1, const Register src2, \ |
| 593 const CRegister cr = cr7, const RCBit rc = LeaveRC) { \ |
| 594 x_form(instr_name, cr, src1, src2, rc); \ |
| 595 } \ |
| 596 inline void name##w(const Register src1, const Register src2, \ |
| 597 const CRegister cr = cr7, const RCBit rc = LeaveRC) { \ |
| 598 x_form(instr_name, cr.code() * B2, src1.code(), src2.code(), LeaveRC); \ |
| 599 } |
| 600 |
| 601 inline void x_form(Instr instr, int f1, int f2, int f3, int rc) { |
| 602 emit(instr | f1 * B21 | f2 * B16 | f3 * B11 | rc); |
| 603 } |
| 604 inline void x_form(Instr instr, Register rs, Register ra, Register rb, |
| 605 RCBit rc) { |
| 606 emit(instr | rs.code() * B21 | ra.code() * B16 | rb.code() * B11 | rc); |
| 607 } |
| 608 inline void x_form(Instr instr, CRegister cr, Register s1, Register s2, |
| 609 RCBit rc) { |
| 610 #if V8_TARGET_ARCH_PPC64 |
| 611 int L = 1; |
| 612 #else |
| 613 int L = 0; |
| 614 #endif |
| 615 emit(instr | cr.code() * B23 | L * B21 | s1.code() * B16 | |
| 616 s2.code() * B11 | rc); |
| 617 } |
| 618 |
| 619 PPC_X_OPCODE_A_FORM_LIST(DECLARE_PPC_X_INSTRUCTIONS_A_FORM) |
| 620 PPC_X_OPCODE_B_FORM_LIST(DECLARE_PPC_X_INSTRUCTIONS_B_FORM) |
| 621 PPC_X_OPCODE_C_FORM_LIST(DECLARE_PPC_X_INSTRUCTIONS_C_FORM) |
| 622 PPC_X_OPCODE_D_FORM_LIST(DECLARE_PPC_X_INSTRUCTIONS_D_FORM) |
| 623 PPC_X_OPCODE_E_FORM_LIST(DECLARE_PPC_X_INSTRUCTIONS_E_FORM) |
| 624 PPC_X_OPCODE_F_FORM_LIST(DECLARE_PPC_X_INSTRUCTIONS_F_FORM) |
| 625 |
| 626 inline void notx(Register dst, Register src, RCBit rc = LeaveRC) { |
| 627 nor(dst, src, src, rc); |
| 628 } |
| 629 inline void lwax(Register rt, const MemOperand& src) { |
| 630 #if V8_TARGET_ARCH_PPC64 |
| 631 Register ra = src.ra(); |
| 632 Register rb = src.rb(); |
| 633 DCHECK(!ra.is(r0)); |
| 634 x_form(LWAX, rt, ra, rb, LeaveRC); |
| 635 #else |
| 636 lwzx(rt, src); |
| 637 #endif |
| 638 } |
| 639 inline void extsw(Register rs, Register ra, RCBit rc = LeaveRC) { |
| 640 #if V8_TARGET_ARCH_PPC64 |
| 641 emit(EXT2 | EXTSW | ra.code() * B21 | rs.code() * B16 | rc); |
| 642 #else |
| 643 // nop on 32-bit |
| 644 DCHECK(rs.is(ra) && rc == LeaveRC); |
| 645 #endif |
| 646 } |
| 647 |
| 648 #undef DECLARE_PPC_X_INSTRUCTIONS_A_FORM |
| 649 #undef DECLARE_PPC_X_INSTRUCTIONS_B_FORM |
| 650 #undef DECLARE_PPC_X_INSTRUCTIONS_C_FORM |
| 651 #undef DECLARE_PPC_X_INSTRUCTIONS_D_FORM |
| 652 #undef DECLARE_PPC_X_INSTRUCTIONS_E_FORM |
| 653 #undef DECLARE_PPC_X_INSTRUCTIONS_F_FORM |
| 654 |
| 555 #define DECLARE_PPC_XX3_INSTRUCTIONS(name, instr_name, instr_value) \ | 655 #define DECLARE_PPC_XX3_INSTRUCTIONS(name, instr_name, instr_value) \ |
| 556 inline void name(const DoubleRegister rt, const DoubleRegister ra, \ | 656 inline void name(const DoubleRegister rt, const DoubleRegister ra, \ |
| 557 const DoubleRegister rb) { \ | 657 const DoubleRegister rb) { \ |
| 558 xx3_form(instr_name, rt, ra, rb); \ | 658 xx3_form(instr_name, rt, ra, rb); \ |
| 559 } | 659 } |
| 560 | 660 |
| 561 inline void xx3_form(Instr instr, DoubleRegister t, DoubleRegister a, | 661 inline void xx3_form(Instr instr, DoubleRegister t, DoubleRegister a, |
| 562 DoubleRegister b) { | 662 DoubleRegister b) { |
| 563 int AX = ((a.code() & 0x20) >> 5) & 0x1; | 663 int AX = ((a.code() & 0x20) >> 5) & 0x1; |
| 564 int BX = ((b.code() & 0x20) >> 5) & 0x1; | 664 int BX = ((b.code() & 0x20) >> 5) & 0x1; |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 842 void mullw(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 942 void mullw(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 843 RCBit r = LeaveRC); | 943 RCBit r = LeaveRC); |
| 844 | 944 |
| 845 void mulhw(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | 945 void mulhw(Register dst, Register src1, Register src2, RCBit r = LeaveRC); |
| 846 void mulhwu(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | 946 void mulhwu(Register dst, Register src1, Register src2, RCBit r = LeaveRC); |
| 847 | 947 |
| 848 void divw(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 948 void divw(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 849 RCBit r = LeaveRC); | 949 RCBit r = LeaveRC); |
| 850 void divwu(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 950 void divwu(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 851 RCBit r = LeaveRC); | 951 RCBit r = LeaveRC); |
| 852 void modsw(Register rt, Register ra, Register rb); | |
| 853 void moduw(Register rt, Register ra, Register rb); | |
| 854 | 952 |
| 855 void addi(Register dst, Register src, const Operand& imm); | 953 void addi(Register dst, Register src, const Operand& imm); |
| 856 void addis(Register dst, Register src, const Operand& imm); | 954 void addis(Register dst, Register src, const Operand& imm); |
| 857 void addic(Register dst, Register src, const Operand& imm); | 955 void addic(Register dst, Register src, const Operand& imm); |
| 858 | 956 |
| 859 void and_(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); | |
| 860 void andc(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); | |
| 861 void andi(Register ra, Register rs, const Operand& imm); | 957 void andi(Register ra, Register rs, const Operand& imm); |
| 862 void andis(Register ra, Register rs, const Operand& imm); | 958 void andis(Register ra, Register rs, const Operand& imm); |
| 863 void nor(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | |
| 864 void notx(Register dst, Register src, RCBit r = LeaveRC); | |
| 865 void ori(Register dst, Register src, const Operand& imm); | 959 void ori(Register dst, Register src, const Operand& imm); |
| 866 void oris(Register dst, Register src, const Operand& imm); | 960 void oris(Register dst, Register src, const Operand& imm); |
| 867 void orx(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); | |
| 868 void orc(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); | |
| 869 void xori(Register dst, Register src, const Operand& imm); | 961 void xori(Register dst, Register src, const Operand& imm); |
| 870 void xoris(Register ra, Register rs, const Operand& imm); | 962 void xoris(Register ra, Register rs, const Operand& imm); |
| 871 void xor_(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); | |
| 872 void cmpi(Register src1, const Operand& src2, CRegister cr = cr7); | 963 void cmpi(Register src1, const Operand& src2, CRegister cr = cr7); |
| 873 void cmpli(Register src1, const Operand& src2, CRegister cr = cr7); | 964 void cmpli(Register src1, const Operand& src2, CRegister cr = cr7); |
| 874 void cmpwi(Register src1, const Operand& src2, CRegister cr = cr7); | 965 void cmpwi(Register src1, const Operand& src2, CRegister cr = cr7); |
| 875 void cmplwi(Register src1, const Operand& src2, CRegister cr = cr7); | 966 void cmplwi(Register src1, const Operand& src2, CRegister cr = cr7); |
| 876 void li(Register dst, const Operand& src); | 967 void li(Register dst, const Operand& src); |
| 877 void lis(Register dst, const Operand& imm); | 968 void lis(Register dst, const Operand& imm); |
| 878 void mr(Register dst, Register src); | 969 void mr(Register dst, Register src); |
| 879 | 970 |
| 880 void lbz(Register dst, const MemOperand& src); | 971 void lbz(Register dst, const MemOperand& src); |
| 881 void lbzx(Register dst, const MemOperand& src); | |
| 882 void lbzux(Register dst, const MemOperand& src); | |
| 883 void lhz(Register dst, const MemOperand& src); | 972 void lhz(Register dst, const MemOperand& src); |
| 884 void lhzx(Register dst, const MemOperand& src); | |
| 885 void lhzux(Register dst, const MemOperand& src); | |
| 886 void lha(Register dst, const MemOperand& src); | 973 void lha(Register dst, const MemOperand& src); |
| 887 void lhax(Register dst, const MemOperand& src); | |
| 888 void lwz(Register dst, const MemOperand& src); | 974 void lwz(Register dst, const MemOperand& src); |
| 889 void lwzu(Register dst, const MemOperand& src); | 975 void lwzu(Register dst, const MemOperand& src); |
| 890 void lwzx(Register dst, const MemOperand& src); | |
| 891 void lwzux(Register dst, const MemOperand& src); | |
| 892 void lwa(Register dst, const MemOperand& src); | 976 void lwa(Register dst, const MemOperand& src); |
| 893 void lwax(Register dst, const MemOperand& src); | |
| 894 void ldbrx(Register dst, const MemOperand& src); | |
| 895 void lwbrx(Register dst, const MemOperand& src); | |
| 896 void lhbrx(Register dst, const MemOperand& src); | |
| 897 void stb(Register dst, const MemOperand& src); | 977 void stb(Register dst, const MemOperand& src); |
| 898 void stbx(Register dst, const MemOperand& src); | |
| 899 void stbux(Register dst, const MemOperand& src); | |
| 900 void sth(Register dst, const MemOperand& src); | 978 void sth(Register dst, const MemOperand& src); |
| 901 void sthx(Register dst, const MemOperand& src); | |
| 902 void sthux(Register dst, const MemOperand& src); | |
| 903 void stw(Register dst, const MemOperand& src); | 979 void stw(Register dst, const MemOperand& src); |
| 904 void stwu(Register dst, const MemOperand& src); | 980 void stwu(Register dst, const MemOperand& src); |
| 905 void stwx(Register rs, const MemOperand& src); | |
| 906 void stwux(Register rs, const MemOperand& src); | |
| 907 | |
| 908 void extsb(Register rs, Register ra, RCBit r = LeaveRC); | |
| 909 void extsh(Register rs, Register ra, RCBit r = LeaveRC); | |
| 910 void extsw(Register rs, Register ra, RCBit r = LeaveRC); | |
| 911 | 981 |
| 912 void neg(Register rt, Register ra, OEBit o = LeaveOE, RCBit c = LeaveRC); | 982 void neg(Register rt, Register ra, OEBit o = LeaveOE, RCBit c = LeaveRC); |
| 913 | 983 |
| 914 #if V8_TARGET_ARCH_PPC64 | 984 #if V8_TARGET_ARCH_PPC64 |
| 915 void ld(Register rd, const MemOperand& src); | 985 void ld(Register rd, const MemOperand& src); |
| 916 void ldx(Register rd, const MemOperand& src); | |
| 917 void ldu(Register rd, const MemOperand& src); | 986 void ldu(Register rd, const MemOperand& src); |
| 918 void ldux(Register rd, const MemOperand& src); | |
| 919 void std(Register rs, const MemOperand& src); | 987 void std(Register rs, const MemOperand& src); |
| 920 void stdx(Register rs, const MemOperand& src); | |
| 921 void stdu(Register rs, const MemOperand& src); | 988 void stdu(Register rs, const MemOperand& src); |
| 922 void stdux(Register rs, const MemOperand& src); | |
| 923 void rldic(Register dst, Register src, int sh, int mb, RCBit r = LeaveRC); | 989 void rldic(Register dst, Register src, int sh, int mb, RCBit r = LeaveRC); |
| 924 void rldicl(Register dst, Register src, int sh, int mb, RCBit r = LeaveRC); | 990 void rldicl(Register dst, Register src, int sh, int mb, RCBit r = LeaveRC); |
| 925 void rldcl(Register ra, Register rs, Register rb, int mb, RCBit r = LeaveRC); | 991 void rldcl(Register ra, Register rs, Register rb, int mb, RCBit r = LeaveRC); |
| 926 void rldicr(Register dst, Register src, int sh, int me, RCBit r = LeaveRC); | 992 void rldicr(Register dst, Register src, int sh, int me, RCBit r = LeaveRC); |
| 927 void rldimi(Register dst, Register src, int sh, int mb, RCBit r = LeaveRC); | 993 void rldimi(Register dst, Register src, int sh, int mb, RCBit r = LeaveRC); |
| 928 void sldi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); | 994 void sldi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); |
| 929 void srdi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); | 995 void srdi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); |
| 930 void clrrdi(Register dst, Register src, const Operand& val, | 996 void clrrdi(Register dst, Register src, const Operand& val, |
| 931 RCBit rc = LeaveRC); | 997 RCBit rc = LeaveRC); |
| 932 void clrldi(Register dst, Register src, const Operand& val, | 998 void clrldi(Register dst, Register src, const Operand& val, |
| 933 RCBit rc = LeaveRC); | 999 RCBit rc = LeaveRC); |
| 934 void sradi(Register ra, Register rs, int sh, RCBit r = LeaveRC); | 1000 void sradi(Register ra, Register rs, int sh, RCBit r = LeaveRC); |
| 935 void srd(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | |
| 936 void sld(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | |
| 937 void srad(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | |
| 938 void rotld(Register ra, Register rs, Register rb, RCBit r = LeaveRC); | 1001 void rotld(Register ra, Register rs, Register rb, RCBit r = LeaveRC); |
| 939 void rotldi(Register ra, Register rs, int sh, RCBit r = LeaveRC); | 1002 void rotldi(Register ra, Register rs, int sh, RCBit r = LeaveRC); |
| 940 void rotrdi(Register ra, Register rs, int sh, RCBit r = LeaveRC); | 1003 void rotrdi(Register ra, Register rs, int sh, RCBit r = LeaveRC); |
| 941 void cntlzd_(Register dst, Register src, RCBit rc = LeaveRC); | |
| 942 void popcntd(Register dst, Register src); | |
| 943 void mulld(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 1004 void mulld(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 944 RCBit r = LeaveRC); | 1005 RCBit r = LeaveRC); |
| 945 void divd(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 1006 void divd(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 946 RCBit r = LeaveRC); | 1007 RCBit r = LeaveRC); |
| 947 void divdu(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 1008 void divdu(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 948 RCBit r = LeaveRC); | 1009 RCBit r = LeaveRC); |
| 949 void modsd(Register rt, Register ra, Register rb); | |
| 950 void modud(Register rt, Register ra, Register rb); | |
| 951 #endif | 1010 #endif |
| 952 | 1011 |
| 953 void rlwinm(Register ra, Register rs, int sh, int mb, int me, | 1012 void rlwinm(Register ra, Register rs, int sh, int mb, int me, |
| 954 RCBit rc = LeaveRC); | 1013 RCBit rc = LeaveRC); |
| 955 void rlwimi(Register ra, Register rs, int sh, int mb, int me, | 1014 void rlwimi(Register ra, Register rs, int sh, int mb, int me, |
| 956 RCBit rc = LeaveRC); | 1015 RCBit rc = LeaveRC); |
| 957 void rlwnm(Register ra, Register rs, Register rb, int mb, int me, | 1016 void rlwnm(Register ra, Register rs, Register rb, int mb, int me, |
| 958 RCBit rc = LeaveRC); | 1017 RCBit rc = LeaveRC); |
| 959 void slwi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); | 1018 void slwi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); |
| 960 void srwi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); | 1019 void srwi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); |
| 961 void clrrwi(Register dst, Register src, const Operand& val, | 1020 void clrrwi(Register dst, Register src, const Operand& val, |
| 962 RCBit rc = LeaveRC); | 1021 RCBit rc = LeaveRC); |
| 963 void clrlwi(Register dst, Register src, const Operand& val, | 1022 void clrlwi(Register dst, Register src, const Operand& val, |
| 964 RCBit rc = LeaveRC); | 1023 RCBit rc = LeaveRC); |
| 965 void srawi(Register ra, Register rs, int sh, RCBit r = LeaveRC); | |
| 966 void srw(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | |
| 967 void slw(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | |
| 968 void sraw(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | |
| 969 void rotlw(Register ra, Register rs, Register rb, RCBit r = LeaveRC); | 1024 void rotlw(Register ra, Register rs, Register rb, RCBit r = LeaveRC); |
| 970 void rotlwi(Register ra, Register rs, int sh, RCBit r = LeaveRC); | 1025 void rotlwi(Register ra, Register rs, int sh, RCBit r = LeaveRC); |
| 971 void rotrwi(Register ra, Register rs, int sh, RCBit r = LeaveRC); | 1026 void rotrwi(Register ra, Register rs, int sh, RCBit r = LeaveRC); |
| 972 | 1027 |
| 973 void cntlzw_(Register dst, Register src, RCBit rc = LeaveRC); | |
| 974 void popcntw(Register dst, Register src); | |
| 975 | |
| 976 void subi(Register dst, Register src1, const Operand& src2); | 1028 void subi(Register dst, Register src1, const Operand& src2); |
| 977 | 1029 |
| 978 void cmp(Register src1, Register src2, CRegister cr = cr7); | |
| 979 void cmpl(Register src1, Register src2, CRegister cr = cr7); | |
| 980 void cmpw(Register src1, Register src2, CRegister cr = cr7); | |
| 981 void cmplw(Register src1, Register src2, CRegister cr = cr7); | |
| 982 | |
| 983 void mov(Register dst, const Operand& src); | 1030 void mov(Register dst, const Operand& src); |
| 984 void bitwise_mov(Register dst, intptr_t value); | 1031 void bitwise_mov(Register dst, intptr_t value); |
| 985 void bitwise_mov32(Register dst, int32_t value); | 1032 void bitwise_mov32(Register dst, int32_t value); |
| 986 void bitwise_add32(Register dst, Register src, int32_t value); | 1033 void bitwise_add32(Register dst, Register src, int32_t value); |
| 987 | 1034 |
| 988 // Load the position of the label relative to the generated code object | 1035 // Load the position of the label relative to the generated code object |
| 989 // pointer in a register. | 1036 // pointer in a register. |
| 990 void mov_label_offset(Register dst, Label* label); | 1037 void mov_label_offset(Register dst, Label* label); |
| 991 | 1038 |
| 992 // dst = base + label position + delta | 1039 // dst = base + label position + delta |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1036 | 1083 |
| 1037 void dcbf(Register ra, Register rb); | 1084 void dcbf(Register ra, Register rb); |
| 1038 void sync(); | 1085 void sync(); |
| 1039 void lwsync(); | 1086 void lwsync(); |
| 1040 void icbi(Register ra, Register rb); | 1087 void icbi(Register ra, Register rb); |
| 1041 void isync(); | 1088 void isync(); |
| 1042 | 1089 |
| 1043 // Support for floating point | 1090 // Support for floating point |
| 1044 void lfd(const DoubleRegister frt, const MemOperand& src); | 1091 void lfd(const DoubleRegister frt, const MemOperand& src); |
| 1045 void lfdu(const DoubleRegister frt, const MemOperand& src); | 1092 void lfdu(const DoubleRegister frt, const MemOperand& src); |
| 1046 void lfdx(const DoubleRegister frt, const MemOperand& src); | |
| 1047 void lfdux(const DoubleRegister frt, const MemOperand& src); | |
| 1048 void lfs(const DoubleRegister frt, const MemOperand& src); | 1093 void lfs(const DoubleRegister frt, const MemOperand& src); |
| 1049 void lfsu(const DoubleRegister frt, const MemOperand& src); | 1094 void lfsu(const DoubleRegister frt, const MemOperand& src); |
| 1050 void lfsx(const DoubleRegister frt, const MemOperand& src); | |
| 1051 void lfsux(const DoubleRegister frt, const MemOperand& src); | |
| 1052 void stfd(const DoubleRegister frs, const MemOperand& src); | 1095 void stfd(const DoubleRegister frs, const MemOperand& src); |
| 1053 void stfdu(const DoubleRegister frs, const MemOperand& src); | 1096 void stfdu(const DoubleRegister frs, const MemOperand& src); |
| 1054 void stfdx(const DoubleRegister frs, const MemOperand& src); | |
| 1055 void stfdux(const DoubleRegister frs, const MemOperand& src); | |
| 1056 void stfs(const DoubleRegister frs, const MemOperand& src); | 1097 void stfs(const DoubleRegister frs, const MemOperand& src); |
| 1057 void stfsu(const DoubleRegister frs, const MemOperand& src); | 1098 void stfsu(const DoubleRegister frs, const MemOperand& src); |
| 1058 void stfsx(const DoubleRegister frs, const MemOperand& src); | |
| 1059 void stfsux(const DoubleRegister frs, const MemOperand& src); | |
| 1060 | 1099 |
| 1061 void fadd(const DoubleRegister frt, const DoubleRegister fra, | 1100 void fadd(const DoubleRegister frt, const DoubleRegister fra, |
| 1062 const DoubleRegister frb, RCBit rc = LeaveRC); | 1101 const DoubleRegister frb, RCBit rc = LeaveRC); |
| 1063 void fsub(const DoubleRegister frt, const DoubleRegister fra, | 1102 void fsub(const DoubleRegister frt, const DoubleRegister fra, |
| 1064 const DoubleRegister frb, RCBit rc = LeaveRC); | 1103 const DoubleRegister frb, RCBit rc = LeaveRC); |
| 1065 void fdiv(const DoubleRegister frt, const DoubleRegister fra, | 1104 void fdiv(const DoubleRegister frt, const DoubleRegister fra, |
| 1066 const DoubleRegister frb, RCBit rc = LeaveRC); | 1105 const DoubleRegister frb, RCBit rc = LeaveRC); |
| 1067 void fmul(const DoubleRegister frt, const DoubleRegister fra, | 1106 void fmul(const DoubleRegister frt, const DoubleRegister fra, |
| 1068 const DoubleRegister frc, RCBit rc = LeaveRC); | 1107 const DoubleRegister frc, RCBit rc = LeaveRC); |
| 1069 void fcmpu(const DoubleRegister fra, const DoubleRegister frb, | 1108 void fcmpu(const DoubleRegister fra, const DoubleRegister frb, |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1413 inline void emit(Instr x); | 1452 inline void emit(Instr x); |
| 1414 inline void TrackBranch(); | 1453 inline void TrackBranch(); |
| 1415 inline void UntrackBranch(); | 1454 inline void UntrackBranch(); |
| 1416 inline void CheckTrampolinePoolQuick(); | 1455 inline void CheckTrampolinePoolQuick(); |
| 1417 | 1456 |
| 1418 // Instruction generation | 1457 // Instruction generation |
| 1419 void a_form(Instr instr, DoubleRegister frt, DoubleRegister fra, | 1458 void a_form(Instr instr, DoubleRegister frt, DoubleRegister fra, |
| 1420 DoubleRegister frb, RCBit r); | 1459 DoubleRegister frb, RCBit r); |
| 1421 void d_form(Instr instr, Register rt, Register ra, const intptr_t val, | 1460 void d_form(Instr instr, Register rt, Register ra, const intptr_t val, |
| 1422 bool signed_disp); | 1461 bool signed_disp); |
| 1423 void x_form(Instr instr, Register ra, Register rs, Register rb, RCBit r); | |
| 1424 void xo_form(Instr instr, Register rt, Register ra, Register rb, OEBit o, | 1462 void xo_form(Instr instr, Register rt, Register ra, Register rb, OEBit o, |
| 1425 RCBit r); | 1463 RCBit r); |
| 1426 void md_form(Instr instr, Register ra, Register rs, int shift, int maskbit, | 1464 void md_form(Instr instr, Register ra, Register rs, int shift, int maskbit, |
| 1427 RCBit r); | 1465 RCBit r); |
| 1428 void mds_form(Instr instr, Register ra, Register rs, Register rb, int maskbit, | 1466 void mds_form(Instr instr, Register ra, Register rs, Register rb, int maskbit, |
| 1429 RCBit r); | 1467 RCBit r); |
| 1430 | 1468 |
| 1431 // Labels | 1469 // Labels |
| 1432 void print(Label* L); | 1470 void print(Label* L); |
| 1433 int max_reach_from(int pos); | 1471 int max_reach_from(int pos); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1499 PatchingAssembler(IsolateData isolate_data, byte* address, int instructions); | 1537 PatchingAssembler(IsolateData isolate_data, byte* address, int instructions); |
| 1500 ~PatchingAssembler(); | 1538 ~PatchingAssembler(); |
| 1501 | 1539 |
| 1502 void FlushICache(Isolate* isolate); | 1540 void FlushICache(Isolate* isolate); |
| 1503 }; | 1541 }; |
| 1504 | 1542 |
| 1505 } // namespace internal | 1543 } // namespace internal |
| 1506 } // namespace v8 | 1544 } // namespace v8 |
| 1507 | 1545 |
| 1508 #endif // V8_PPC_ASSEMBLER_PPC_H_ | 1546 #endif // V8_PPC_ASSEMBLER_PPC_H_ |
| OLD | NEW |