@@ -821,11 +821,11 @@ static LIBDIVIDE_INLINE struct libdivide_u16_t libdivide_internal_u16_gen(
821821 return result;
822822}
823823
824- struct libdivide_u16_t libdivide_u16_gen (uint16_t d) {
824+ static LIBDIVIDE_INLINE struct libdivide_u16_t libdivide_u16_gen (uint16_t d) {
825825 return libdivide_internal_u16_gen (d, 0 );
826826}
827827
828- struct libdivide_u16_branchfree_t libdivide_u16_branchfree_gen (uint16_t d) {
828+ static LIBDIVIDE_INLINE struct libdivide_u16_branchfree_t libdivide_u16_branchfree_gen (uint16_t d) {
829829 if (d == 1 ) {
830830 LIBDIVIDE_ERROR (" branchfree divider must be != 1" );
831831 }
@@ -838,7 +838,7 @@ struct libdivide_u16_branchfree_t libdivide_u16_branchfree_gen(uint16_t d) {
838838// The original libdivide_u16_do takes a const pointer. However, this cannot be used
839839// with a compile time constant libdivide_u16_t: it will generate a warning about
840840// taking the address of a temporary. Hence this overload.
841- uint16_t libdivide_u16_do_raw (uint16_t numer, uint16_t magic, uint8_t more) {
841+ static LIBDIVIDE_INLINE uint16_t libdivide_u16_do_raw (uint16_t numer, uint16_t magic, uint8_t more) {
842842 if (!magic) {
843843 return numer >> more;
844844 } else {
@@ -854,18 +854,18 @@ uint16_t libdivide_u16_do_raw(uint16_t numer, uint16_t magic, uint8_t more) {
854854 }
855855}
856856
857- uint16_t libdivide_u16_do (uint16_t numer, const struct libdivide_u16_t *denom) {
857+ static LIBDIVIDE_INLINE uint16_t libdivide_u16_do (uint16_t numer, const struct libdivide_u16_t *denom) {
858858 return libdivide_u16_do_raw (numer, denom->magic , denom->more );
859859}
860860
861- uint16_t libdivide_u16_branchfree_do (
861+ static LIBDIVIDE_INLINE uint16_t libdivide_u16_branchfree_do (
862862 uint16_t numer, const struct libdivide_u16_branchfree_t *denom) {
863863 uint16_t q = libdivide_mullhi_u16 (numer, denom->magic );
864864 uint16_t t = ((numer - q) >> 1 ) + q;
865865 return t >> denom->more ;
866866}
867867
868- uint16_t libdivide_u16_recover (const struct libdivide_u16_t *denom) {
868+ static LIBDIVIDE_INLINE uint16_t libdivide_u16_recover (const struct libdivide_u16_t *denom) {
869869 uint8_t more = denom->more ;
870870 uint8_t shift = more & LIBDIVIDE_16_SHIFT_MASK;
871871
@@ -903,7 +903,7 @@ uint16_t libdivide_u16_recover(const struct libdivide_u16_t *denom) {
903903 }
904904}
905905
906- uint16_t libdivide_u16_branchfree_recover (const struct libdivide_u16_branchfree_t *denom) {
906+ static LIBDIVIDE_INLINE uint16_t libdivide_u16_branchfree_recover (const struct libdivide_u16_branchfree_t *denom) {
907907 uint8_t more = denom->more ;
908908 uint8_t shift = more & LIBDIVIDE_16_SHIFT_MASK;
909909
@@ -985,11 +985,11 @@ static LIBDIVIDE_INLINE struct libdivide_u32_t libdivide_internal_u32_gen(
985985 return result;
986986}
987987
988- struct libdivide_u32_t libdivide_u32_gen (uint32_t d) {
988+ static LIBDIVIDE_INLINE struct libdivide_u32_t libdivide_u32_gen (uint32_t d) {
989989 return libdivide_internal_u32_gen (d, 0 );
990990}
991991
992- struct libdivide_u32_branchfree_t libdivide_u32_branchfree_gen (uint32_t d) {
992+ static LIBDIVIDE_INLINE struct libdivide_u32_branchfree_t libdivide_u32_branchfree_gen (uint32_t d) {
993993 if (d == 1 ) {
994994 LIBDIVIDE_ERROR (" branchfree divider must be != 1" );
995995 }
@@ -999,7 +999,7 @@ struct libdivide_u32_branchfree_t libdivide_u32_branchfree_gen(uint32_t d) {
999999 return ret;
10001000}
10011001
1002- uint32_t libdivide_u32_do_raw (uint32_t numer, uint32_t magic, uint8_t more) {
1002+ static LIBDIVIDE_INLINE uint32_t libdivide_u32_do_raw (uint32_t numer, uint32_t magic, uint8_t more) {
10031003 if (!magic) {
10041004 return numer >> more;
10051005 } else {
@@ -1015,18 +1015,18 @@ uint32_t libdivide_u32_do_raw(uint32_t numer, uint32_t magic, uint8_t more) {
10151015 }
10161016}
10171017
1018- uint32_t libdivide_u32_do (uint32_t numer, const struct libdivide_u32_t *denom) {
1018+ static LIBDIVIDE_INLINE uint32_t libdivide_u32_do (uint32_t numer, const struct libdivide_u32_t *denom) {
10191019 return libdivide_u32_do_raw (numer, denom->magic , denom->more );
10201020}
10211021
1022- uint32_t libdivide_u32_branchfree_do (
1022+ static LIBDIVIDE_INLINE uint32_t libdivide_u32_branchfree_do (
10231023 uint32_t numer, const struct libdivide_u32_branchfree_t *denom) {
10241024 uint32_t q = libdivide_mullhi_u32 (numer, denom->magic );
10251025 uint32_t t = ((numer - q) >> 1 ) + q;
10261026 return t >> denom->more ;
10271027}
10281028
1029- uint32_t libdivide_u32_recover (const struct libdivide_u32_t *denom) {
1029+ static LIBDIVIDE_INLINE uint32_t libdivide_u32_recover (const struct libdivide_u32_t *denom) {
10301030 uint8_t more = denom->more ;
10311031 uint8_t shift = more & LIBDIVIDE_32_SHIFT_MASK;
10321032
@@ -1064,7 +1064,7 @@ uint32_t libdivide_u32_recover(const struct libdivide_u32_t *denom) {
10641064 }
10651065}
10661066
1067- uint32_t libdivide_u32_branchfree_recover (const struct libdivide_u32_branchfree_t *denom) {
1067+ static LIBDIVIDE_INLINE uint32_t libdivide_u32_branchfree_recover (const struct libdivide_u32_branchfree_t *denom) {
10681068 uint8_t more = denom->more ;
10691069 uint8_t shift = more & LIBDIVIDE_32_SHIFT_MASK;
10701070
@@ -1148,11 +1148,11 @@ static LIBDIVIDE_INLINE struct libdivide_u64_t libdivide_internal_u64_gen(
11481148 return result;
11491149}
11501150
1151- struct libdivide_u64_t libdivide_u64_gen (uint64_t d) {
1151+ static LIBDIVIDE_INLINE struct libdivide_u64_t libdivide_u64_gen (uint64_t d) {
11521152 return libdivide_internal_u64_gen (d, 0 );
11531153}
11541154
1155- struct libdivide_u64_branchfree_t libdivide_u64_branchfree_gen (uint64_t d) {
1155+ static LIBDIVIDE_INLINE struct libdivide_u64_branchfree_t libdivide_u64_branchfree_gen (uint64_t d) {
11561156 if (d == 1 ) {
11571157 LIBDIVIDE_ERROR (" branchfree divider must be != 1" );
11581158 }
@@ -1162,7 +1162,7 @@ struct libdivide_u64_branchfree_t libdivide_u64_branchfree_gen(uint64_t d) {
11621162 return ret;
11631163}
11641164
1165- uint64_t libdivide_u64_do_raw (uint64_t numer, uint64_t magic, uint8_t more) {
1165+ static LIBDIVIDE_INLINE uint64_t libdivide_u64_do_raw (uint64_t numer, uint64_t magic, uint8_t more) {
11661166 if (!magic) {
11671167 return numer >> more;
11681168 } else {
@@ -1178,18 +1178,18 @@ uint64_t libdivide_u64_do_raw(uint64_t numer, uint64_t magic, uint8_t more) {
11781178 }
11791179}
11801180
1181- uint64_t libdivide_u64_do (uint64_t numer, const struct libdivide_u64_t *denom) {
1181+ static LIBDIVIDE_INLINE uint64_t libdivide_u64_do (uint64_t numer, const struct libdivide_u64_t *denom) {
11821182 return libdivide_u64_do_raw (numer, denom->magic , denom->more );
11831183}
11841184
1185- uint64_t libdivide_u64_branchfree_do (
1185+ static LIBDIVIDE_INLINE uint64_t libdivide_u64_branchfree_do (
11861186 uint64_t numer, const struct libdivide_u64_branchfree_t *denom) {
11871187 uint64_t q = libdivide_mullhi_u64 (numer, denom->magic );
11881188 uint64_t t = ((numer - q) >> 1 ) + q;
11891189 return t >> denom->more ;
11901190}
11911191
1192- uint64_t libdivide_u64_recover (const struct libdivide_u64_t *denom) {
1192+ static LIBDIVIDE_INLINE uint64_t libdivide_u64_recover (const struct libdivide_u64_t *denom) {
11931193 uint8_t more = denom->more ;
11941194 uint8_t shift = more & LIBDIVIDE_64_SHIFT_MASK;
11951195
@@ -1233,7 +1233,7 @@ uint64_t libdivide_u64_recover(const struct libdivide_u64_t *denom) {
12331233 }
12341234}
12351235
1236- uint64_t libdivide_u64_branchfree_recover (const struct libdivide_u64_branchfree_t *denom) {
1236+ static LIBDIVIDE_INLINE uint64_t libdivide_u64_branchfree_recover (const struct libdivide_u64_branchfree_t *denom) {
12371237 uint8_t more = denom->more ;
12381238 uint8_t shift = more & LIBDIVIDE_64_SHIFT_MASK;
12391239
@@ -1336,11 +1336,11 @@ static LIBDIVIDE_INLINE struct libdivide_s16_t libdivide_internal_s16_gen(
13361336 return result;
13371337}
13381338
1339- struct libdivide_s16_t libdivide_s16_gen (int16_t d) {
1339+ static LIBDIVIDE_INLINE struct libdivide_s16_t libdivide_s16_gen (int16_t d) {
13401340 return libdivide_internal_s16_gen (d, 0 );
13411341}
13421342
1343- struct libdivide_s16_branchfree_t libdivide_s16_branchfree_gen (int16_t d) {
1343+ static LIBDIVIDE_INLINE struct libdivide_s16_branchfree_t libdivide_s16_branchfree_gen (int16_t d) {
13441344 struct libdivide_s16_t tmp = libdivide_internal_s16_gen (d, 1 );
13451345 struct libdivide_s16_branchfree_t result = {tmp.magic , tmp.more };
13461346 return result;
@@ -1349,7 +1349,7 @@ struct libdivide_s16_branchfree_t libdivide_s16_branchfree_gen(int16_t d) {
13491349// The original libdivide_s16_do takes a const pointer. However, this cannot be used
13501350// with a compile time constant libdivide_s16_t: it will generate a warning about
13511351// taking the address of a temporary. Hence this overload.
1352- int16_t libdivide_s16_do_raw (int16_t numer, int16_t magic, uint8_t more) {
1352+ static LIBDIVIDE_INLINE int16_t libdivide_s16_do_raw (int16_t numer, int16_t magic, uint8_t more) {
13531353 uint8_t shift = more & LIBDIVIDE_16_SHIFT_MASK;
13541354
13551355 if (!magic) {
@@ -1376,11 +1376,11 @@ int16_t libdivide_s16_do_raw(int16_t numer, int16_t magic, uint8_t more) {
13761376 }
13771377}
13781378
1379- int16_t libdivide_s16_do (int16_t numer, const struct libdivide_s16_t *denom) {
1379+ static LIBDIVIDE_INLINE int16_t libdivide_s16_do (int16_t numer, const struct libdivide_s16_t *denom) {
13801380 return libdivide_s16_do_raw (numer, denom->magic , denom->more );
13811381}
13821382
1383- int16_t libdivide_s16_branchfree_do (int16_t numer, const struct libdivide_s16_branchfree_t *denom) {
1383+ static LIBDIVIDE_INLINE int16_t libdivide_s16_branchfree_do (int16_t numer, const struct libdivide_s16_branchfree_t *denom) {
13841384 uint8_t more = denom->more ;
13851385 uint8_t shift = more & LIBDIVIDE_16_SHIFT_MASK;
13861386 // must be arithmetic shift and then sign extend
@@ -1404,7 +1404,7 @@ int16_t libdivide_s16_branchfree_do(int16_t numer, const struct libdivide_s16_br
14041404 return q;
14051405}
14061406
1407- int16_t libdivide_s16_recover (const struct libdivide_s16_t *denom) {
1407+ static LIBDIVIDE_INLINE int16_t libdivide_s16_recover (const struct libdivide_s16_t *denom) {
14081408 uint8_t more = denom->more ;
14091409 uint8_t shift = more & LIBDIVIDE_16_SHIFT_MASK;
14101410 if (!denom->magic ) {
@@ -1439,7 +1439,7 @@ int16_t libdivide_s16_recover(const struct libdivide_s16_t *denom) {
14391439 }
14401440}
14411441
1442- int16_t libdivide_s16_branchfree_recover (const struct libdivide_s16_branchfree_t *denom) {
1442+ static LIBDIVIDE_INLINE int16_t libdivide_s16_branchfree_recover (const struct libdivide_s16_branchfree_t *denom) {
14431443 const struct libdivide_s16_t den = {denom->magic , denom->more };
14441444 return libdivide_s16_recover (&den);
14451445}
@@ -1512,17 +1512,17 @@ static LIBDIVIDE_INLINE struct libdivide_s32_t libdivide_internal_s32_gen(
15121512 return result;
15131513}
15141514
1515- struct libdivide_s32_t libdivide_s32_gen (int32_t d) {
1515+ static LIBDIVIDE_INLINE struct libdivide_s32_t libdivide_s32_gen (int32_t d) {
15161516 return libdivide_internal_s32_gen (d, 0 );
15171517}
15181518
1519- struct libdivide_s32_branchfree_t libdivide_s32_branchfree_gen (int32_t d) {
1519+ static LIBDIVIDE_INLINE struct libdivide_s32_branchfree_t libdivide_s32_branchfree_gen (int32_t d) {
15201520 struct libdivide_s32_t tmp = libdivide_internal_s32_gen (d, 1 );
15211521 struct libdivide_s32_branchfree_t result = {tmp.magic , tmp.more };
15221522 return result;
15231523}
15241524
1525- int32_t libdivide_s32_do_raw (int32_t numer, int32_t magic, uint8_t more) {
1525+ static LIBDIVIDE_INLINE int32_t libdivide_s32_do_raw (int32_t numer, int32_t magic, uint8_t more) {
15261526 uint8_t shift = more & LIBDIVIDE_32_SHIFT_MASK;
15271527
15281528 if (!magic) {
@@ -1549,11 +1549,11 @@ int32_t libdivide_s32_do_raw(int32_t numer, int32_t magic, uint8_t more) {
15491549 }
15501550}
15511551
1552- int32_t libdivide_s32_do (int32_t numer, const struct libdivide_s32_t *denom) {
1552+ static LIBDIVIDE_INLINE int32_t libdivide_s32_do (int32_t numer, const struct libdivide_s32_t *denom) {
15531553 return libdivide_s32_do_raw (numer, denom->magic , denom->more );
15541554}
15551555
1556- int32_t libdivide_s32_branchfree_do (int32_t numer, const struct libdivide_s32_branchfree_t *denom) {
1556+ static LIBDIVIDE_INLINE int32_t libdivide_s32_branchfree_do (int32_t numer, const struct libdivide_s32_branchfree_t *denom) {
15571557 uint8_t more = denom->more ;
15581558 uint8_t shift = more & LIBDIVIDE_32_SHIFT_MASK;
15591559 // must be arithmetic shift and then sign extend
@@ -1577,7 +1577,7 @@ int32_t libdivide_s32_branchfree_do(int32_t numer, const struct libdivide_s32_br
15771577 return q;
15781578}
15791579
1580- int32_t libdivide_s32_recover (const struct libdivide_s32_t *denom) {
1580+ static LIBDIVIDE_INLINE int32_t libdivide_s32_recover (const struct libdivide_s32_t *denom) {
15811581 uint8_t more = denom->more ;
15821582 uint8_t shift = more & LIBDIVIDE_32_SHIFT_MASK;
15831583 if (!denom->magic ) {
@@ -1612,7 +1612,7 @@ int32_t libdivide_s32_recover(const struct libdivide_s32_t *denom) {
16121612 }
16131613}
16141614
1615- int32_t libdivide_s32_branchfree_recover (const struct libdivide_s32_branchfree_t *denom) {
1615+ static LIBDIVIDE_INLINE int32_t libdivide_s32_branchfree_recover (const struct libdivide_s32_branchfree_t *denom) {
16161616 const struct libdivide_s32_t den = {denom->magic , denom->more };
16171617 return libdivide_s32_recover (&den);
16181618}
@@ -1685,17 +1685,17 @@ static LIBDIVIDE_INLINE struct libdivide_s64_t libdivide_internal_s64_gen(
16851685 return result;
16861686}
16871687
1688- struct libdivide_s64_t libdivide_s64_gen (int64_t d) {
1688+ static LIBDIVIDE_INLINE struct libdivide_s64_t libdivide_s64_gen (int64_t d) {
16891689 return libdivide_internal_s64_gen (d, 0 );
16901690}
16911691
1692- struct libdivide_s64_branchfree_t libdivide_s64_branchfree_gen (int64_t d) {
1692+ static LIBDIVIDE_INLINE struct libdivide_s64_branchfree_t libdivide_s64_branchfree_gen (int64_t d) {
16931693 struct libdivide_s64_t tmp = libdivide_internal_s64_gen (d, 1 );
16941694 struct libdivide_s64_branchfree_t ret = {tmp.magic , tmp.more };
16951695 return ret;
16961696}
16971697
1698- int64_t libdivide_s64_do_raw (int64_t numer, int64_t magic, uint8_t more) {
1698+ static LIBDIVIDE_INLINE int64_t libdivide_s64_do_raw (int64_t numer, int64_t magic, uint8_t more) {
16991699 uint8_t shift = more & LIBDIVIDE_64_SHIFT_MASK;
17001700
17011701 if (!magic) { // shift path
@@ -1723,11 +1723,11 @@ int64_t libdivide_s64_do_raw(int64_t numer, int64_t magic, uint8_t more) {
17231723 }
17241724}
17251725
1726- int64_t libdivide_s64_do (int64_t numer, const struct libdivide_s64_t *denom) {
1726+ static LIBDIVIDE_INLINE int64_t libdivide_s64_do (int64_t numer, const struct libdivide_s64_t *denom) {
17271727 return libdivide_s64_do_raw (numer, denom->magic , denom->more );
17281728}
17291729
1730- int64_t libdivide_s64_branchfree_do (int64_t numer, const struct libdivide_s64_branchfree_t *denom) {
1730+ static LIBDIVIDE_INLINE int64_t libdivide_s64_branchfree_do (int64_t numer, const struct libdivide_s64_branchfree_t *denom) {
17311731 uint8_t more = denom->more ;
17321732 uint8_t shift = more & LIBDIVIDE_64_SHIFT_MASK;
17331733 // must be arithmetic shift and then sign extend
@@ -1751,7 +1751,7 @@ int64_t libdivide_s64_branchfree_do(int64_t numer, const struct libdivide_s64_br
17511751 return q;
17521752}
17531753
1754- int64_t libdivide_s64_recover (const struct libdivide_s64_t *denom) {
1754+ static LIBDIVIDE_INLINE int64_t libdivide_s64_recover (const struct libdivide_s64_t *denom) {
17551755 uint8_t more = denom->more ;
17561756 uint8_t shift = more & LIBDIVIDE_64_SHIFT_MASK;
17571757 if (denom->magic == 0 ) { // shift path
@@ -1777,7 +1777,7 @@ int64_t libdivide_s64_recover(const struct libdivide_s64_t *denom) {
17771777 }
17781778}
17791779
1780- int64_t libdivide_s64_branchfree_recover (const struct libdivide_s64_branchfree_t *denom) {
1780+ static LIBDIVIDE_INLINE int64_t libdivide_s64_branchfree_recover (const struct libdivide_s64_branchfree_t *denom) {
17811781 const struct libdivide_s64_t den = {denom->magic , denom->more };
17821782 return libdivide_s64_recover (&den);
17831783}
0 commit comments