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 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 // ----------------------------------------------------------------------------- | 197 // ----------------------------------------------------------------------------- |
198 // Implementation of Operand and MemOperand | 198 // Implementation of Operand and MemOperand |
199 // See assembler-ppc-inl.h for inlined constructors | 199 // See assembler-ppc-inl.h for inlined constructors |
200 | 200 |
201 Operand::Operand(Handle<Object> handle) { | 201 Operand::Operand(Handle<Object> handle) { |
202 AllowDeferredHandleDereference using_raw_address; | 202 AllowDeferredHandleDereference using_raw_address; |
203 rm_ = no_reg; | 203 rm_ = no_reg; |
204 // Verify all Objects referred by code are NOT in new space. | 204 // Verify all Objects referred by code are NOT in new space. |
205 Object* obj = *handle; | 205 Object* obj = *handle; |
206 if (obj->IsHeapObject()) { | 206 if (obj->IsHeapObject()) { |
207 imm_ = reinterpret_cast<intptr_t>(handle.location()); | 207 value_.immediate = reinterpret_cast<intptr_t>(handle.location()); |
208 rmode_ = RelocInfo::EMBEDDED_OBJECT; | 208 rmode_ = RelocInfo::EMBEDDED_OBJECT; |
209 } else { | 209 } else { |
210 // no relocation needed | 210 // no relocation needed |
211 imm_ = reinterpret_cast<intptr_t>(obj); | 211 value_.immediate = reinterpret_cast<intptr_t>(obj); |
212 rmode_ = kRelocInfo_NONEPTR; | 212 rmode_ = kRelocInfo_NONEPTR; |
213 } | 213 } |
214 } | 214 } |
215 | 215 |
| 216 Operand Operand::EmbeddedNumber(double value) { |
| 217 int32_t smi; |
| 218 if (DoubleToSmiInteger(value, &smi)) return Operand(Smi::FromInt(smi)); |
| 219 Operand result(0, RelocInfo::EMBEDDED_OBJECT); |
| 220 result.is_heap_number_ = true; |
| 221 result.value_.heap_number = value; |
| 222 return result; |
| 223 } |
216 | 224 |
217 MemOperand::MemOperand(Register rn, int32_t offset) { | 225 MemOperand::MemOperand(Register rn, int32_t offset) { |
218 ra_ = rn; | 226 ra_ = rn; |
219 rb_ = no_reg; | 227 rb_ = no_reg; |
220 offset_ = offset; | 228 offset_ = offset; |
221 } | 229 } |
222 | 230 |
223 | 231 |
224 MemOperand::MemOperand(Register ra, Register rb) { | 232 MemOperand::MemOperand(Register ra, Register rb) { |
225 ra_ = ra; | 233 ra_ = ra; |
(...skipping 18 matching lines...) Expand all Loading... |
244 internal_trampoline_exception_ = false; | 252 internal_trampoline_exception_ = false; |
245 last_bound_pos_ = 0; | 253 last_bound_pos_ = 0; |
246 optimizable_cmpi_pos_ = -1; | 254 optimizable_cmpi_pos_ = -1; |
247 trampoline_emitted_ = FLAG_force_long_branches; | 255 trampoline_emitted_ = FLAG_force_long_branches; |
248 tracked_branch_count_ = 0; | 256 tracked_branch_count_ = 0; |
249 ClearRecordedAstId(); | 257 ClearRecordedAstId(); |
250 relocations_.reserve(128); | 258 relocations_.reserve(128); |
251 } | 259 } |
252 | 260 |
253 | 261 |
254 void Assembler::GetCode(CodeDesc* desc) { | 262 void Assembler::GetCode(Isolate* isolate, CodeDesc* desc) { |
255 // Emit constant pool if necessary. | 263 // Emit constant pool if necessary. |
256 int constant_pool_offset = EmitConstantPool(); | 264 int constant_pool_offset = EmitConstantPool(); |
257 | 265 |
258 EmitRelocations(); | 266 EmitRelocations(); |
259 | 267 |
| 268 AllocateRequestedHeapNumbers(isolate); |
| 269 |
260 // Set up code descriptor. | 270 // Set up code descriptor. |
261 desc->buffer = buffer_; | 271 desc->buffer = buffer_; |
262 desc->buffer_size = buffer_size_; | 272 desc->buffer_size = buffer_size_; |
263 desc->instr_size = pc_offset(); | 273 desc->instr_size = pc_offset(); |
264 desc->reloc_size = (buffer_ + buffer_size_) - reloc_info_writer.pos(); | 274 desc->reloc_size = (buffer_ + buffer_size_) - reloc_info_writer.pos(); |
265 desc->constant_pool_size = | 275 desc->constant_pool_size = |
266 (constant_pool_offset ? desc->instr_size - constant_pool_offset : 0); | 276 (constant_pool_offset ? desc->instr_size - constant_pool_offset : 0); |
267 desc->origin = this; | 277 desc->origin = this; |
268 desc->unwinding_info_size = 0; | 278 desc->unwinding_info_size = 0; |
269 desc->unwinding_info = nullptr; | 279 desc->unwinding_info = nullptr; |
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
736 | 746 |
737 | 747 |
738 void Assembler::b(int branch_offset, LKBit lk) { | 748 void Assembler::b(int branch_offset, LKBit lk) { |
739 int imm26 = branch_offset; | 749 int imm26 = branch_offset; |
740 CHECK(is_int26(imm26) && (imm26 & (kAAMask | kLKMask)) == 0); | 750 CHECK(is_int26(imm26) && (imm26 & (kAAMask | kLKMask)) == 0); |
741 emit(BX | (imm26 & kImm26Mask) | lk); | 751 emit(BX | (imm26 & kImm26Mask) | lk); |
742 } | 752 } |
743 | 753 |
744 | 754 |
745 void Assembler::xori(Register dst, Register src, const Operand& imm) { | 755 void Assembler::xori(Register dst, Register src, const Operand& imm) { |
746 d_form(XORI, src, dst, imm.imm_, false); | 756 d_form(XORI, src, dst, imm.immediate(), false); |
747 } | 757 } |
748 | 758 |
749 | 759 |
750 void Assembler::xoris(Register ra, Register rs, const Operand& imm) { | 760 void Assembler::xoris(Register ra, Register rs, const Operand& imm) { |
751 d_form(XORIS, rs, ra, imm.imm_, false); | 761 d_form(XORIS, rs, ra, imm.immediate(), false); |
752 } | 762 } |
753 | 763 |
754 | 764 |
755 void Assembler::rlwinm(Register ra, Register rs, int sh, int mb, int me, | 765 void Assembler::rlwinm(Register ra, Register rs, int sh, int mb, int me, |
756 RCBit rc) { | 766 RCBit rc) { |
757 sh &= 0x1f; | 767 sh &= 0x1f; |
758 mb &= 0x1f; | 768 mb &= 0x1f; |
759 me &= 0x1f; | 769 me &= 0x1f; |
760 emit(RLWINMX | rs.code() * B21 | ra.code() * B16 | sh * B11 | mb * B6 | | 770 emit(RLWINMX | rs.code() * B21 | ra.code() * B16 | sh * B11 | mb * B6 | |
761 me << 1 | rc); | 771 me << 1 | rc); |
(...skipping 13 matching lines...) Expand all Loading... |
775 RCBit rc) { | 785 RCBit rc) { |
776 sh &= 0x1f; | 786 sh &= 0x1f; |
777 mb &= 0x1f; | 787 mb &= 0x1f; |
778 me &= 0x1f; | 788 me &= 0x1f; |
779 emit(RLWIMIX | rs.code() * B21 | ra.code() * B16 | sh * B11 | mb * B6 | | 789 emit(RLWIMIX | rs.code() * B21 | ra.code() * B16 | sh * B11 | mb * B6 | |
780 me << 1 | rc); | 790 me << 1 | rc); |
781 } | 791 } |
782 | 792 |
783 | 793 |
784 void Assembler::slwi(Register dst, Register src, const Operand& val, RCBit rc) { | 794 void Assembler::slwi(Register dst, Register src, const Operand& val, RCBit rc) { |
785 DCHECK((32 > val.imm_) && (val.imm_ >= 0)); | 795 DCHECK((32 > val.immediate()) && (val.immediate() >= 0)); |
786 rlwinm(dst, src, val.imm_, 0, 31 - val.imm_, rc); | 796 rlwinm(dst, src, val.immediate(), 0, 31 - val.immediate(), rc); |
787 } | 797 } |
788 | 798 |
789 | 799 |
790 void Assembler::srwi(Register dst, Register src, const Operand& val, RCBit rc) { | 800 void Assembler::srwi(Register dst, Register src, const Operand& val, RCBit rc) { |
791 DCHECK((32 > val.imm_) && (val.imm_ >= 0)); | 801 DCHECK((32 > val.immediate()) && (val.immediate() >= 0)); |
792 rlwinm(dst, src, 32 - val.imm_, val.imm_, 31, rc); | 802 rlwinm(dst, src, 32 - val.immediate(), val.immediate(), 31, rc); |
793 } | 803 } |
794 | 804 |
795 | 805 |
796 void Assembler::clrrwi(Register dst, Register src, const Operand& val, | 806 void Assembler::clrrwi(Register dst, Register src, const Operand& val, |
797 RCBit rc) { | 807 RCBit rc) { |
798 DCHECK((32 > val.imm_) && (val.imm_ >= 0)); | 808 DCHECK((32 > val.immediate()) && (val.immediate() >= 0)); |
799 rlwinm(dst, src, 0, 0, 31 - val.imm_, rc); | 809 rlwinm(dst, src, 0, 0, 31 - val.immediate(), rc); |
800 } | 810 } |
801 | 811 |
802 | 812 |
803 void Assembler::clrlwi(Register dst, Register src, const Operand& val, | 813 void Assembler::clrlwi(Register dst, Register src, const Operand& val, |
804 RCBit rc) { | 814 RCBit rc) { |
805 DCHECK((32 > val.imm_) && (val.imm_ >= 0)); | 815 DCHECK((32 > val.immediate()) && (val.immediate() >= 0)); |
806 rlwinm(dst, src, 0, val.imm_, 31, rc); | 816 rlwinm(dst, src, 0, val.immediate(), 31, rc); |
807 } | 817 } |
808 | 818 |
809 | 819 |
810 void Assembler::rotlw(Register ra, Register rs, Register rb, RCBit r) { | 820 void Assembler::rotlw(Register ra, Register rs, Register rb, RCBit r) { |
811 rlwnm(ra, rs, rb, 0, 31, r); | 821 rlwnm(ra, rs, rb, 0, 31, r); |
812 } | 822 } |
813 | 823 |
814 | 824 |
815 void Assembler::rotlwi(Register ra, Register rs, int sh, RCBit r) { | 825 void Assembler::rotlwi(Register ra, Register rs, int sh, RCBit r) { |
816 rlwinm(ra, rs, sh, 0, 31, r); | 826 rlwinm(ra, rs, sh, 0, 31, r); |
817 } | 827 } |
818 | 828 |
819 | 829 |
820 void Assembler::rotrwi(Register ra, Register rs, int sh, RCBit r) { | 830 void Assembler::rotrwi(Register ra, Register rs, int sh, RCBit r) { |
821 rlwinm(ra, rs, 32 - sh, 0, 31, r); | 831 rlwinm(ra, rs, 32 - sh, 0, 31, r); |
822 } | 832 } |
823 | 833 |
824 | 834 |
825 void Assembler::subi(Register dst, Register src, const Operand& imm) { | 835 void Assembler::subi(Register dst, Register src, const Operand& imm) { |
826 addi(dst, src, Operand(-(imm.imm_))); | 836 addi(dst, src, Operand(-(imm.immediate()))); |
827 } | 837 } |
828 | 838 |
829 void Assembler::addc(Register dst, Register src1, Register src2, OEBit o, | 839 void Assembler::addc(Register dst, Register src1, Register src2, OEBit o, |
830 RCBit r) { | 840 RCBit r) { |
831 xo_form(EXT2 | ADDCX, dst, src1, src2, o, r); | 841 xo_form(EXT2 | ADDCX, dst, src1, src2, o, r); |
832 } | 842 } |
833 | 843 |
834 void Assembler::adde(Register dst, Register src1, Register src2, OEBit o, | 844 void Assembler::adde(Register dst, Register src1, Register src2, OEBit o, |
835 RCBit r) { | 845 RCBit r) { |
836 xo_form(EXT2 | ADDEX, dst, src1, src2, o, r); | 846 xo_form(EXT2 | ADDEX, dst, src1, src2, o, r); |
(...skipping 14 matching lines...) Expand all Loading... |
851 RCBit r) { | 861 RCBit r) { |
852 xo_form(EXT2 | SUBFCX, dst, src2, src1, o, r); | 862 xo_form(EXT2 | SUBFCX, dst, src2, src1, o, r); |
853 } | 863 } |
854 | 864 |
855 void Assembler::sube(Register dst, Register src1, Register src2, OEBit o, | 865 void Assembler::sube(Register dst, Register src1, Register src2, OEBit o, |
856 RCBit r) { | 866 RCBit r) { |
857 xo_form(EXT2 | SUBFEX, dst, src2, src1, o, r); | 867 xo_form(EXT2 | SUBFEX, dst, src2, src1, o, r); |
858 } | 868 } |
859 | 869 |
860 void Assembler::subfic(Register dst, Register src, const Operand& imm) { | 870 void Assembler::subfic(Register dst, Register src, const Operand& imm) { |
861 d_form(SUBFIC, dst, src, imm.imm_, true); | 871 d_form(SUBFIC, dst, src, imm.immediate(), true); |
862 } | 872 } |
863 | 873 |
864 | 874 |
865 void Assembler::add(Register dst, Register src1, Register src2, OEBit o, | 875 void Assembler::add(Register dst, Register src1, Register src2, OEBit o, |
866 RCBit r) { | 876 RCBit r) { |
867 xo_form(EXT2 | ADDX, dst, src1, src2, o, r); | 877 xo_form(EXT2 | ADDX, dst, src1, src2, o, r); |
868 } | 878 } |
869 | 879 |
870 | 880 |
871 // Multiply low word | 881 // Multiply low word |
(...skipping 24 matching lines...) Expand all Loading... |
896 | 906 |
897 // Divide word unsigned | 907 // Divide word unsigned |
898 void Assembler::divwu(Register dst, Register src1, Register src2, OEBit o, | 908 void Assembler::divwu(Register dst, Register src1, Register src2, OEBit o, |
899 RCBit r) { | 909 RCBit r) { |
900 xo_form(EXT2 | DIVWU, dst, src1, src2, o, r); | 910 xo_form(EXT2 | DIVWU, dst, src1, src2, o, r); |
901 } | 911 } |
902 | 912 |
903 | 913 |
904 void Assembler::addi(Register dst, Register src, const Operand& imm) { | 914 void Assembler::addi(Register dst, Register src, const Operand& imm) { |
905 DCHECK(!src.is(r0)); // use li instead to show intent | 915 DCHECK(!src.is(r0)); // use li instead to show intent |
906 d_form(ADDI, dst, src, imm.imm_, true); | 916 d_form(ADDI, dst, src, imm.immediate(), true); |
907 } | 917 } |
908 | 918 |
909 | 919 |
910 void Assembler::addis(Register dst, Register src, const Operand& imm) { | 920 void Assembler::addis(Register dst, Register src, const Operand& imm) { |
911 DCHECK(!src.is(r0)); // use lis instead to show intent | 921 DCHECK(!src.is(r0)); // use lis instead to show intent |
912 d_form(ADDIS, dst, src, imm.imm_, true); | 922 d_form(ADDIS, dst, src, imm.immediate(), true); |
913 } | 923 } |
914 | 924 |
915 | 925 |
916 void Assembler::addic(Register dst, Register src, const Operand& imm) { | 926 void Assembler::addic(Register dst, Register src, const Operand& imm) { |
917 d_form(ADDIC, dst, src, imm.imm_, true); | 927 d_form(ADDIC, dst, src, imm.immediate(), true); |
918 } | 928 } |
919 | 929 |
920 | 930 |
921 void Assembler::andi(Register ra, Register rs, const Operand& imm) { | 931 void Assembler::andi(Register ra, Register rs, const Operand& imm) { |
922 d_form(ANDIx, rs, ra, imm.imm_, false); | 932 d_form(ANDIx, rs, ra, imm.immediate(), false); |
923 } | 933 } |
924 | 934 |
925 | 935 |
926 void Assembler::andis(Register ra, Register rs, const Operand& imm) { | 936 void Assembler::andis(Register ra, Register rs, const Operand& imm) { |
927 d_form(ANDISx, rs, ra, imm.imm_, false); | 937 d_form(ANDISx, rs, ra, imm.immediate(), false); |
928 } | 938 } |
929 | 939 |
930 | 940 |
931 void Assembler::ori(Register ra, Register rs, const Operand& imm) { | 941 void Assembler::ori(Register ra, Register rs, const Operand& imm) { |
932 d_form(ORI, rs, ra, imm.imm_, false); | 942 d_form(ORI, rs, ra, imm.immediate(), false); |
933 } | 943 } |
934 | 944 |
935 | 945 |
936 void Assembler::oris(Register dst, Register src, const Operand& imm) { | 946 void Assembler::oris(Register dst, Register src, const Operand& imm) { |
937 d_form(ORIS, src, dst, imm.imm_, false); | 947 d_form(ORIS, src, dst, imm.immediate(), false); |
938 } | 948 } |
939 | 949 |
940 | 950 |
941 void Assembler::cmpi(Register src1, const Operand& src2, CRegister cr) { | 951 void Assembler::cmpi(Register src1, const Operand& src2, CRegister cr) { |
942 intptr_t imm16 = src2.imm_; | 952 intptr_t imm16 = src2.immediate(); |
943 #if V8_TARGET_ARCH_PPC64 | 953 #if V8_TARGET_ARCH_PPC64 |
944 int L = 1; | 954 int L = 1; |
945 #else | 955 #else |
946 int L = 0; | 956 int L = 0; |
947 #endif | 957 #endif |
948 DCHECK(is_int16(imm16)); | 958 DCHECK(is_int16(imm16)); |
949 DCHECK(cr.code() >= 0 && cr.code() <= 7); | 959 DCHECK(cr.code() >= 0 && cr.code() <= 7); |
950 imm16 &= kImm16Mask; | 960 imm16 &= kImm16Mask; |
951 emit(CMPI | cr.code() * B23 | L * B21 | src1.code() * B16 | imm16); | 961 emit(CMPI | cr.code() * B23 | L * B21 | src1.code() * B16 | imm16); |
952 } | 962 } |
953 | 963 |
954 | 964 |
955 void Assembler::cmpli(Register src1, const Operand& src2, CRegister cr) { | 965 void Assembler::cmpli(Register src1, const Operand& src2, CRegister cr) { |
956 uintptr_t uimm16 = src2.imm_; | 966 uintptr_t uimm16 = src2.immediate(); |
957 #if V8_TARGET_ARCH_PPC64 | 967 #if V8_TARGET_ARCH_PPC64 |
958 int L = 1; | 968 int L = 1; |
959 #else | 969 #else |
960 int L = 0; | 970 int L = 0; |
961 #endif | 971 #endif |
962 DCHECK(is_uint16(uimm16)); | 972 DCHECK(is_uint16(uimm16)); |
963 DCHECK(cr.code() >= 0 && cr.code() <= 7); | 973 DCHECK(cr.code() >= 0 && cr.code() <= 7); |
964 uimm16 &= kImm16Mask; | 974 uimm16 &= kImm16Mask; |
965 emit(CMPLI | cr.code() * B23 | L * B21 | src1.code() * B16 | uimm16); | 975 emit(CMPLI | cr.code() * B23 | L * B21 | src1.code() * B16 | uimm16); |
966 } | 976 } |
967 | 977 |
968 | 978 |
969 void Assembler::cmpwi(Register src1, const Operand& src2, CRegister cr) { | 979 void Assembler::cmpwi(Register src1, const Operand& src2, CRegister cr) { |
970 intptr_t imm16 = src2.imm_; | 980 intptr_t imm16 = src2.immediate(); |
971 int L = 0; | 981 int L = 0; |
972 int pos = pc_offset(); | 982 int pos = pc_offset(); |
973 DCHECK(is_int16(imm16)); | 983 DCHECK(is_int16(imm16)); |
974 DCHECK(cr.code() >= 0 && cr.code() <= 7); | 984 DCHECK(cr.code() >= 0 && cr.code() <= 7); |
975 imm16 &= kImm16Mask; | 985 imm16 &= kImm16Mask; |
976 | 986 |
977 // For cmpwi against 0, save postition and cr for later examination | 987 // For cmpwi against 0, save postition and cr for later examination |
978 // of potential optimization. | 988 // of potential optimization. |
979 if (imm16 == 0 && pos > 0 && last_bound_pos_ != pos) { | 989 if (imm16 == 0 && pos > 0 && last_bound_pos_ != pos) { |
980 optimizable_cmpi_pos_ = pos; | 990 optimizable_cmpi_pos_ = pos; |
981 cmpi_cr_ = cr; | 991 cmpi_cr_ = cr; |
982 } | 992 } |
983 emit(CMPI | cr.code() * B23 | L * B21 | src1.code() * B16 | imm16); | 993 emit(CMPI | cr.code() * B23 | L * B21 | src1.code() * B16 | imm16); |
984 } | 994 } |
985 | 995 |
986 | 996 |
987 void Assembler::cmplwi(Register src1, const Operand& src2, CRegister cr) { | 997 void Assembler::cmplwi(Register src1, const Operand& src2, CRegister cr) { |
988 uintptr_t uimm16 = src2.imm_; | 998 uintptr_t uimm16 = src2.immediate(); |
989 int L = 0; | 999 int L = 0; |
990 DCHECK(is_uint16(uimm16)); | 1000 DCHECK(is_uint16(uimm16)); |
991 DCHECK(cr.code() >= 0 && cr.code() <= 7); | 1001 DCHECK(cr.code() >= 0 && cr.code() <= 7); |
992 uimm16 &= kImm16Mask; | 1002 uimm16 &= kImm16Mask; |
993 emit(CMPLI | cr.code() * B23 | L * B21 | src1.code() * B16 | uimm16); | 1003 emit(CMPLI | cr.code() * B23 | L * B21 | src1.code() * B16 | uimm16); |
994 } | 1004 } |
995 | 1005 |
996 | 1006 |
997 void Assembler::isel(Register rt, Register ra, Register rb, int cb) { | 1007 void Assembler::isel(Register rt, Register ra, Register rb, int cb) { |
998 emit(EXT2 | ISEL | rt.code() * B21 | ra.code() * B16 | rb.code() * B11 | | 1008 emit(EXT2 | ISEL | rt.code() * B21 | ra.code() * B16 | rb.code() * B11 | |
999 cb * B6); | 1009 cb * B6); |
1000 } | 1010 } |
1001 | 1011 |
1002 | 1012 |
1003 // Pseudo op - load immediate | 1013 // Pseudo op - load immediate |
1004 void Assembler::li(Register dst, const Operand& imm) { | 1014 void Assembler::li(Register dst, const Operand& imm) { |
1005 d_form(ADDI, dst, r0, imm.imm_, true); | 1015 d_form(ADDI, dst, r0, imm.immediate(), true); |
1006 } | 1016 } |
1007 | 1017 |
1008 | 1018 |
1009 void Assembler::lis(Register dst, const Operand& imm) { | 1019 void Assembler::lis(Register dst, const Operand& imm) { |
1010 d_form(ADDIS, dst, r0, imm.imm_, true); | 1020 d_form(ADDIS, dst, r0, imm.immediate(), true); |
1011 } | 1021 } |
1012 | 1022 |
1013 | 1023 |
1014 // Pseudo op - move register | 1024 // Pseudo op - move register |
1015 void Assembler::mr(Register dst, Register src) { | 1025 void Assembler::mr(Register dst, Register src) { |
1016 // actually or(dst, src, src) | 1026 // actually or(dst, src, src) |
1017 orx(dst, src, src); | 1027 orx(dst, src, src); |
1018 } | 1028 } |
1019 | 1029 |
1020 | 1030 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1141 mds_form(EXT5 | RLDCL, ra, rs, rb, mb, r); | 1151 mds_form(EXT5 | RLDCL, ra, rs, rb, mb, r); |
1142 } | 1152 } |
1143 | 1153 |
1144 | 1154 |
1145 void Assembler::rldicr(Register ra, Register rs, int sh, int me, RCBit r) { | 1155 void Assembler::rldicr(Register ra, Register rs, int sh, int me, RCBit r) { |
1146 md_form(EXT5 | RLDICR, ra, rs, sh, me, r); | 1156 md_form(EXT5 | RLDICR, ra, rs, sh, me, r); |
1147 } | 1157 } |
1148 | 1158 |
1149 | 1159 |
1150 void Assembler::sldi(Register dst, Register src, const Operand& val, RCBit rc) { | 1160 void Assembler::sldi(Register dst, Register src, const Operand& val, RCBit rc) { |
1151 DCHECK((64 > val.imm_) && (val.imm_ >= 0)); | 1161 DCHECK((64 > val.immediate()) && (val.immediate() >= 0)); |
1152 rldicr(dst, src, val.imm_, 63 - val.imm_, rc); | 1162 rldicr(dst, src, val.immediate(), 63 - val.immediate(), rc); |
1153 } | 1163 } |
1154 | 1164 |
1155 | 1165 |
1156 void Assembler::srdi(Register dst, Register src, const Operand& val, RCBit rc) { | 1166 void Assembler::srdi(Register dst, Register src, const Operand& val, RCBit rc) { |
1157 DCHECK((64 > val.imm_) && (val.imm_ >= 0)); | 1167 DCHECK((64 > val.immediate()) && (val.immediate() >= 0)); |
1158 rldicl(dst, src, 64 - val.imm_, val.imm_, rc); | 1168 rldicl(dst, src, 64 - val.immediate(), val.immediate(), rc); |
1159 } | 1169 } |
1160 | 1170 |
1161 | 1171 |
1162 void Assembler::clrrdi(Register dst, Register src, const Operand& val, | 1172 void Assembler::clrrdi(Register dst, Register src, const Operand& val, |
1163 RCBit rc) { | 1173 RCBit rc) { |
1164 DCHECK((64 > val.imm_) && (val.imm_ >= 0)); | 1174 DCHECK((64 > val.immediate()) && (val.immediate() >= 0)); |
1165 rldicr(dst, src, 0, 63 - val.imm_, rc); | 1175 rldicr(dst, src, 0, 63 - val.immediate(), rc); |
1166 } | 1176 } |
1167 | 1177 |
1168 | 1178 |
1169 void Assembler::clrldi(Register dst, Register src, const Operand& val, | 1179 void Assembler::clrldi(Register dst, Register src, const Operand& val, |
1170 RCBit rc) { | 1180 RCBit rc) { |
1171 DCHECK((64 > val.imm_) && (val.imm_ >= 0)); | 1181 DCHECK((64 > val.immediate()) && (val.immediate() >= 0)); |
1172 rldicl(dst, src, 0, val.imm_, rc); | 1182 rldicl(dst, src, 0, val.immediate(), rc); |
1173 } | 1183 } |
1174 | 1184 |
1175 | 1185 |
1176 void Assembler::rldimi(Register ra, Register rs, int sh, int mb, RCBit r) { | 1186 void Assembler::rldimi(Register ra, Register rs, int sh, int mb, RCBit r) { |
1177 md_form(EXT5 | RLDIMI, ra, rs, sh, mb, r); | 1187 md_form(EXT5 | RLDIMI, ra, rs, sh, mb, r); |
1178 } | 1188 } |
1179 | 1189 |
1180 | 1190 |
1181 void Assembler::sradi(Register ra, Register rs, int sh, RCBit r) { | 1191 void Assembler::sradi(Register ra, Register rs, int sh, RCBit r) { |
1182 int sh0_4 = sh & 0x1f; | 1192 int sh0_4 = sh & 0x1f; |
(...skipping 959 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2142 } | 2152 } |
2143 | 2153 |
2144 void PatchingAssembler::FlushICache(Isolate* isolate) { | 2154 void PatchingAssembler::FlushICache(Isolate* isolate) { |
2145 Assembler::FlushICache(isolate, buffer_, buffer_size_ - kGap); | 2155 Assembler::FlushICache(isolate, buffer_, buffer_size_ - kGap); |
2146 } | 2156 } |
2147 | 2157 |
2148 } // namespace internal | 2158 } // namespace internal |
2149 } // namespace v8 | 2159 } // namespace v8 |
2150 | 2160 |
2151 #endif // V8_TARGET_ARCH_PPC | 2161 #endif // V8_TARGET_ARCH_PPC |
OLD | NEW |