diff --git a/src/arm64/assembler-arm64-inl.h b/src/arm64/assembler-arm64-inl.h index 5e1bed1e8a9..d990eff698a 100644 --- a/src/arm64/assembler-arm64-inl.h +++ b/src/arm64/assembler-arm64-inl.h @@ -15,6 +15,7 @@ namespace internal { bool CpuFeatures::SupportsCrankshaft() { return true; } +bool CpuFeatures::SupportsSIMD128InCrankshaft() { return false; } void RelocInfo::apply(intptr_t delta, ICacheFlushMode icache_flush_mode) { diff --git a/src/arm64/assembler-arm64.h b/src/arm64/assembler-arm64.h index 82b4500d5f0..047256a9f28 100644 --- a/src/arm64/assembler-arm64.h +++ b/src/arm64/assembler-arm64.h @@ -320,6 +320,20 @@ struct FPRegister : public CPURegister { // End of V8 compatibility section ----------------------- }; +struct SIMD128Register { + static const int kMaxNumRegisters = 0; + + static int ToAllocationIndex(SIMD128Register reg) { + UNIMPLEMENTED(); + return -1; + } + + static const char* AllocationIndexToString(int index) { + UNIMPLEMENTED(); + return NULL; + } +}; + STATIC_ASSERT(sizeof(CPURegister) == sizeof(Register)); STATIC_ASSERT(sizeof(CPURegister) == sizeof(FPRegister)); diff --git a/src/arm64/deoptimizer-arm64.cc b/src/arm64/deoptimizer-arm64.cc index d67dc8fcd9b..b1b17cc09b4 100644 --- a/src/arm64/deoptimizer-arm64.cc +++ b/src/arm64/deoptimizer-arm64.cc @@ -107,6 +107,9 @@ void Deoptimizer::CopyDoubleRegisters(FrameDescription* output_frame) { } +void Deoptimizer::CopySIMD128Registers(FrameDescription* output_frame) { +} + #define __ masm()-> @@ -351,6 +354,18 @@ void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { } +double FrameDescription::GetDoubleRegister(unsigned n) const { + DCHECK(n < double_registers_.size()); + return double_registers_[n]; +} + + +void FrameDescription::SetDoubleRegister(unsigned n, double value) { + DCHECK(n < double_registers_.size()); + double_registers_[n] = value; +} + + #undef __ } } // namespace v8::internal diff --git a/src/arm64/lithium-arm64.cc b/src/arm64/lithium-arm64.cc index 502b046927f..80857b13f59 100644 --- a/src/arm64/lithium-arm64.cc +++ b/src/arm64/lithium-arm64.cc @@ -2752,4 +2752,39 @@ LInstruction* LChunkBuilder::DoAllocateBlockContext( } +LInstruction* LChunkBuilder::DoNullarySIMDOperation( + HNullarySIMDOperation* instr) { + UNIMPLEMENTED(); + return NULL; +} + + +LInstruction* LChunkBuilder::DoUnarySIMDOperation( + HUnarySIMDOperation* instr) { + UNIMPLEMENTED(); + return NULL; +} + + +LInstruction* LChunkBuilder::DoBinarySIMDOperation( + HBinarySIMDOperation* instr) { + UNIMPLEMENTED(); + return NULL; +} + + +LInstruction* LChunkBuilder::DoTernarySIMDOperation( + HTernarySIMDOperation* instr) { + UNIMPLEMENTED(); + return NULL; +} + + +LInstruction* LChunkBuilder::DoQuarternarySIMDOperation( + HQuarternarySIMDOperation* instr) { + UNIMPLEMENTED(); + return NULL; +} + + } } // namespace v8::internal diff --git a/src/arm64/lithium-codegen-arm64.cc b/src/arm64/lithium-codegen-arm64.cc index 29986424629..82ec3a2b23f 100644 --- a/src/arm64/lithium-codegen-arm64.cc +++ b/src/arm64/lithium-codegen-arm64.cc @@ -3497,8 +3497,14 @@ void LCodeGen::DoLoadKeyedExternal(LLoadKeyedExternal* instr) { break; case FLOAT32_ELEMENTS: case FLOAT64_ELEMENTS: + case INT32x4_ELEMENTS: + case FLOAT32x4_ELEMENTS: + case FLOAT64x2_ELEMENTS: case EXTERNAL_FLOAT32_ELEMENTS: case EXTERNAL_FLOAT64_ELEMENTS: + case EXTERNAL_INT32x4_ELEMENTS: + case EXTERNAL_FLOAT32x4_ELEMENTS: + case EXTERNAL_FLOAT64x2_ELEMENTS: case FAST_HOLEY_DOUBLE_ELEMENTS: case FAST_HOLEY_ELEMENTS: case FAST_HOLEY_SMI_ELEMENTS: @@ -5216,8 +5222,14 @@ void LCodeGen::DoStoreKeyedExternal(LStoreKeyedExternal* instr) { break; case FLOAT32_ELEMENTS: case FLOAT64_ELEMENTS: + case INT32x4_ELEMENTS: + case FLOAT32x4_ELEMENTS: + case FLOAT64x2_ELEMENTS: case EXTERNAL_FLOAT32_ELEMENTS: case EXTERNAL_FLOAT64_ELEMENTS: + case EXTERNAL_INT32x4_ELEMENTS: + case EXTERNAL_FLOAT32x4_ELEMENTS: + case EXTERNAL_FLOAT64x2_ELEMENTS: case FAST_DOUBLE_ELEMENTS: case FAST_ELEMENTS: case FAST_SMI_ELEMENTS: