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

Side by Side Diff: src/s390/macro-assembler-s390.cc

Issue 2072863003: S390: Enable unaligned accesses and character preloading in regexp. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <assert.h> // For assert 5 #include <assert.h> // For assert
6 #include <limits.h> // For LONG_MIN, LONG_MAX. 6 #include <limits.h> // For LONG_MIN, LONG_MAX.
7 7
8 #if V8_TARGET_ARCH_S390 8 #if V8_TARGET_ARCH_S390
9 9
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 5053 matching lines...) Expand 10 before | Expand all | Expand 10 after
5064 if (use_RXform) { 5064 if (use_RXform) {
5065 l(dst, mem); 5065 l(dst, mem);
5066 } else if (use_RXYform) { 5066 } else if (use_RXYform) {
5067 ly(dst, mem); 5067 ly(dst, mem);
5068 } else { 5068 } else {
5069 ly(dst, MemOperand(base, scratch)); 5069 ly(dst, MemOperand(base, scratch));
5070 } 5070 }
5071 #endif 5071 #endif
5072 } 5072 }
5073 5073
5074 void MacroAssembler::LoadLogicalHalfWordP(Register dst, const MemOperand& mem) {
5075 #if V8_TARGET_ARCH_S390X
5076 llgh(dst, mem);
5077 #else
5078 llh(dst, mem);
5079 #endif
5080 }
5081
5082 void MacroAssembler::LoadLogicalHalfWordP(Register dst, Register src) {
5083 #if V8_TARGET_ARCH_S390X
5084 llghr(dst, src);
5085 #else
5086 llhr(dst, src);
5087 #endif
5088 }
5089
5074 void MacroAssembler::LoadB(Register dst, const MemOperand& mem) { 5090 void MacroAssembler::LoadB(Register dst, const MemOperand& mem) {
5075 #if V8_TARGET_ARCH_S390X 5091 #if V8_TARGET_ARCH_S390X
5076 lgb(dst, mem); 5092 lgb(dst, mem);
5077 #else 5093 #else
5078 lb(dst, mem); 5094 lb(dst, mem);
5079 #endif 5095 #endif
5080 } 5096 }
5081 5097
5082 void MacroAssembler::LoadB(Register dst, Register src) { 5098 void MacroAssembler::LoadB(Register dst, Register src) {
5083 #if V8_TARGET_ARCH_S390X 5099 #if V8_TARGET_ARCH_S390X
5084 lgbr(dst, src); 5100 lgbr(dst, src);
5085 #else 5101 #else
5086 lbr(dst, src); 5102 lbr(dst, src);
5087 #endif 5103 #endif
5088 } 5104 }
5089 5105
5090 void MacroAssembler::LoadlB(Register dst, const MemOperand& mem) { 5106 void MacroAssembler::LoadlB(Register dst, const MemOperand& mem) {
5091 #if V8_TARGET_ARCH_S390X 5107 #if V8_TARGET_ARCH_S390X
5092 llgc(dst, mem); 5108 llgc(dst, mem);
5093 #else 5109 #else
5094 llc(dst, mem); 5110 llc(dst, mem);
5095 #endif 5111 #endif
5096 } 5112 }
5097 5113
5114 void MacroAssembler::LoadReversedWordP(Register dst, const MemOperand& mem) {
JoranSiu 2016/06/16 21:05:16 Should these be better named as LoadLogicalReverse
5115 lrv(dst, mem);
5116 LoadlW(dst, dst);
5117 }
5118
5119
5120 void MacroAssembler::LoadReversedHalfWordP(Register dst,
5121 const MemOperand& mem) {
5122 lrvh(dst, mem);
5123 LoadLogicalHalfWordP(dst, dst);
5124 }
5125
5126
5098 // Load And Test (Reg <- Reg) 5127 // Load And Test (Reg <- Reg)
5099 void MacroAssembler::LoadAndTest32(Register dst, Register src) { 5128 void MacroAssembler::LoadAndTest32(Register dst, Register src) {
5100 ltr(dst, src); 5129 ltr(dst, src);
5101 } 5130 }
5102 5131
5103 // Load And Test 5132 // Load And Test
5104 // (Register dst(ptr) = Register src (32 | 32->64)) 5133 // (Register dst(ptr) = Register src (32 | 32->64))
5105 // src is treated as a 32-bit signed integer, which is sign extended to 5134 // src is treated as a 32-bit signed integer, which is sign extended to
5106 // 64-bit if necessary. 5135 // 64-bit if necessary.
5107 void MacroAssembler::LoadAndTestP_ExtendSrc(Register dst, Register src) { 5136 void MacroAssembler::LoadAndTestP_ExtendSrc(Register dst, Register src) {
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
5526 } 5555 }
5527 if (mag.shift > 0) ShiftRightArith(result, result, Operand(mag.shift)); 5556 if (mag.shift > 0) ShiftRightArith(result, result, Operand(mag.shift));
5528 ExtractBit(r0, dividend, 31); 5557 ExtractBit(r0, dividend, 31);
5529 AddP(result, r0); 5558 AddP(result, r0);
5530 } 5559 }
5531 5560
5532 } // namespace internal 5561 } // namespace internal
5533 } // namespace v8 5562 } // namespace v8
5534 5563
5535 #endif // V8_TARGET_ARCH_S390 5564 #endif // V8_TARGET_ARCH_S390
OLDNEW
« src/regexp/s390/regexp-macro-assembler-s390.cc ('K') | « src/s390/macro-assembler-s390.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698