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

Side by Side Diff: src/compiler/ppc/instruction-selector-ppc.cc

Issue 2700813002: [V8] Implement SIMD Boolean vector types to allow mask registers. (Closed)
Patch Set: Rebase. Created 3 years, 10 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/compiler/opcodes.h ('k') | src/compiler/register-allocator.cc » ('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 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/base/adapters.h" 5 #include "src/base/adapters.h"
6 #include "src/compiler/instruction-selector-impl.h" 6 #include "src/compiler/instruction-selector-impl.h"
7 #include "src/compiler/node-matchers.h" 7 #include "src/compiler/node-matchers.h"
8 #include "src/compiler/node-properties.h" 8 #include "src/compiler/node-properties.h"
9 #include "src/ppc/frames-ppc.h" 9 #include "src/ppc/frames-ppc.h"
10 10
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 case MachineRepresentation::kTaggedPointer: // Fall through. 209 case MachineRepresentation::kTaggedPointer: // Fall through.
210 case MachineRepresentation::kTagged: // Fall through. 210 case MachineRepresentation::kTagged: // Fall through.
211 case MachineRepresentation::kWord64: 211 case MachineRepresentation::kWord64:
212 opcode = kPPC_LoadWord64; 212 opcode = kPPC_LoadWord64;
213 mode = kInt16Imm_4ByteAligned; 213 mode = kInt16Imm_4ByteAligned;
214 break; 214 break;
215 #else 215 #else
216 case MachineRepresentation::kWord64: // Fall through. 216 case MachineRepresentation::kWord64: // Fall through.
217 #endif 217 #endif
218 case MachineRepresentation::kSimd128: // Fall through. 218 case MachineRepresentation::kSimd128: // Fall through.
219 case MachineRepresentation::kSimd1x4: // Fall through.
220 case MachineRepresentation::kSimd1x8: // Fall through.
221 case MachineRepresentation::kSimd1x16: // Fall through.
219 case MachineRepresentation::kNone: 222 case MachineRepresentation::kNone:
220 UNREACHABLE(); 223 UNREACHABLE();
221 return; 224 return;
222 } 225 }
223 if (g.CanBeImmediate(offset, mode)) { 226 if (g.CanBeImmediate(offset, mode)) {
224 Emit(opcode | AddressingModeField::encode(kMode_MRI), 227 Emit(opcode | AddressingModeField::encode(kMode_MRI),
225 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(offset)); 228 g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(offset));
226 } else if (g.CanBeImmediate(base, mode)) { 229 } else if (g.CanBeImmediate(base, mode)) {
227 Emit(opcode | AddressingModeField::encode(kMode_MRI), 230 Emit(opcode | AddressingModeField::encode(kMode_MRI),
228 g.DefineAsRegister(node), g.UseRegister(offset), g.UseImmediate(base)); 231 g.DefineAsRegister(node), g.UseRegister(offset), g.UseImmediate(base));
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 case MachineRepresentation::kTaggedPointer: // Fall through. 321 case MachineRepresentation::kTaggedPointer: // Fall through.
319 case MachineRepresentation::kTagged: // Fall through. 322 case MachineRepresentation::kTagged: // Fall through.
320 case MachineRepresentation::kWord64: 323 case MachineRepresentation::kWord64:
321 opcode = kPPC_StoreWord64; 324 opcode = kPPC_StoreWord64;
322 mode = kInt16Imm_4ByteAligned; 325 mode = kInt16Imm_4ByteAligned;
323 break; 326 break;
324 #else 327 #else
325 case MachineRepresentation::kWord64: // Fall through. 328 case MachineRepresentation::kWord64: // Fall through.
326 #endif 329 #endif
327 case MachineRepresentation::kSimd128: // Fall through. 330 case MachineRepresentation::kSimd128: // Fall through.
331 case MachineRepresentation::kSimd1x4: // Fall through.
332 case MachineRepresentation::kSimd1x8: // Fall through.
333 case MachineRepresentation::kSimd1x16: // Fall through.
328 case MachineRepresentation::kNone: 334 case MachineRepresentation::kNone:
329 UNREACHABLE(); 335 UNREACHABLE();
330 return; 336 return;
331 } 337 }
332 if (g.CanBeImmediate(offset, mode)) { 338 if (g.CanBeImmediate(offset, mode)) {
333 Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), 339 Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(),
334 g.UseRegister(base), g.UseImmediate(offset), g.UseRegister(value)); 340 g.UseRegister(base), g.UseImmediate(offset), g.UseRegister(value));
335 } else if (g.CanBeImmediate(base, mode)) { 341 } else if (g.CanBeImmediate(base, mode)) {
336 Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), 342 Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(),
337 g.UseRegister(offset), g.UseImmediate(base), g.UseRegister(value)); 343 g.UseRegister(offset), g.UseImmediate(base), g.UseRegister(value));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 opcode = kCheckedLoadFloat64; 388 opcode = kCheckedLoadFloat64;
383 break; 389 break;
384 case MachineRepresentation::kBit: // Fall through. 390 case MachineRepresentation::kBit: // Fall through.
385 case MachineRepresentation::kTaggedSigned: // Fall through. 391 case MachineRepresentation::kTaggedSigned: // Fall through.
386 case MachineRepresentation::kTaggedPointer: // Fall through. 392 case MachineRepresentation::kTaggedPointer: // Fall through.
387 case MachineRepresentation::kTagged: // Fall through. 393 case MachineRepresentation::kTagged: // Fall through.
388 #if !V8_TARGET_ARCH_PPC64 394 #if !V8_TARGET_ARCH_PPC64
389 case MachineRepresentation::kWord64: // Fall through. 395 case MachineRepresentation::kWord64: // Fall through.
390 #endif 396 #endif
391 case MachineRepresentation::kSimd128: // Fall through. 397 case MachineRepresentation::kSimd128: // Fall through.
398 case MachineRepresentation::kSimd1x4: // Fall through.
399 case MachineRepresentation::kSimd1x8: // Fall through.
400 case MachineRepresentation::kSimd1x16: // Fall through.
392 case MachineRepresentation::kNone: 401 case MachineRepresentation::kNone:
393 UNREACHABLE(); 402 UNREACHABLE();
394 return; 403 return;
395 } 404 }
396 AddressingMode addressingMode = kMode_MRR; 405 AddressingMode addressingMode = kMode_MRR;
397 Emit(opcode | AddressingModeField::encode(addressingMode), 406 Emit(opcode | AddressingModeField::encode(addressingMode),
398 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(offset), 407 g.DefineAsRegister(node), g.UseRegister(base), g.UseRegister(offset),
399 g.UseOperand(length, kInt16Imm_Unsigned)); 408 g.UseOperand(length, kInt16Imm_Unsigned));
400 } 409 }
401 410
(...skipping 28 matching lines...) Expand all
430 opcode = kCheckedStoreFloat64; 439 opcode = kCheckedStoreFloat64;
431 break; 440 break;
432 case MachineRepresentation::kBit: // Fall through. 441 case MachineRepresentation::kBit: // Fall through.
433 case MachineRepresentation::kTaggedSigned: // Fall through. 442 case MachineRepresentation::kTaggedSigned: // Fall through.
434 case MachineRepresentation::kTaggedPointer: // Fall through. 443 case MachineRepresentation::kTaggedPointer: // Fall through.
435 case MachineRepresentation::kTagged: // Fall through. 444 case MachineRepresentation::kTagged: // Fall through.
436 #if !V8_TARGET_ARCH_PPC64 445 #if !V8_TARGET_ARCH_PPC64
437 case MachineRepresentation::kWord64: // Fall through. 446 case MachineRepresentation::kWord64: // Fall through.
438 #endif 447 #endif
439 case MachineRepresentation::kSimd128: // Fall through. 448 case MachineRepresentation::kSimd128: // Fall through.
449 case MachineRepresentation::kSimd1x4: // Fall through.
450 case MachineRepresentation::kSimd1x8: // Fall through.
451 case MachineRepresentation::kSimd1x16: // Fall through.
440 case MachineRepresentation::kNone: 452 case MachineRepresentation::kNone:
441 UNREACHABLE(); 453 UNREACHABLE();
442 return; 454 return;
443 } 455 }
444 AddressingMode addressingMode = kMode_MRR; 456 AddressingMode addressingMode = kMode_MRR;
445 Emit(opcode | AddressingModeField::encode(addressingMode), g.NoOutput(), 457 Emit(opcode | AddressingModeField::encode(addressingMode), g.NoOutput(),
446 g.UseRegister(base), g.UseRegister(offset), 458 g.UseRegister(base), g.UseRegister(offset),
447 g.UseOperand(length, kInt16Imm_Unsigned), g.UseRegister(value)); 459 g.UseOperand(length, kInt16Imm_Unsigned), g.UseRegister(value));
448 } 460 }
449 461
(...skipping 1669 matching lines...) Expand 10 before | Expand all | Expand 10 after
2119 // static 2131 // static
2120 MachineOperatorBuilder::AlignmentRequirements 2132 MachineOperatorBuilder::AlignmentRequirements
2121 InstructionSelector::AlignmentRequirements() { 2133 InstructionSelector::AlignmentRequirements() {
2122 return MachineOperatorBuilder::AlignmentRequirements:: 2134 return MachineOperatorBuilder::AlignmentRequirements::
2123 FullUnalignedAccessSupport(); 2135 FullUnalignedAccessSupport();
2124 } 2136 }
2125 2137
2126 } // namespace compiler 2138 } // namespace compiler
2127 } // namespace internal 2139 } // namespace internal
2128 } // namespace v8 2140 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/opcodes.h ('k') | src/compiler/register-allocator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698