SIMDInt8x16Lib.h 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. class SIMDInt8x16Lib
  8. {
  9. public:
  10. class EntryInfo
  11. {
  12. public:
  13. static FunctionInfo Int8x16;
  14. static FunctionInfo Check;
  15. static FunctionInfo Zero;
  16. static FunctionInfo Splat;
  17. //// Conversions
  18. static FunctionInfo FromFloat32x4Bits;
  19. static FunctionInfo FromInt32x4Bits;
  20. //// UnaryOps
  21. static FunctionInfo Neg;
  22. static FunctionInfo Not;
  23. //// BinaryOps
  24. static FunctionInfo Add;
  25. static FunctionInfo Sub;
  26. static FunctionInfo Mul;
  27. static FunctionInfo And;
  28. static FunctionInfo Or;
  29. static FunctionInfo Xor;
  30. //// CompareOps
  31. static FunctionInfo LessThan;
  32. static FunctionInfo Equal;
  33. static FunctionInfo GreaterThan;
  34. //// ShiftOps
  35. static FunctionInfo ShiftLeftByScalar;
  36. static FunctionInfo ShiftRightLogicalByScalar;
  37. static FunctionInfo ShiftRightArithmeticByScalar;
  38. //// Others
  39. static FunctionInfo ExtractLane;
  40. static FunctionInfo ReplaceLane;
  41. };
  42. // Entry points to library
  43. // constructor
  44. static Var EntryInt8x16(RecyclableObject* function, CallInfo callInfo, ...);
  45. // type-check
  46. static Var EntryCheck(RecyclableObject* function, CallInfo callInfo, ...);
  47. static Var EntryZero(RecyclableObject* function, CallInfo callInfo, ...);
  48. static Var EntrySplat(RecyclableObject* function, CallInfo callInfo, ...);
  49. static Var EntryFromFloat32x4Bits(RecyclableObject* function, CallInfo callInfo, ...);
  50. static Var EntryFromInt32x4Bits(RecyclableObject* function, CallInfo callInfo, ...);
  51. //// UnaryOps
  52. static Var EntryNeg(RecyclableObject* function, CallInfo callInfo, ...);
  53. static Var EntryNot(RecyclableObject* function, CallInfo callInfo, ...);
  54. //// BinaryOps
  55. static Var EntryAdd(RecyclableObject* function, CallInfo callInfo, ...);
  56. static Var EntrySub(RecyclableObject* function, CallInfo callInfo, ...);
  57. static Var EntryMul(RecyclableObject* function, CallInfo callInfo, ...);
  58. static Var EntryAnd(RecyclableObject* function, CallInfo callInfo, ...);
  59. static Var EntryOr(RecyclableObject* function, CallInfo callInfo, ...);
  60. static Var EntryXor(RecyclableObject* function, CallInfo callInfo, ...);
  61. //// CompareOps
  62. static Var EntryLessThan(RecyclableObject* function, CallInfo callInfo, ...);
  63. static Var EntryEqual(RecyclableObject* function, CallInfo callInfo, ...);
  64. static Var EntryGreaterThan(RecyclableObject* function, CallInfo callInfo, ...);
  65. //// ShiftOps
  66. static Var EntryShiftLeftByScalar(RecyclableObject* function, CallInfo callInfo, ...);
  67. static Var EntryShiftRightLogicalByScalar(RecyclableObject* function, CallInfo callInfo, ...);
  68. static Var EntryShiftRightArithmeticByScalar(RecyclableObject* function, CallInfo callInfo, ...);
  69. // Lane Access
  70. static Var EntryExtractLane(RecyclableObject* function, CallInfo callInfo, ...);
  71. static Var EntryReplaceLane(RecyclableObject* function, CallInfo callInfo, ...);
  72. // End entry points
  73. };
  74. } // namespace Js