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

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

Issue 2921473003: PPC/S390: [compiler] Delay allocation of code-embedded heap numbers.
Patch Set: additional changes for s390 Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ppc/assembler-ppc.h ('k') | src/ppc/assembler-ppc-inl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions 5 // modification, are permitted provided that the following conditions
6 // are met: 6 // are met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/ppc/assembler-ppc.h ('k') | src/ppc/assembler-ppc-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698