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

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

Issue 2754263004: PPC: [Atomics] Make Atomics.exchange a builtin using TF (Closed)
Patch Set: rebased Created 3 years, 8 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/constants-ppc.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 623 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 if (!is_uint16(val)) { 634 if (!is_uint16(val)) {
635 PrintF("val = %" V8PRIdPTR ", 0x%" V8PRIxPTR 635 PrintF("val = %" V8PRIdPTR ", 0x%" V8PRIxPTR
636 ", is_unsigned_imm16(val)=%d, kImm16Mask=0x%x\n", 636 ", is_unsigned_imm16(val)=%d, kImm16Mask=0x%x\n",
637 val, val, is_uint16(val), kImm16Mask); 637 val, val, is_uint16(val), kImm16Mask);
638 } 638 }
639 CHECK(is_uint16(val)); 639 CHECK(is_uint16(val));
640 } 640 }
641 emit(instr | rt.code() * B21 | ra.code() * B16 | (kImm16Mask & val)); 641 emit(instr | rt.code() * B21 | ra.code() * B16 | (kImm16Mask & val));
642 } 642 }
643 643
644
645 void Assembler::xo_form(Instr instr, Register rt, Register ra, Register rb, 644 void Assembler::xo_form(Instr instr, Register rt, Register ra, Register rb,
646 OEBit o, RCBit r) { 645 OEBit o, RCBit r) {
647 emit(instr | rt.code() * B21 | ra.code() * B16 | rb.code() * B11 | o | r); 646 emit(instr | rt.code() * B21 | ra.code() * B16 | rb.code() * B11 | o | r);
648 } 647 }
649 648
650 void Assembler::md_form(Instr instr, Register ra, Register rs, int shift, 649 void Assembler::md_form(Instr instr, Register ra, Register rs, int shift,
651 int maskbit, RCBit r) { 650 int maskbit, RCBit r) {
652 int sh0_4 = shift & 0x1f; 651 int sh0_4 = shift & 0x1f;
653 int sh5 = (shift >> 5) & 0x1; 652 int sh5 = (shift >> 5) & 0x1;
654 int m0_4 = maskbit & 0x1f; 653 int m0_4 = maskbit & 0x1f;
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 int offset = src.offset(); 1053 int offset = src.offset();
1055 DCHECK(!src.ra_.is(r0)); 1054 DCHECK(!src.ra_.is(r0));
1056 CHECK(!(offset & 3) && is_int16(offset)); 1055 CHECK(!(offset & 3) && is_int16(offset));
1057 offset = kImm16Mask & offset; 1056 offset = kImm16Mask & offset;
1058 emit(LD | dst.code() * B21 | src.ra().code() * B16 | offset | 2); 1057 emit(LD | dst.code() * B21 | src.ra().code() * B16 | offset | 2);
1059 #else 1058 #else
1060 lwz(dst, src); 1059 lwz(dst, src);
1061 #endif 1060 #endif
1062 } 1061 }
1063 1062
1064
1065 void Assembler::stb(Register dst, const MemOperand& src) { 1063 void Assembler::stb(Register dst, const MemOperand& src) {
1066 DCHECK(!src.ra_.is(r0)); 1064 DCHECK(!src.ra_.is(r0));
1067 d_form(STB, dst, src.ra(), src.offset(), true); 1065 d_form(STB, dst, src.ra(), src.offset(), true);
1068 } 1066 }
1069 1067
1070 1068
1071 void Assembler::sth(Register dst, const MemOperand& src) { 1069 void Assembler::sth(Register dst, const MemOperand& src) {
1072 DCHECK(!src.ra_.is(r0)); 1070 DCHECK(!src.ra_.is(r0));
1073 d_form(STH, dst, src.ra(), src.offset(), true); 1071 d_form(STH, dst, src.ra(), src.offset(), true);
1074 } 1072 }
(...skipping 1062 matching lines...) Expand 10 before | Expand all | Expand 10 after
2137 } 2135 }
2138 2136
2139 void PatchingAssembler::FlushICache(Isolate* isolate) { 2137 void PatchingAssembler::FlushICache(Isolate* isolate) {
2140 Assembler::FlushICache(isolate, buffer_, buffer_size_ - kGap); 2138 Assembler::FlushICache(isolate, buffer_, buffer_size_ - kGap);
2141 } 2139 }
2142 2140
2143 } // namespace internal 2141 } // namespace internal
2144 } // namespace v8 2142 } // namespace v8
2145 2143
2146 #endif // V8_TARGET_ARCH_PPC 2144 #endif // V8_TARGET_ARCH_PPC
OLDNEW
« no previous file with comments | « src/ppc/assembler-ppc.h ('k') | src/ppc/constants-ppc.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698