SimdInt64x2Operation.h 1.4 KB

1234567891011121314151617181920212223242526
  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. #pragma once
  6. namespace Js {
  7. struct SIMDInt64x2Operation
  8. {
  9. static SIMDValue OpSplat(int64 x);
  10. static SIMDValue OpAdd(const SIMDValue& a, const SIMDValue& b);
  11. static SIMDValue OpSub(const SIMDValue& a, const SIMDValue& b);
  12. static SIMDValue OpNeg(const SIMDValue& a);
  13. //These are directly called into from JIT as of now. Pointer-based arguments are used to ensure
  14. //that calling conventions are consistent across x86/x64 and match call sequences JIT generates.
  15. //TODO: Change back to "const SIMDValue& a" after getting rid of the jit helpers.
  16. template<typename T> static void OpTrunc(SIMDValue* dst, SIMDValue* src);
  17. static void OpShiftLeftByScalar(SIMDValue* dst, SIMDValue* src, int count);
  18. static void OpShiftRightByScalar(SIMDValue* dst, SIMDValue* src, int count);
  19. static void OpShiftRightByScalarU(SIMDValue* dst, SIMDValue* src, int count);
  20. static void OpReplaceLane(SIMDValue* dst, SIMDValue* src, int64 val, uint index);
  21. };
  22. } // namespace Js