00001
00002
00004
00005
00006
00007
00009
00010 #ifndef glm_core_func_integer
00011 #define glm_core_func_integer
00012
00013 namespace glm
00014 {
00015 namespace test{
00016 void main_core_func_integer();
00017 }
00018
00019 namespace core{
00020 namespace function{
00022 namespace integer{
00023
00026
00033 template <typename genUType>
00034 genUType uaddCarry(
00035 genUType const & x,
00036 genUType const & y,
00037 genUType & carry);
00038
00045 template <typename genUType>
00046 genUType usubBorrow(
00047 genUType const & x,
00048 genUType const & y,
00049 genUType & borrow);
00050
00057 template <typename genUType>
00058 void umulExtended(
00059 genUType const & x,
00060 genUType const & y,
00061 genUType & msb,
00062 genUType & lsb);
00063
00070 template <typename genIType>
00071 void imulExtended(
00072 genIType const & x,
00073 genIType const & y,
00074 genIType & msb,
00075 genIType & lsb);
00076
00090 template <typename genIUType>
00091 genIUType bitfieldExtract(
00092 genIUType const & Value,
00093 int const & Offset,
00094 int const & Bits);
00095
00108 template <typename genIUType>
00109 genIUType bitfieldInsert(
00110 genIUType const & Base,
00111 genIUType const & Insert,
00112 int const & Offset,
00113 int const & Bits);
00114
00121 template <typename genIUType>
00122 genIUType bitfieldReverse(genIUType const & value);
00123
00128 template <typename T, template <typename> class C>
00129 typename C<T>::signed_type bitCount(C<T> const & Value);
00130
00137 template <typename T, template <typename> class C>
00138 typename C<T>::signed_type findLSB(C<T> const & Value);
00139
00147 template <typename T, template <typename> class C>
00148 typename C<T>::signed_type findMSB(C<T> const & Value);
00149
00151
00152 }
00153 }
00154 }
00155
00156 using namespace core::function::integer;
00157 }
00158
00159 #include "func_integer.inl"
00160
00161 #endif//glm_core_func_integer
00162