| OLD | NEW |
| 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 "src/compiler/instruction-selector-impl.h" | 5 #include "src/compiler/instruction-selector-impl.h" |
| 6 #include "src/compiler/node-matchers.h" | 6 #include "src/compiler/node-matchers.h" |
| 7 #include "src/compiler/node-properties.h" | 7 #include "src/compiler/node-properties.h" |
| 8 | 8 |
| 9 namespace v8 { | 9 namespace v8 { |
| 10 namespace internal { | 10 namespace internal { |
| (...skipping 2231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2242 Emit(kArm64Float64InsertHighWord32, g.DefineAsRegister(node), | 2242 Emit(kArm64Float64InsertHighWord32, g.DefineAsRegister(node), |
| 2243 g.UseRegister(left), g.UseRegister(right)); | 2243 g.UseRegister(left), g.UseRegister(right)); |
| 2244 } | 2244 } |
| 2245 | 2245 |
| 2246 void InstructionSelector::VisitAtomicLoad(Node* node) { | 2246 void InstructionSelector::VisitAtomicLoad(Node* node) { |
| 2247 LoadRepresentation load_rep = LoadRepresentationOf(node->op()); | 2247 LoadRepresentation load_rep = LoadRepresentationOf(node->op()); |
| 2248 Arm64OperandGenerator g(this); | 2248 Arm64OperandGenerator g(this); |
| 2249 Node* base = node->InputAt(0); | 2249 Node* base = node->InputAt(0); |
| 2250 Node* index = node->InputAt(1); | 2250 Node* index = node->InputAt(1); |
| 2251 ArchOpcode opcode = kArchNop; | 2251 ArchOpcode opcode = kArchNop; |
| 2252 ImmediateMode immediate_mode = kNoImmediate; | |
| 2253 switch (load_rep.representation()) { | 2252 switch (load_rep.representation()) { |
| 2254 case MachineRepresentation::kWord8: | 2253 case MachineRepresentation::kWord8: |
| 2255 opcode = load_rep.IsSigned() ? kAtomicLoadInt8 : kAtomicLoadUint8; | 2254 opcode = load_rep.IsSigned() ? kAtomicLoadInt8 : kAtomicLoadUint8; |
| 2256 immediate_mode = kLoadStoreImm8; | |
| 2257 break; | 2255 break; |
| 2258 case MachineRepresentation::kWord16: | 2256 case MachineRepresentation::kWord16: |
| 2259 opcode = load_rep.IsSigned() ? kAtomicLoadInt16 : kAtomicLoadUint16; | 2257 opcode = load_rep.IsSigned() ? kAtomicLoadInt16 : kAtomicLoadUint16; |
| 2260 immediate_mode = kLoadStoreImm16; | |
| 2261 break; | 2258 break; |
| 2262 case MachineRepresentation::kWord32: | 2259 case MachineRepresentation::kWord32: |
| 2263 opcode = kAtomicLoadWord32; | 2260 opcode = kAtomicLoadWord32; |
| 2264 immediate_mode = kLoadStoreImm32; | |
| 2265 break; | 2261 break; |
| 2266 default: | 2262 default: |
| 2267 UNREACHABLE(); | 2263 UNREACHABLE(); |
| 2268 return; | 2264 return; |
| 2269 } | 2265 } |
| 2270 Emit(opcode | AddressingModeField::encode(kMode_MRR), | 2266 Emit(opcode | AddressingModeField::encode(kMode_MRR), |
| 2271 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(index)); | 2267 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(index)); |
| 2272 } | 2268 } |
| 2273 | 2269 |
| 2274 // static | 2270 // static |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2290 MachineOperatorBuilder::kWord32ShiftIsSafe | | 2286 MachineOperatorBuilder::kWord32ShiftIsSafe | |
| 2291 MachineOperatorBuilder::kInt32DivIsSafe | | 2287 MachineOperatorBuilder::kInt32DivIsSafe | |
| 2292 MachineOperatorBuilder::kUint32DivIsSafe | | 2288 MachineOperatorBuilder::kUint32DivIsSafe | |
| 2293 MachineOperatorBuilder::kWord32ReverseBits | | 2289 MachineOperatorBuilder::kWord32ReverseBits | |
| 2294 MachineOperatorBuilder::kWord64ReverseBits; | 2290 MachineOperatorBuilder::kWord64ReverseBits; |
| 2295 } | 2291 } |
| 2296 | 2292 |
| 2297 } // namespace compiler | 2293 } // namespace compiler |
| 2298 } // namespace internal | 2294 } // namespace internal |
| 2299 } // namespace v8 | 2295 } // namespace v8 |
| OLD | NEW |