Mark TranscendentalCacheSSE2Stub as allowing internal stub calls. Mark pextrd instruction as requiring SSE 4.1.

Review URL: http://codereview.chromium.org/5901001

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6033 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
whesse@chromium.org 2010-12-15 16:10:13 +00:00
parent 06a684d353
commit 564d65958f
3 changed files with 5 additions and 3 deletions

View File

@ -47,6 +47,7 @@ namespace internal {
V(Compare) \
V(CompareIC) \
V(MathPow) \
V(TranscendentalCacheSSE2) \
V(RecordWrite) \
V(ConvertToDouble) \
V(WriteInt32ToHeapNumber) \
@ -56,7 +57,6 @@ namespace internal {
V(FastNewContext) \
V(FastCloneShallowArray) \
V(TranscendentalCache) \
V(TranscendentalCacheSSE2) \
V(GenericUnaryOp) \
V(RevertToNumber) \
V(ToBoolean) \

View File

@ -2502,7 +2502,7 @@ void Assembler::pshufd(XMMRegister dst, XMMRegister src, int8_t shuffle) {
void Assembler::pextrd(const Operand& dst, XMMRegister src, int8_t offset) {
ASSERT(CpuFeatures::IsEnabled(SSE2));
ASSERT(CpuFeatures::IsEnabled(SSE4_1));
EnsureSpace ensure_space(this);
last_pc_ = pc_;
EMIT(0x66);

View File

@ -2790,9 +2790,11 @@ void TranscendentalCacheSSE2Stub::Generate(MacroAssembler* masm) {
__ bind(&call_runtime);
__ AllocateHeapNumber(eax, edi, no_reg, &skip_cache);
__ push(eax);
__ movdbl(FieldOperand(eax, HeapNumber::kValueOffset), xmm1);
__ EnterInternalFrame();
__ push(eax);
__ CallRuntime(RuntimeFunction(), 1);
__ LeaveInternalFrame();
__ movdbl(xmm1, FieldOperand(eax, HeapNumber::kValueOffset));
__ Ret();
}