JavascriptSimdInt8x16.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. #include "RuntimeLibraryPch.h"
  6. namespace Js
  7. {
  8. JavascriptSIMDInt8x16::JavascriptSIMDInt8x16(SIMDValue *val, StaticType *type) : JavascriptSIMDType(type), value(*val)
  9. {
  10. Assert(type->GetTypeId() == TypeIds_SIMDInt8x16);
  11. }
  12. JavascriptSIMDInt8x16* JavascriptSIMDInt8x16::New(SIMDValue *val, ScriptContext* requestContext)
  13. {
  14. return (JavascriptSIMDInt8x16 *)AllocatorNew(Recycler, requestContext->GetRecycler(), JavascriptSIMDInt8x16, val, requestContext->GetLibrary()->GetSIMDInt8x16TypeStatic());
  15. }
  16. bool JavascriptSIMDInt8x16::Is(Var instance)
  17. {
  18. return JavascriptOperators::GetTypeId(instance) == TypeIds_SIMDInt8x16;
  19. }
  20. JavascriptSIMDInt8x16* JavascriptSIMDInt8x16::FromVar(Var aValue)
  21. {
  22. Assert(aValue);
  23. AssertMsg(Is(aValue), "Ensure var is actually a 'JavascriptSIMDInt8x16'");
  24. return reinterpret_cast<JavascriptSIMDInt8x16 *>(aValue);
  25. }
  26. Var JavascriptSIMDInt8x16::CallToLocaleString(RecyclableObject& obj, ScriptContext& requestContext, SIMDValue simdValue,
  27. const Var* args, uint numArgs, CallInfo callInfo)
  28. {
  29. wchar_t *typeString = L"SIMD.Int8x16(";
  30. return JavascriptSIMDObject::FromVar(&obj)->ToLocaleString<int8, 16>(args, numArgs, typeString,
  31. simdValue.i8, &callInfo, &requestContext);
  32. }
  33. RecyclableObject * JavascriptSIMDInt8x16::CloneToScriptContext(ScriptContext* requestContext)
  34. {
  35. return JavascriptSIMDInt8x16::New(&value, requestContext);
  36. }
  37. const wchar_t* JavascriptSIMDInt8x16::GetFullBuiltinName(wchar_t** aBuffer, const wchar_t* name)
  38. {
  39. Assert(aBuffer && *aBuffer);
  40. swprintf_s(*aBuffer, SIMD_STRING_BUFFER_MAX, L"SIMD.Int8x16.%s", name);
  41. return *aBuffer;
  42. }
  43. Var JavascriptSIMDInt8x16::Copy(ScriptContext* requestContext)
  44. {
  45. return JavascriptSIMDInt8x16::New(&this->value, requestContext);
  46. }
  47. }