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 |