Skip to content
This repository has been archived by the owner on Apr 3, 2020. It is now read-only.

Commit

Permalink
[SIMD.js] Fix build failure on arm64 architecture
Browse files Browse the repository at this point in the history
Adapt deoptimizer and lithium to SIMD128 register and data types.

BUG=XWALK-2998
  • Loading branch information
huningxin committed Nov 25, 2014
1 parent 69921d6 commit 8299b0f
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/arm64/assembler-arm64-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
14 changes: 14 additions & 0 deletions src/arm64/assembler-arm64.h
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
15 changes: 15 additions & 0 deletions src/arm64/deoptimizer-arm64.cc
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ void Deoptimizer::CopyDoubleRegisters(FrameDescription* output_frame) {
}


void Deoptimizer::CopySIMD128Registers(FrameDescription* output_frame) {
}


#define __ masm()->

Expand Down Expand Up @@ -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
35 changes: 35 additions & 0 deletions src/arm64/lithium-arm64.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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
12 changes: 12 additions & 0 deletions src/arm64/lithium-codegen-arm64.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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:
Expand Down

0 comments on commit 8299b0f

Please sign in to comment.