Package org.lwjgl.util.libdivide
Class LibDivide
java.lang.Object
org.lwjgl.util.libdivide.LibDivide
Native bindings to libdivide.
libdivide allows you to replace expensive integer divides with comparatively cheap multiplication and bitshifts. Compilers usually do this, but only when the divisor is known at compile time. libdivide allows you to take advantage of it at runtime. The result is that integer division can become faster - a lot faster.
LWJGL: This is a hybrid implementation. Divider recovery methods use standard JNI bindings. All *_gen
, *_do
&
*_get_algorithm
functions have been ported to pure Java. This eliminates the JNI overhead and enables the JVM to inline and further optimize
these methods.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
Enum values:static final int
Enum values:static final int
Enum values:static final int
Enum values:static final int
Enum values:static final int
Library version.static final int
Library version. -
Method Summary
Modifier and TypeMethodDescriptionstatic short
libdivide_s16_branchfree_do
(short numer, short magic, byte more) static short
libdivide_s16_branchfree_do
(short numer, LibDivideS16BranchFree denom) static LibDivideS16BranchFree
libdivide_s16_branchfree_gen
(short denom, LibDivideS16BranchFree __result) static short
static short
libdivide_s16_do
(short numer, short magic, byte more) static short
libdivide_s16_do
(short numer, LibDivideS16 denom) static LibDivideS16
libdivide_s16_gen
(short denom, LibDivideS16 __result) static short
static int
libdivide_s32_branchfree_do
(int numer, int magic, byte more) static int
libdivide_s32_branchfree_do
(int numer, LibDivideS32BranchFree denom) static LibDivideS32BranchFree
libdivide_s32_branchfree_gen
(int denom, LibDivideS32BranchFree __result) static int
static int
libdivide_s32_do
(int numer, int magic, byte more) static int
libdivide_s32_do
(int numer, LibDivideS32 denom) static LibDivideS32
libdivide_s32_gen
(int denom, LibDivideS32 __result) static int
static long
libdivide_s64_branchfree_do
(long numer, long magic, byte more) static long
libdivide_s64_branchfree_do
(long numer, LibDivideS64BranchFree denom) static LibDivideS64BranchFree
libdivide_s64_branchfree_gen
(long denom, LibDivideS64BranchFree __result) static long
static long
libdivide_s64_do
(long numer, long magic, byte more) static long
libdivide_s64_do
(long numer, LibDivideS64 denom) static LibDivideS64
libdivide_s64_gen
(long denom, LibDivideS64 __result) static long
static short
libdivide_u16_branchfree_do
(short numer, short magic, byte more) static short
libdivide_u16_branchfree_do
(short numer, LibDivideU16BranchFree denom) static LibDivideU16BranchFree
libdivide_u16_branchfree_gen
(short denom, LibDivideU16BranchFree __result) static short
static short
libdivide_u16_do
(short numer, short magic, byte more) static short
libdivide_u16_do
(short numer, LibDivideU16 denom) static LibDivideU16
libdivide_u16_gen
(short denom, LibDivideU16 __result) static short
static int
libdivide_u32_branchfree_do
(int numer, int magic, byte more) static int
libdivide_u32_branchfree_do
(int numer, LibDivideU32BranchFree denom) static LibDivideU32BranchFree
libdivide_u32_branchfree_gen
(int denom, LibDivideU32BranchFree __result) static int
static int
libdivide_u32_do
(int numer, int magic, byte more) static int
libdivide_u32_do
(int numer, LibDivideU32 denom) static LibDivideU32
libdivide_u32_gen
(int denom, LibDivideU32 __result) static int
static long
libdivide_u64_branchfree_do
(long numer, long magic, byte more) static long
libdivide_u64_branchfree_do
(long numer, LibDivideU64BranchFree denom) static LibDivideU64BranchFree
libdivide_u64_branchfree_gen
(long denom, LibDivideU64BranchFree __result) static long
static long
libdivide_u64_do
(long numer, long magic, byte more) static long
libdivide_u64_do
(long numer, LibDivideU64 denom) static LibDivideU64
libdivide_u64_gen
(long denom, LibDivideU64 __result) static long
static short
nlibdivide_s16_branchfree_recover
(long denom) static short
nlibdivide_s16_recover
(long denom) static int
nlibdivide_s32_branchfree_recover
(long denom) static int
nlibdivide_s32_recover
(long denom) static long
nlibdivide_s64_branchfree_recover
(long denom) static long
nlibdivide_s64_recover
(long denom) static short
nlibdivide_u16_branchfree_recover
(long denom) static short
nlibdivide_u16_recover
(long denom) static int
nlibdivide_u32_branchfree_recover
(long denom) static int
nlibdivide_u32_recover
(long denom) static long
nlibdivide_u64_branchfree_recover
(long denom) static long
nlibdivide_u64_recover
(long denom)
-
Field Details
-
LIBDIVIDE_VERSION_MAJOR
public static final int LIBDIVIDE_VERSION_MAJORLibrary version.- See Also:
-
LIBDIVIDE_VERSION_MINOR
public static final int LIBDIVIDE_VERSION_MINORLibrary version.- See Also:
-
LIBDIVIDE_16_SHIFT_MASK
public static final int LIBDIVIDE_16_SHIFT_MASKEnum values:
- See Also:
-
LIBDIVIDE_32_SHIFT_MASK
public static final int LIBDIVIDE_32_SHIFT_MASKEnum values:
- See Also:
-
LIBDIVIDE_64_SHIFT_MASK
public static final int LIBDIVIDE_64_SHIFT_MASKEnum values:
- See Also:
-
LIBDIVIDE_ADD_MARKER
public static final int LIBDIVIDE_ADD_MARKEREnum values:
- See Also:
-
LIBDIVIDE_NEGATIVE_DIVISOR
public static final int LIBDIVIDE_NEGATIVE_DIVISOREnum values:
- See Also:
-
-
Method Details
-
nlibdivide_s16_recover
public static short nlibdivide_s16_recover(long denom) -
libdivide_s16_recover
-
nlibdivide_u16_recover
public static short nlibdivide_u16_recover(long denom) -
libdivide_u16_recover
-
nlibdivide_s32_recover
public static int nlibdivide_s32_recover(long denom) -
libdivide_s32_recover
-
nlibdivide_u32_recover
public static int nlibdivide_u32_recover(long denom) -
libdivide_u32_recover
-
nlibdivide_s64_recover
public static long nlibdivide_s64_recover(long denom) -
libdivide_s64_recover
-
nlibdivide_u64_recover
public static long nlibdivide_u64_recover(long denom) -
libdivide_u64_recover
-
nlibdivide_s16_branchfree_recover
public static short nlibdivide_s16_branchfree_recover(long denom) -
libdivide_s16_branchfree_recover
-
nlibdivide_u16_branchfree_recover
public static short nlibdivide_u16_branchfree_recover(long denom) -
libdivide_u16_branchfree_recover
-
nlibdivide_s32_branchfree_recover
public static int nlibdivide_s32_branchfree_recover(long denom) -
libdivide_s32_branchfree_recover
-
nlibdivide_u32_branchfree_recover
public static int nlibdivide_u32_branchfree_recover(long denom) -
libdivide_u32_branchfree_recover
-
nlibdivide_s64_branchfree_recover
public static long nlibdivide_s64_branchfree_recover(long denom) -
libdivide_s64_branchfree_recover
-
nlibdivide_u64_branchfree_recover
public static long nlibdivide_u64_branchfree_recover(long denom) -
libdivide_u64_branchfree_recover
-
libdivide_s16_gen
-
libdivide_u16_gen
-
libdivide_s32_gen
-
libdivide_u32_gen
-
libdivide_s64_gen
-
libdivide_u64_gen
-
libdivide_s16_branchfree_gen
public static LibDivideS16BranchFree libdivide_s16_branchfree_gen(short denom, LibDivideS16BranchFree __result) -
libdivide_u16_branchfree_gen
public static LibDivideU16BranchFree libdivide_u16_branchfree_gen(short denom, LibDivideU16BranchFree __result) -
libdivide_s32_branchfree_gen
public static LibDivideS32BranchFree libdivide_s32_branchfree_gen(int denom, LibDivideS32BranchFree __result) -
libdivide_u32_branchfree_gen
public static LibDivideU32BranchFree libdivide_u32_branchfree_gen(int denom, LibDivideU32BranchFree __result) -
libdivide_s64_branchfree_gen
public static LibDivideS64BranchFree libdivide_s64_branchfree_gen(long denom, LibDivideS64BranchFree __result) -
libdivide_u64_branchfree_gen
public static LibDivideU64BranchFree libdivide_u64_branchfree_gen(long denom, LibDivideU64BranchFree __result) -
libdivide_s16_do
-
libdivide_s16_do
public static short libdivide_s16_do(short numer, short magic, byte more) -
libdivide_u16_do
-
libdivide_u16_do
public static short libdivide_u16_do(short numer, short magic, byte more) -
libdivide_s32_do
-
libdivide_s32_do
public static int libdivide_s32_do(int numer, int magic, byte more) -
libdivide_u32_do
-
libdivide_u32_do
public static int libdivide_u32_do(int numer, int magic, byte more) -
libdivide_s64_do
-
libdivide_s64_do
public static long libdivide_s64_do(long numer, long magic, byte more) -
libdivide_u64_do
-
libdivide_u64_do
public static long libdivide_u64_do(long numer, long magic, byte more) -
libdivide_s16_branchfree_do
-
libdivide_s16_branchfree_do
public static short libdivide_s16_branchfree_do(short numer, short magic, byte more) -
libdivide_u16_branchfree_do
-
libdivide_u16_branchfree_do
public static short libdivide_u16_branchfree_do(short numer, short magic, byte more) -
libdivide_s32_branchfree_do
-
libdivide_s32_branchfree_do
public static int libdivide_s32_branchfree_do(int numer, int magic, byte more) -
libdivide_u32_branchfree_do
-
libdivide_u32_branchfree_do
public static int libdivide_u32_branchfree_do(int numer, int magic, byte more) -
libdivide_s64_branchfree_do
-
libdivide_s64_branchfree_do
public static long libdivide_s64_branchfree_do(long numer, long magic, byte more) -
libdivide_u64_branchfree_do
-
libdivide_u64_branchfree_do
public static long libdivide_u64_branchfree_do(long numer, long magic, byte more)
-