| 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 #include "src/ppc/constants-ppc.h" | 47 #include "src/ppc/constants-ppc.h" |
| 48 #include "src/serialize.h" | 48 #include "src/serialize.h" |
| 49 | 49 |
| 50 #define ABI_USES_FUNCTION_DESCRIPTORS \ | 50 #define ABI_USES_FUNCTION_DESCRIPTORS \ |
| 51 (V8_HOST_ARCH_PPC && (V8_OS_AIX || \ | 51 (V8_HOST_ARCH_PPC && (V8_OS_AIX || \ |
| 52 (V8_TARGET_ARCH_PPC64 && V8_TARGET_BIG_ENDIAN))) | 52 (V8_TARGET_ARCH_PPC64 && V8_TARGET_BIG_ENDIAN))) |
| 53 | 53 |
| 54 #define ABI_PASSES_HANDLES_IN_REGS \ | 54 #define ABI_PASSES_HANDLES_IN_REGS \ |
| 55 (!V8_HOST_ARCH_PPC || V8_OS_AIX || V8_TARGET_ARCH_PPC64) | 55 (!V8_HOST_ARCH_PPC || V8_OS_AIX || V8_TARGET_ARCH_PPC64) |
| 56 | 56 |
| 57 #define ABI_RETURNS_HANDLES_IN_REGS \ | |
| 58 (!V8_HOST_ARCH_PPC || V8_TARGET_LITTLE_ENDIAN) | |
| 59 | |
| 60 #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS \ | 57 #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS \ |
| 61 (!V8_HOST_ARCH_PPC || V8_TARGET_LITTLE_ENDIAN) | 58 (!V8_HOST_ARCH_PPC || !V8_TARGET_ARCH_PPC64 || V8_TARGET_LITTLE_ENDIAN) |
| 62 | 59 |
| 63 #define ABI_TOC_ADDRESSABILITY_VIA_IP \ | 60 #define ABI_TOC_ADDRESSABILITY_VIA_IP \ |
| 64 (V8_HOST_ARCH_PPC && V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN) | 61 (V8_HOST_ARCH_PPC && V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN) |
| 65 | 62 |
| 66 #if !V8_HOST_ARCH_PPC || V8_OS_AIX || V8_TARGET_ARCH_PPC64 | 63 #if !V8_HOST_ARCH_PPC || V8_OS_AIX || V8_TARGET_ARCH_PPC64 |
| 67 #define ABI_TOC_REGISTER kRegister_r2_Code | 64 #define ABI_TOC_REGISTER kRegister_r2_Code |
| 68 #else | 65 #else |
| 69 #define ABI_TOC_REGISTER kRegister_r13_Code | 66 #define ABI_TOC_REGISTER kRegister_r13_Code |
| 70 #endif | 67 #endif |
| 71 | 68 |
| (...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 bc(b_offset, BT, encode_crbit(cr, CR_SO), lk); | 822 bc(b_offset, BT, encode_crbit(cr, CR_SO), lk); |
| 826 break; | 823 break; |
| 827 case nooverflow: | 824 case nooverflow: |
| 828 bc(b_offset, BF, encode_crbit(cr, CR_SO), lk); | 825 bc(b_offset, BF, encode_crbit(cr, CR_SO), lk); |
| 829 break; | 826 break; |
| 830 default: | 827 default: |
| 831 UNIMPLEMENTED(); | 828 UNIMPLEMENTED(); |
| 832 } | 829 } |
| 833 } | 830 } |
| 834 | 831 |
| 832 void isel(Register rt, Register ra, Register rb, int cb); |
| 833 void isel(Condition cond, Register rt, Register ra, Register rb, |
| 834 CRegister cr = cr7) { |
| 835 DCHECK(cond != al); |
| 836 DCHECK(cr.code() >= 0 && cr.code() <= 7); |
| 837 |
| 838 switch (cond) { |
| 839 case eq: |
| 840 isel(rt, ra, rb, encode_crbit(cr, CR_EQ)); |
| 841 break; |
| 842 case ne: |
| 843 isel(rt, rb, ra, encode_crbit(cr, CR_EQ)); |
| 844 break; |
| 845 case gt: |
| 846 isel(rt, ra, rb, encode_crbit(cr, CR_GT)); |
| 847 break; |
| 848 case le: |
| 849 isel(rt, rb, ra, encode_crbit(cr, CR_GT)); |
| 850 break; |
| 851 case lt: |
| 852 isel(rt, ra, rb, encode_crbit(cr, CR_LT)); |
| 853 break; |
| 854 case ge: |
| 855 isel(rt, rb, ra, encode_crbit(cr, CR_LT)); |
| 856 break; |
| 857 case unordered: |
| 858 isel(rt, ra, rb, encode_crbit(cr, CR_FU)); |
| 859 break; |
| 860 case ordered: |
| 861 isel(rt, rb, ra, encode_crbit(cr, CR_FU)); |
| 862 break; |
| 863 case overflow: |
| 864 isel(rt, ra, rb, encode_crbit(cr, CR_SO)); |
| 865 break; |
| 866 case nooverflow: |
| 867 isel(rt, rb, ra, encode_crbit(cr, CR_SO)); |
| 868 break; |
| 869 default: |
| 870 UNIMPLEMENTED(); |
| 871 } |
| 872 } |
| 873 |
| 835 void b(Condition cond, Label* L, CRegister cr = cr7, LKBit lk = LeaveLK) { | 874 void b(Condition cond, Label* L, CRegister cr = cr7, LKBit lk = LeaveLK) { |
| 836 if (cond == al) { | 875 if (cond == al) { |
| 837 b(L, lk); | 876 b(L, lk); |
| 838 return; | 877 return; |
| 839 } | 878 } |
| 840 | 879 |
| 841 if ((L->is_bound() && is_near(L, cond)) || !is_trampoline_emitted()) { | 880 if ((L->is_bound() && is_near(L, cond)) || !is_trampoline_emitted()) { |
| 842 bc_short(cond, L, cr, lk); | 881 bc_short(cond, L, cr, lk); |
| 843 return; | 882 return; |
| 844 } | 883 } |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 900 RCBit r = LeaveRC); | 939 RCBit r = LeaveRC); |
| 901 | 940 |
| 902 void addc(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 941 void addc(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 903 RCBit r = LeaveRC); | 942 RCBit r = LeaveRC); |
| 904 | 943 |
| 905 void addze(Register dst, Register src1, OEBit o, RCBit r); | 944 void addze(Register dst, Register src1, OEBit o, RCBit r); |
| 906 | 945 |
| 907 void mullw(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 946 void mullw(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 908 RCBit r = LeaveRC); | 947 RCBit r = LeaveRC); |
| 909 | 948 |
| 910 void mulhw(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 949 void mulhw(Register dst, Register src1, Register src2, RCBit r = LeaveRC); |
| 911 RCBit r = LeaveRC); | 950 void mulhwu(Register dst, Register src1, Register src2, RCBit r = LeaveRC); |
| 912 | 951 |
| 913 void divw(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 952 void divw(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 914 RCBit r = LeaveRC); | 953 RCBit r = LeaveRC); |
| 954 void divwu(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 955 RCBit r = LeaveRC); |
| 915 | 956 |
| 916 void addi(Register dst, Register src, const Operand& imm); | 957 void addi(Register dst, Register src, const Operand& imm); |
| 917 void addis(Register dst, Register src, const Operand& imm); | 958 void addis(Register dst, Register src, const Operand& imm); |
| 918 void addic(Register dst, Register src, const Operand& imm); | 959 void addic(Register dst, Register src, const Operand& imm); |
| 919 | 960 |
| 920 void and_(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); | 961 void and_(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); |
| 921 void andc(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); | 962 void andc(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); |
| 922 void andi(Register ra, Register rs, const Operand& imm); | 963 void andi(Register ra, Register rs, const Operand& imm); |
| 923 void andis(Register ra, Register rs, const Operand& imm); | 964 void andis(Register ra, Register rs, const Operand& imm); |
| 924 void nor(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | 965 void nor(Register dst, Register src1, Register src2, RCBit r = LeaveRC); |
| 925 void notx(Register dst, Register src, RCBit r = LeaveRC); | 966 void notx(Register dst, Register src, RCBit r = LeaveRC); |
| 926 void ori(Register dst, Register src, const Operand& imm); | 967 void ori(Register dst, Register src, const Operand& imm); |
| 927 void oris(Register dst, Register src, const Operand& imm); | 968 void oris(Register dst, Register src, const Operand& imm); |
| 928 void orx(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); | 969 void orx(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); |
| 970 void orc(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); |
| 929 void xori(Register dst, Register src, const Operand& imm); | 971 void xori(Register dst, Register src, const Operand& imm); |
| 930 void xoris(Register ra, Register rs, const Operand& imm); | 972 void xoris(Register ra, Register rs, const Operand& imm); |
| 931 void xor_(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); | 973 void xor_(Register dst, Register src1, Register src2, RCBit rc = LeaveRC); |
| 932 void cmpi(Register src1, const Operand& src2, CRegister cr = cr7); | 974 void cmpi(Register src1, const Operand& src2, CRegister cr = cr7); |
| 933 void cmpli(Register src1, const Operand& src2, CRegister cr = cr7); | 975 void cmpli(Register src1, const Operand& src2, CRegister cr = cr7); |
| 934 void cmpwi(Register src1, const Operand& src2, CRegister cr = cr7); | 976 void cmpwi(Register src1, const Operand& src2, CRegister cr = cr7); |
| 935 void cmplwi(Register src1, const Operand& src2, CRegister cr = cr7); | 977 void cmplwi(Register src1, const Operand& src2, CRegister cr = cr7); |
| 936 void li(Register dst, const Operand& src); | 978 void li(Register dst, const Operand& src); |
| 937 void lis(Register dst, const Operand& imm); | 979 void lis(Register dst, const Operand& imm); |
| 938 void mr(Register dst, Register src); | 980 void mr(Register dst, Register src); |
| 939 | 981 |
| 940 void lbz(Register dst, const MemOperand& src); | 982 void lbz(Register dst, const MemOperand& src); |
| 941 void lbzx(Register dst, const MemOperand& src); | 983 void lbzx(Register dst, const MemOperand& src); |
| 942 void lbzux(Register dst, const MemOperand& src); | 984 void lbzux(Register dst, const MemOperand& src); |
| 943 void lhz(Register dst, const MemOperand& src); | 985 void lhz(Register dst, const MemOperand& src); |
| 944 void lhzx(Register dst, const MemOperand& src); | 986 void lhzx(Register dst, const MemOperand& src); |
| 945 void lhzux(Register dst, const MemOperand& src); | 987 void lhzux(Register dst, const MemOperand& src); |
| 988 void lha(Register dst, const MemOperand& src); |
| 989 void lhax(Register dst, const MemOperand& src); |
| 946 void lwz(Register dst, const MemOperand& src); | 990 void lwz(Register dst, const MemOperand& src); |
| 947 void lwzu(Register dst, const MemOperand& src); | 991 void lwzu(Register dst, const MemOperand& src); |
| 948 void lwzx(Register dst, const MemOperand& src); | 992 void lwzx(Register dst, const MemOperand& src); |
| 949 void lwzux(Register dst, const MemOperand& src); | 993 void lwzux(Register dst, const MemOperand& src); |
| 950 void lwa(Register dst, const MemOperand& src); | 994 void lwa(Register dst, const MemOperand& src); |
| 995 void lwax(Register dst, const MemOperand& src); |
| 951 void stb(Register dst, const MemOperand& src); | 996 void stb(Register dst, const MemOperand& src); |
| 952 void stbx(Register dst, const MemOperand& src); | 997 void stbx(Register dst, const MemOperand& src); |
| 953 void stbux(Register dst, const MemOperand& src); | 998 void stbux(Register dst, const MemOperand& src); |
| 954 void sth(Register dst, const MemOperand& src); | 999 void sth(Register dst, const MemOperand& src); |
| 955 void sthx(Register dst, const MemOperand& src); | 1000 void sthx(Register dst, const MemOperand& src); |
| 956 void sthux(Register dst, const MemOperand& src); | 1001 void sthux(Register dst, const MemOperand& src); |
| 957 void stw(Register dst, const MemOperand& src); | 1002 void stw(Register dst, const MemOperand& src); |
| 958 void stwu(Register dst, const MemOperand& src); | 1003 void stwu(Register dst, const MemOperand& src); |
| 959 void stwx(Register rs, const MemOperand& src); | 1004 void stwx(Register rs, const MemOperand& src); |
| 960 void stwux(Register rs, const MemOperand& src); | 1005 void stwux(Register rs, const MemOperand& src); |
| 961 | 1006 |
| 962 void extsb(Register rs, Register ra, RCBit r = LeaveRC); | 1007 void extsb(Register rs, Register ra, RCBit r = LeaveRC); |
| 963 void extsh(Register rs, Register ra, RCBit r = LeaveRC); | 1008 void extsh(Register rs, Register ra, RCBit r = LeaveRC); |
| 1009 void extsw(Register rs, Register ra, RCBit r = LeaveRC); |
| 964 | 1010 |
| 965 void neg(Register rt, Register ra, OEBit o = LeaveOE, RCBit c = LeaveRC); | 1011 void neg(Register rt, Register ra, OEBit o = LeaveOE, RCBit c = LeaveRC); |
| 966 | 1012 |
| 967 #if V8_TARGET_ARCH_PPC64 | 1013 #if V8_TARGET_ARCH_PPC64 |
| 968 void ld(Register rd, const MemOperand& src); | 1014 void ld(Register rd, const MemOperand& src); |
| 969 void ldx(Register rd, const MemOperand& src); | 1015 void ldx(Register rd, const MemOperand& src); |
| 970 void ldu(Register rd, const MemOperand& src); | 1016 void ldu(Register rd, const MemOperand& src); |
| 971 void ldux(Register rd, const MemOperand& src); | 1017 void ldux(Register rd, const MemOperand& src); |
| 972 void std(Register rs, const MemOperand& src); | 1018 void std(Register rs, const MemOperand& src); |
| 973 void stdx(Register rs, const MemOperand& src); | 1019 void stdx(Register rs, const MemOperand& src); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 985 void clrldi(Register dst, Register src, const Operand& val, | 1031 void clrldi(Register dst, Register src, const Operand& val, |
| 986 RCBit rc = LeaveRC); | 1032 RCBit rc = LeaveRC); |
| 987 void sradi(Register ra, Register rs, int sh, RCBit r = LeaveRC); | 1033 void sradi(Register ra, Register rs, int sh, RCBit r = LeaveRC); |
| 988 void srd(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | 1034 void srd(Register dst, Register src1, Register src2, RCBit r = LeaveRC); |
| 989 void sld(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | 1035 void sld(Register dst, Register src1, Register src2, RCBit r = LeaveRC); |
| 990 void srad(Register dst, Register src1, Register src2, RCBit r = LeaveRC); | 1036 void srad(Register dst, Register src1, Register src2, RCBit r = LeaveRC); |
| 991 void rotld(Register ra, Register rs, Register rb, RCBit r = LeaveRC); | 1037 void rotld(Register ra, Register rs, Register rb, RCBit r = LeaveRC); |
| 992 void rotldi(Register ra, Register rs, int sh, RCBit r = LeaveRC); | 1038 void rotldi(Register ra, Register rs, int sh, RCBit r = LeaveRC); |
| 993 void rotrdi(Register ra, Register rs, int sh, RCBit r = LeaveRC); | 1039 void rotrdi(Register ra, Register rs, int sh, RCBit r = LeaveRC); |
| 994 void cntlzd_(Register dst, Register src, RCBit rc = LeaveRC); | 1040 void cntlzd_(Register dst, Register src, RCBit rc = LeaveRC); |
| 995 void extsw(Register rs, Register ra, RCBit r = LeaveRC); | |
| 996 void mulld(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 1041 void mulld(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 997 RCBit r = LeaveRC); | 1042 RCBit r = LeaveRC); |
| 998 void divd(Register dst, Register src1, Register src2, OEBit o = LeaveOE, | 1043 void divd(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 999 RCBit r = LeaveRC); | 1044 RCBit r = LeaveRC); |
| 1045 void divdu(Register dst, Register src1, Register src2, OEBit o = LeaveOE, |
| 1046 RCBit r = LeaveRC); |
| 1000 #endif | 1047 #endif |
| 1001 | 1048 |
| 1002 void rlwinm(Register ra, Register rs, int sh, int mb, int me, | 1049 void rlwinm(Register ra, Register rs, int sh, int mb, int me, |
| 1003 RCBit rc = LeaveRC); | 1050 RCBit rc = LeaveRC); |
| 1004 void rlwimi(Register ra, Register rs, int sh, int mb, int me, | 1051 void rlwimi(Register ra, Register rs, int sh, int mb, int me, |
| 1005 RCBit rc = LeaveRC); | 1052 RCBit rc = LeaveRC); |
| 1006 void rlwnm(Register ra, Register rs, Register rb, int mb, int me, | 1053 void rlwnm(Register ra, Register rs, Register rb, int mb, int me, |
| 1007 RCBit rc = LeaveRC); | 1054 RCBit rc = LeaveRC); |
| 1008 void slwi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); | 1055 void slwi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); |
| 1009 void srwi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); | 1056 void srwi(Register dst, Register src, const Operand& val, RCBit rc = LeaveRC); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1052 void mcrfs(int bf, int bfa); | 1099 void mcrfs(int bf, int bfa); |
| 1053 void mfcr(Register dst); | 1100 void mfcr(Register dst); |
| 1054 #if V8_TARGET_ARCH_PPC64 | 1101 #if V8_TARGET_ARCH_PPC64 |
| 1055 void mffprd(Register dst, DoubleRegister src); | 1102 void mffprd(Register dst, DoubleRegister src); |
| 1056 void mffprwz(Register dst, DoubleRegister src); | 1103 void mffprwz(Register dst, DoubleRegister src); |
| 1057 void mtfprd(DoubleRegister dst, Register src); | 1104 void mtfprd(DoubleRegister dst, Register src); |
| 1058 void mtfprwz(DoubleRegister dst, Register src); | 1105 void mtfprwz(DoubleRegister dst, Register src); |
| 1059 void mtfprwa(DoubleRegister dst, Register src); | 1106 void mtfprwa(DoubleRegister dst, Register src); |
| 1060 #endif | 1107 #endif |
| 1061 | 1108 |
| 1062 void fake_asm(enum FAKE_OPCODE_T fopcode); | |
| 1063 void marker_asm(int mcode); | |
| 1064 void function_descriptor(); | 1109 void function_descriptor(); |
| 1065 | 1110 |
| 1066 // Exception-generating instructions and debugging support | 1111 // Exception-generating instructions and debugging support |
| 1067 void stop(const char* msg, Condition cond = al, | 1112 void stop(const char* msg, Condition cond = al, |
| 1068 int32_t code = kDefaultStopCode, CRegister cr = cr7); | 1113 int32_t code = kDefaultStopCode, CRegister cr = cr7); |
| 1069 | 1114 |
| 1070 void bkpt(uint32_t imm16); // v5 and above | 1115 void bkpt(uint32_t imm16); // v5 and above |
| 1071 | 1116 |
| 1072 // Informational messages when simulating | |
| 1073 void info(const char* msg, Condition cond = al, | |
| 1074 int32_t code = kDefaultStopCode, CRegister cr = cr7); | |
| 1075 | |
| 1076 void dcbf(Register ra, Register rb); | 1117 void dcbf(Register ra, Register rb); |
| 1077 void sync(); | 1118 void sync(); |
| 1078 void lwsync(); | 1119 void lwsync(); |
| 1079 void icbi(Register ra, Register rb); | 1120 void icbi(Register ra, Register rb); |
| 1080 void isync(); | 1121 void isync(); |
| 1081 | 1122 |
| 1082 // Support for floating point | 1123 // Support for floating point |
| 1083 void lfd(const DoubleRegister frt, const MemOperand& src); | 1124 void lfd(const DoubleRegister frt, const MemOperand& src); |
| 1084 void lfdu(const DoubleRegister frt, const MemOperand& src); | 1125 void lfdu(const DoubleRegister frt, const MemOperand& src); |
| 1085 void lfdx(const DoubleRegister frt, const MemOperand& src); | 1126 void lfdx(const DoubleRegister frt, const MemOperand& src); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1104 void fdiv(const DoubleRegister frt, const DoubleRegister fra, | 1145 void fdiv(const DoubleRegister frt, const DoubleRegister fra, |
| 1105 const DoubleRegister frb, RCBit rc = LeaveRC); | 1146 const DoubleRegister frb, RCBit rc = LeaveRC); |
| 1106 void fmul(const DoubleRegister frt, const DoubleRegister fra, | 1147 void fmul(const DoubleRegister frt, const DoubleRegister fra, |
| 1107 const DoubleRegister frc, RCBit rc = LeaveRC); | 1148 const DoubleRegister frc, RCBit rc = LeaveRC); |
| 1108 void fcmpu(const DoubleRegister fra, const DoubleRegister frb, | 1149 void fcmpu(const DoubleRegister fra, const DoubleRegister frb, |
| 1109 CRegister cr = cr7); | 1150 CRegister cr = cr7); |
| 1110 void fmr(const DoubleRegister frt, const DoubleRegister frb, | 1151 void fmr(const DoubleRegister frt, const DoubleRegister frb, |
| 1111 RCBit rc = LeaveRC); | 1152 RCBit rc = LeaveRC); |
| 1112 void fctiwz(const DoubleRegister frt, const DoubleRegister frb); | 1153 void fctiwz(const DoubleRegister frt, const DoubleRegister frb); |
| 1113 void fctiw(const DoubleRegister frt, const DoubleRegister frb); | 1154 void fctiw(const DoubleRegister frt, const DoubleRegister frb); |
| 1114 void frim(const DoubleRegister frt, const DoubleRegister frb); | 1155 void frin(const DoubleRegister frt, const DoubleRegister frb, |
| 1156 RCBit rc = LeaveRC); |
| 1157 void friz(const DoubleRegister frt, const DoubleRegister frb, |
| 1158 RCBit rc = LeaveRC); |
| 1159 void frip(const DoubleRegister frt, const DoubleRegister frb, |
| 1160 RCBit rc = LeaveRC); |
| 1161 void frim(const DoubleRegister frt, const DoubleRegister frb, |
| 1162 RCBit rc = LeaveRC); |
| 1115 void frsp(const DoubleRegister frt, const DoubleRegister frb, | 1163 void frsp(const DoubleRegister frt, const DoubleRegister frb, |
| 1116 RCBit rc = LeaveRC); | 1164 RCBit rc = LeaveRC); |
| 1117 void fcfid(const DoubleRegister frt, const DoubleRegister frb, | 1165 void fcfid(const DoubleRegister frt, const DoubleRegister frb, |
| 1118 RCBit rc = LeaveRC); | 1166 RCBit rc = LeaveRC); |
| 1119 void fctid(const DoubleRegister frt, const DoubleRegister frb, | 1167 void fctid(const DoubleRegister frt, const DoubleRegister frb, |
| 1120 RCBit rc = LeaveRC); | 1168 RCBit rc = LeaveRC); |
| 1121 void fctidz(const DoubleRegister frt, const DoubleRegister frb, | 1169 void fctidz(const DoubleRegister frt, const DoubleRegister frb, |
| 1122 RCBit rc = LeaveRC); | 1170 RCBit rc = LeaveRC); |
| 1123 void fsel(const DoubleRegister frt, const DoubleRegister fra, | 1171 void fsel(const DoubleRegister frt, const DoubleRegister fra, |
| 1124 const DoubleRegister frc, const DoubleRegister frb, | 1172 const DoubleRegister frc, const DoubleRegister frb, |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1226 // DCHECK(!recorded_ast_id_.IsNone()); | 1274 // DCHECK(!recorded_ast_id_.IsNone()); |
| 1227 return recorded_ast_id_; | 1275 return recorded_ast_id_; |
| 1228 } | 1276 } |
| 1229 | 1277 |
| 1230 void ClearRecordedAstId() { recorded_ast_id_ = TypeFeedbackId::None(); } | 1278 void ClearRecordedAstId() { recorded_ast_id_ = TypeFeedbackId::None(); } |
| 1231 | 1279 |
| 1232 // Record a comment relocation entry that can be used by a disassembler. | 1280 // Record a comment relocation entry that can be used by a disassembler. |
| 1233 // Use --code-comments to enable. | 1281 // Use --code-comments to enable. |
| 1234 void RecordComment(const char* msg); | 1282 void RecordComment(const char* msg); |
| 1235 | 1283 |
| 1284 // Record a deoptimization reason that can be used by a log or cpu profiler. |
| 1285 // Use --trace-deopt to enable. |
| 1286 void RecordDeoptReason(const int reason, const int raw_position); |
| 1287 |
| 1236 // Writes a single byte or word of data in the code stream. Used | 1288 // Writes a single byte or word of data in the code stream. Used |
| 1237 // for inline tables, e.g., jump-tables. | 1289 // for inline tables, e.g., jump-tables. |
| 1238 void db(uint8_t data); | 1290 void db(uint8_t data); |
| 1239 void dd(uint32_t data); | 1291 void dd(uint32_t data); |
| 1240 void emit_ptr(uintptr_t data); | 1292 void emit_ptr(uintptr_t data); |
| 1241 | 1293 |
| 1242 PositionsRecorder* positions_recorder() { return &positions_recorder_; } | 1294 PositionsRecorder* positions_recorder() { return &positions_recorder_; } |
| 1243 | 1295 |
| 1244 // Read/patch instructions | 1296 // Read/patch instructions |
| 1245 Instr instr_at(int pos) { return *reinterpret_cast<Instr*>(buffer_ + pos); } | 1297 Instr instr_at(int pos) { return *reinterpret_cast<Instr*>(buffer_ + pos); } |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1359 void EndBlockTrampolinePool() { trampoline_pool_blocked_nesting_--; } | 1411 void EndBlockTrampolinePool() { trampoline_pool_blocked_nesting_--; } |
| 1360 | 1412 |
| 1361 bool is_trampoline_pool_blocked() const { | 1413 bool is_trampoline_pool_blocked() const { |
| 1362 return trampoline_pool_blocked_nesting_ > 0; | 1414 return trampoline_pool_blocked_nesting_ > 0; |
| 1363 } | 1415 } |
| 1364 | 1416 |
| 1365 bool has_exception() const { return internal_trampoline_exception_; } | 1417 bool has_exception() const { return internal_trampoline_exception_; } |
| 1366 | 1418 |
| 1367 bool is_trampoline_emitted() const { return trampoline_emitted_; } | 1419 bool is_trampoline_emitted() const { return trampoline_emitted_; } |
| 1368 | 1420 |
| 1369 #if V8_OOL_CONSTANT_POOL | |
| 1370 void set_constant_pool_available(bool available) { | |
| 1371 constant_pool_available_ = available; | |
| 1372 } | |
| 1373 #endif | |
| 1374 | |
| 1375 private: | 1421 private: |
| 1376 // Code generation | 1422 // Code generation |
| 1377 // The relocation writer's position is at least kGap bytes below the end of | 1423 // The relocation writer's position is at least kGap bytes below the end of |
| 1378 // the generated instructions. This is so that multi-instruction sequences do | 1424 // the generated instructions. This is so that multi-instruction sequences do |
| 1379 // not have to check for overflow. The same is true for writes of large | 1425 // not have to check for overflow. The same is true for writes of large |
| 1380 // relocation info entries. | 1426 // relocation info entries. |
| 1381 static const int kGap = 32; | 1427 static const int kGap = 32; |
| 1382 | 1428 |
| 1383 // Repeated checking whether the trampoline pool should be emitted is rather | 1429 // Repeated checking whether the trampoline pool should be emitted is rather |
| 1384 // expensive. By default we only check again once a number of instructions | 1430 // expensive. By default we only check again once a number of instructions |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1484 | 1530 |
| 1485 | 1531 |
| 1486 class EnsureSpace BASE_EMBEDDED { | 1532 class EnsureSpace BASE_EMBEDDED { |
| 1487 public: | 1533 public: |
| 1488 explicit EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); } | 1534 explicit EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); } |
| 1489 }; | 1535 }; |
| 1490 } | 1536 } |
| 1491 } // namespace v8::internal | 1537 } // namespace v8::internal |
| 1492 | 1538 |
| 1493 #endif // V8_PPC_ASSEMBLER_PPC_H_ | 1539 #endif // V8_PPC_ASSEMBLER_PPC_H_ |
| OLD | NEW |