SimdUint8x16Lib.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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 SIMDUint8x16Lib
  8. {
  9. public:
  10. class EntryInfo
  11. {
  12. public:
  13. static FunctionInfo Uint8x16;
  14. static FunctionInfo Check;
  15. static FunctionInfo Splat;
  16. // Conversions
  17. static FunctionInfo FromFloat32x4Bits;
  18. static FunctionInfo FromInt32x4Bits;
  19. static FunctionInfo FromInt16x8Bits;
  20. static FunctionInfo FromInt8x16Bits;
  21. static FunctionInfo FromUint32x4Bits;
  22. static FunctionInfo FromUint16x8Bits;
  23. // UnaryOps
  24. static FunctionInfo Not;
  25. // BinaryOps
  26. static FunctionInfo Add;
  27. static FunctionInfo Sub;
  28. static FunctionInfo Mul;
  29. static FunctionInfo And;
  30. static FunctionInfo Or;
  31. static FunctionInfo Xor;
  32. static FunctionInfo Max;
  33. static FunctionInfo Min;
  34. // CompareOps
  35. static FunctionInfo LessThan;
  36. static FunctionInfo LessThanOrEqual;
  37. static FunctionInfo Equal;
  38. static FunctionInfo NotEqual;
  39. static FunctionInfo GreaterThan;
  40. static FunctionInfo GreaterThanOrEqual;
  41. // ShiftOps
  42. static FunctionInfo ShiftLeftByScalar;
  43. static FunctionInfo ShiftRightByScalar;
  44. // Others
  45. static FunctionInfo ExtractLane;
  46. static FunctionInfo ReplaceLane;
  47. static FunctionInfo Shuffle;
  48. static FunctionInfo Swizzle;
  49. static FunctionInfo Select;
  50. static FunctionInfo Load;
  51. static FunctionInfo Store;
  52. static FunctionInfo AddSaturate;
  53. static FunctionInfo SubSaturate;
  54. };
  55. // Entry points to library
  56. // constructor
  57. static Var EntryUint8x16(RecyclableObject* function, CallInfo callInfo, ...);
  58. // type-check
  59. static Var EntryCheck(RecyclableObject* function, CallInfo callInfo, ...);
  60. static Var EntrySplat(RecyclableObject* function, CallInfo callInfo, ...);
  61. //Type Conversions
  62. static Var EntryFromFloat32x4Bits(RecyclableObject* function, CallInfo callInfo, ...);
  63. static Var EntryFromInt32x4Bits(RecyclableObject* function, CallInfo callInfo, ...);
  64. static Var EntryFromInt16x8Bits(RecyclableObject* function, CallInfo callInfo, ...);
  65. static Var EntryFromInt8x16Bits(RecyclableObject* function, CallInfo callInfo, ...);
  66. static Var EntryFromUint32x4Bits(RecyclableObject* function, CallInfo callInfo, ...);
  67. static Var EntryFromUint16x8Bits(RecyclableObject* function, CallInfo callInfo, ...);
  68. //// UnaryOps
  69. static Var EntryNot(RecyclableObject* function, CallInfo callInfo, ...);
  70. //// BinaryOps
  71. static Var EntryAdd(RecyclableObject* function, CallInfo callInfo, ...);
  72. static Var EntrySub(RecyclableObject* function, CallInfo callInfo, ...);
  73. static Var EntryMul(RecyclableObject* function, CallInfo callInfo, ...);
  74. static Var EntryAnd(RecyclableObject* function, CallInfo callInfo, ...);
  75. static Var EntryOr(RecyclableObject* function, CallInfo callInfo, ...);
  76. static Var EntryXor(RecyclableObject* function, CallInfo callInfo, ...);
  77. static Var EntryMax(RecyclableObject* function, CallInfo callInfo, ...);
  78. static Var EntryMin(RecyclableObject* function, CallInfo callInfo, ...);
  79. //// CompareOps
  80. static Var EntryLessThan(RecyclableObject* function, CallInfo callInfo, ...);
  81. static Var EntryLessThanOrEqual(RecyclableObject* function, CallInfo callInfo, ...);
  82. static Var EntryEqual(RecyclableObject* function, CallInfo callInfo, ...);
  83. static Var EntryNotEqual(RecyclableObject* function, CallInfo callInfo, ...);
  84. static Var EntryGreaterThan(RecyclableObject* function, CallInfo callInfo, ...);
  85. static Var EntryGreaterThanOrEqual(RecyclableObject* function, CallInfo callInfo, ...);
  86. //// ShiftOps
  87. static Var EntryShiftLeftByScalar(RecyclableObject* function, CallInfo callInfo, ...);
  88. static Var EntryShiftRightByScalar(RecyclableObject* function, CallInfo callInfo, ...);
  89. // Lane Access
  90. static Var EntryExtractLane(RecyclableObject* function, CallInfo callInfo, ...);
  91. static Var EntryReplaceLane(RecyclableObject* function, CallInfo callInfo, ...);
  92. static Var EntryLoad(RecyclableObject* function, CallInfo callInfo, ...);
  93. static Var EntryStore(RecyclableObject* function, CallInfo callInfo, ...);
  94. //Other
  95. static Var EntryShuffle(RecyclableObject* function, CallInfo callInfo, ...);
  96. static Var EntrySwizzle(RecyclableObject* function, CallInfo callInfo, ...);
  97. static Var EntrySelect(RecyclableObject* function, CallInfo callInfo, ...);
  98. static Var EntryAddSaturate(RecyclableObject* function, CallInfo callInfo, ...);
  99. static Var EntrySubSaturate(RecyclableObject* function, CallInfo callInfo, ...);
  100. // End entry points
  101. };
  102. } // namespace Js