AsmJsMath.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. {
  8. class AsmJsMath
  9. {
  10. public:
  11. template<typename T> static T Add( T aLeft, T aRight );
  12. template<typename T> static T Sub( T aLeft, T aRight );
  13. template<typename T> static T Mul( T aLeft, T aRight );
  14. template<typename T> static T Div( T aLeft, T aRight );
  15. template<typename T> static T Rem( T aLeft, T aRight );
  16. template<typename T> static T Min( T aLeft, T aRight );
  17. template<typename T> static T Max( T aLeft, T aRight );
  18. static int And( int aLeft, int aRight );
  19. static int Or( int aLeft, int aRight );
  20. static int Xor( int aLeft, int aRight );
  21. static int Shl( int aLeft, int aRight );
  22. static int Shr( int aLeft, int aRight );
  23. static int ShrU( int aLeft, int aRight );
  24. template<typename T> static T Neg( T aLeft);
  25. static int Not( int aLeft);
  26. static int LogNot( int aLeft);
  27. static int ToBool( int aLeft );
  28. static int Clz32( int value);
  29. template<typename T> static int CmpLt( T aLeft, T aRight );
  30. template<typename T> static int CmpLe( T aLeft, T aRight );
  31. template<typename T> static int CmpGt( T aLeft, T aRight );
  32. template<typename T> static int CmpGe( T aLeft, T aRight );
  33. template<typename T> static int CmpEq( T aLeft, T aRight );
  34. template<typename T> static int CmpNe( T aLeft, T aRight );
  35. };
  36. }