mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 12:55:46 +00:00
Bug 1225908 - SimdTypeToArrayElementType. r=bbouvier
This function returns the typed array element type that corresponds to the lanes in a SIMD vector type. It is used to handle SIMD loads and stores from a typed array.
This commit is contained in:
parent
a687ecc81e
commit
12062418b8
@ -3473,8 +3473,10 @@ IonBuilder::inlineSimdShuffle(CallInfo& callInfo, JSNative native, SimdTypeDescr
|
|||||||
return boxSimd(callInfo, ins, templateObj);
|
return boxSimd(callInfo, ins, templateObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the typed array element type corresponding to the lanes in a SIMD vector type.
|
||||||
|
// This only applies to SIMD types that can be loaded and stored to a typed array.
|
||||||
static Scalar::Type
|
static Scalar::Type
|
||||||
SimdTypeToScalarType(SimdTypeDescr::Type type)
|
SimdTypeToArrayElementType(SimdTypeDescr::Type type)
|
||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SimdTypeDescr::Float32x4: return Scalar::Float32x4;
|
case SimdTypeDescr::Float32x4: return Scalar::Float32x4;
|
||||||
@ -3538,7 +3540,7 @@ IonBuilder::inlineSimdLoad(CallInfo& callInfo, JSNative native, SimdTypeDescr::T
|
|||||||
if (!checkInlineSimd(callInfo, native, type, 2, &templateObj))
|
if (!checkInlineSimd(callInfo, native, type, 2, &templateObj))
|
||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
|
|
||||||
Scalar::Type simdType = SimdTypeToScalarType(type);
|
Scalar::Type simdType = SimdTypeToArrayElementType(type);
|
||||||
|
|
||||||
MDefinition* index = nullptr;
|
MDefinition* index = nullptr;
|
||||||
MInstruction* elements = nullptr;
|
MInstruction* elements = nullptr;
|
||||||
@ -3561,7 +3563,7 @@ IonBuilder::inlineSimdStore(CallInfo& callInfo, JSNative native, SimdTypeDescr::
|
|||||||
if (!checkInlineSimd(callInfo, native, type, 3, &templateObj))
|
if (!checkInlineSimd(callInfo, native, type, 3, &templateObj))
|
||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
|
|
||||||
Scalar::Type simdType = SimdTypeToScalarType(type);
|
Scalar::Type simdType = SimdTypeToArrayElementType(type);
|
||||||
|
|
||||||
MDefinition* index = nullptr;
|
MDefinition* index = nullptr;
|
||||||
MInstruction* elements = nullptr;
|
MInstruction* elements = nullptr;
|
||||||
|
Loading…
Reference in New Issue
Block a user