diff --git a/jic.c b/jic.c index 77c9e2e..a9d7eb2 100644 --- a/jic.c +++ b/jic.c @@ -29,8 +29,8 @@ #include "vsimple.h" #include "bitpack.h" #include "bitunpack.h" -#include "vp4dc.h" -#include "vp4dd.h" +#include "vp4c.h" +#include "vp4d.h" #include "jic.h" @@ -75,17 +75,41 @@ JNIEXPORT jint JNICALL Java_jic_vsenc32( JNIEnv *env, jclass cls, jintArra JNIEXPORT jint JNICALL Java_jic_vsdec32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out ) { JNIDEC(vsdec32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_vsdec32( jint i, jbyte *in, jint n, jint o, jint *out ) { return vsdec32( (unsigned char *)in, n, (unsigned *)out ) - (unsigned char *)in; } //--------------------------------- TurboPFor: PFor/PForDelta ----------------------------------------------------------------- -JNIEXPORT jint JNICALL Java_jic_p4denc32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out ) { JNIENC(p4denc32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4denc32( jint i, jint *in, jint n, jint o, jbyte *out ) { return p4denc32( (unsigned *)in, n, (unsigned char *)out ) - (unsigned char *)out; } +// Low level: Single block +JNIEXPORT jint JNICALL Java_jic_p4denc32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out ) { JNIENC(p4enc32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4enc32( jint i, jint *in, jint n, jint o, jbyte *out ) { return p4enc32( (unsigned *)in, n, (unsigned char *)out ) - (unsigned char *)out; } -JNIEXPORT jint JNICALL Java_jic_p4ddec32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out ) { JNIDEC(p4ddec32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4ddec32( jint i, jbyte *in, jint n, jint o, jint *out ) { return p4ddec32( (unsigned char *)in, n, (unsigned *)out ) - (unsigned char *)in; } +JNIEXPORT jint JNICALL Java_jic_p4dec32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out ) { JNIDEC(p4dec32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4dec32( jint i, jbyte *in, jint n, jint o, jint *out ) { return p4dec32( (unsigned char *)in, n, (unsigned *)out ) - (unsigned char *)in; } -JNIEXPORT jint JNICALL Java_jic_p4dencv32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out ) { JNIENC(p4dencv32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4dencv32( jint i, jint *in, jint n, jint o, jbyte *out ) { return p4dencv32( (unsigned *)in, n, (unsigned char *)out ) - (unsigned char *)out; } +JNIEXPORT jint JNICALL Java_jic_p4enc128v32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out ) { JNIENC(p4enc128v32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4enc128v32( jint i, jint *in, jint n, jint o, jbyte *out ) { return p4enc128v32( (unsigned *)in, n, (unsigned char *)out ) - (unsigned char *)out; } + +JNIEXPORT jint JNICALL Java_jic_p4dec128v32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out ) { JNIDEC(p4dec128v32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4dec128v32( jint i, jbyte *in, jint n, jint o, jint *out ) { return p4dec128v32( (unsigned char *)in, n, (unsigned *)out ) - (unsigned char *)in; } + +JNIEXPORT jint JNICALL Java_jic_p4enc256v32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out ) { JNIENC(p4enc256v32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4enc256v32( jint i, jint *in, jint n, jint o, jbyte *out ) { return p4enc256v32( (unsigned *)in, n, (unsigned char *)out ) - (unsigned char *)out; } + +JNIEXPORT jint JNICALL Java_jic_p4dec256v32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out ) { JNIDEC(p4dec256v32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4dec256v32( jint i, jbyte *in, jint n, jint o, jint *out ) { return p4dec256v32( (unsigned char *)in, n, (unsigned *)out ) - (unsigned char *)in; } -JNIEXPORT jint JNICALL Java_jic_p4ddecv32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out ) { JNIDEC(p4ddecv32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4ddecv32( jint i, jbyte *in, jint n, jint o, jint *out ) { return p4ddecv32( (unsigned char *)in, n, (unsigned *)out ) - (unsigned char *)in; } //-------- -JNIEXPORT jint JNICALL Java_jic_p4dddec32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start ) { JNIDECS(p4dddec32, _in, n, _out, start ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4dddec32( jint i, jbyte *in, jint n, jint o, jint *out, jint start ) { return p4dddec32( (unsigned char *)in, n, (unsigned *)out, start ) - (unsigned char *)in; } +JNIEXPORT jint JNICALL Java_jic_p4ddec32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start ) { JNIDECS(p4ddec32, _in, n, _out, start ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4ddec32( jint i, jbyte *in, jint n, jint o, jint *out, jint start ) { return p4ddec32( (unsigned char *)in, n, (unsigned *)out, start ) - (unsigned char *)in; } -JNIEXPORT jint JNICALL Java_jic_p4dd1dec32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start ) { JNIDECS(p4dd1dec32, _in, n, _out, start ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4dd1dec32( jint i, jbyte *in, jint n, jint o, jint *out, jint start ) { return p4dd1dec32( (unsigned char *)in, n, (unsigned *)out, start ) - (unsigned char *)in; } +JNIEXPORT jint JNICALL Java_jic_p4d1dec32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start ) { JNIDECS(p4d1dec32, _in, n, _out, start ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4d1dec32( jint i, jbyte *in, jint n, jint o, jint *out, jint start ) { return p4d1dec32( (unsigned char *)in, n, (unsigned *)out, start ) - (unsigned char *)in; } + +// n = unlimited +JNIEXPORT jint JNICALL Java_jic_p4ndenc32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out ) { JNIENC(p4nenc32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4nenc32( jint i, jint *in, jint n, jint o, jbyte *out ) { return p4nenc32( (unsigned *)in, n, (unsigned char *)out ) - (unsigned char *)out; } + +JNIEXPORT jint JNICALL Java_jic_p4ndec32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out ) { JNIDEC(p4ndec32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4ndec32( jint i, jbyte *in, jint n, jint o, jint *out ) { return p4ndec32( (unsigned char *)in, n, (unsigned *)out ) - (unsigned char *)in; } + +JNIEXPORT jint JNICALL Java_jic_p4nenc128v32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out ) { JNIENC(p4nenc128v32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4nenc128v32( jint i, jint *in, jint n, jint o, jbyte *out ) { return p4nenc128v32( (unsigned *)in, n, (unsigned char *)out ) - (unsigned char *)out; } + +JNIEXPORT jint JNICALL Java_jic_p4ndec128v32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out ) { JNIDEC(p4ndec128v32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4ndec128v32( jint i, jbyte *in, jint n, jint o, jint *out ) { return p4ndec128v32( (unsigned char *)in, n, (unsigned *)out ) - (unsigned char *)in; } + +JNIEXPORT jint JNICALL Java_jic_p4nenc256v32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out ) { JNIENC(p4nenc256v32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4nenc256v32( jint i, jint *in, jint n, jint o, jbyte *out ) { return p4nenc256v32( (unsigned *)in, n, (unsigned char *)out ) - (unsigned char *)out; } + +JNIEXPORT jint JNICALL Java_jic_p4ndec256v32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out ) { JNIDEC(p4ndec256v32, _in, n, _out ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4ndec256v32( jint i, jbyte *in, jint n, jint o, jint *out ) { return p4ndec256v32( (unsigned char *)in, n, (unsigned *)out ) - (unsigned char *)in; } + +//-------- +JNIEXPORT jint JNICALL Java_jic_p4nddec32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start ) { JNIDECS(p4nddec32, _in, n, _out, start ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4nddec32( jint i, jbyte *in, jint n, jint o, jint *out, jint start ) { return p4nddec32( (unsigned char *)in, n, (unsigned *)out, start ) - (unsigned char *)in; } + +JNIEXPORT jint JNICALL Java_jic_p4nd1dec32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start ) { JNIDECS(p4nd1dec32, _in, n, _out, start ); } JNIEXPORT jint JNICALL JavaCritical_jic_p4nd1dec32( jint i, jbyte *in, jint n, jint o, jint *out, jint start ) { return p4nd1dec32( (unsigned char *)in, n, (unsigned *)out, start ) - (unsigned char *)in; } //--------------------------------- BitPack/BitUnpack ---------------------------------------------------------------------------- JNIEXPORT jint JNICALL Java_jic_bitpack32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out, jint b) { JNIENCS(bitpack32, _in, n, _out, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitpack32( jint i, jint *in, jint n, jint o, jbyte *out, jint b) { return bitpack32( (unsigned *)in, n, (unsigned char *)out, b) - (unsigned char *)out; } @@ -102,17 +126,30 @@ JNIEXPORT jint JNICALL Java_jic_bitd1pack32( JNIEnv *env, jclass cls, jintArr JNIEXPORT jint JNICALL Java_jic_bitd1unpack32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start, jint b) { JNIDECSB(bitd1unpack32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitd1unpack32( jint i, jbyte *in, jint n, jint o, jint *out, jint start, jint b) { return bitd1unpack32((unsigned char *)in, n, (unsigned *)out, start, b) - (unsigned char *)in; } //--------------------------------- BitPack/BitUnpack SIMD ----------------------------------------------------------------------------------- -JNIEXPORT jint JNICALL Java_jic_bitpackv32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out, jint b) { JNIENCS(bitpackv32, _in, n, _out, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitpackv32( jint i, jint *in, jint n, jint o, jbyte *out, jint b) { return bitpackv32( (unsigned *)in, n, (unsigned char *)out, b) - (unsigned char *)out; } +JNIEXPORT jint JNICALL Java_jic_bitpack128v32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out, jint b) { JNIENCS(bitpack128v32, _in, n, _out, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitpack128v32( jint i, jint *in, jint n, jint o, jbyte *out, jint b) { return bitpack128v32( (unsigned *)in, n, (unsigned char *)out, b) - (unsigned char *)out; } -JNIEXPORT jint JNICALL Java_jic_bitunpackv32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint b) { JNIDECS(bitunpackv32, _in, n, _out, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitunpackv32( jint i, jbyte *in, jint n, jint o, jint *out, jint b) { return bitunpackv32( (unsigned char *)in, n, (unsigned *)out, b) - (unsigned char *)in; } +JNIEXPORT jint JNICALL Java_jic_bitunpack128v32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint b) { JNIDECS(bitunpack128v32, _in, n, _out, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitunpack128v32( jint i, jbyte *in, jint n, jint o, jint *out, jint b) { return bitunpack128v32( (unsigned char *)in, n, (unsigned *)out, b) - (unsigned char *)in; } -JNIEXPORT jint JNICALL Java_jic_bitdpackv32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out, jint start, jint b) { JNIENCSB(bitdpackv32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitdpackv32( jint i, jint *in, jint n, jint o, jbyte *out, jint start, jint b) { return bitdpackv32( (unsigned *)in, n, (unsigned char *)out, start, b) - (unsigned char *)out; } +JNIEXPORT jint JNICALL Java_jic_bitdpack128v32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out, jint start, jint b) { JNIENCSB(bitdpack128v32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitdpack128v32( jint i, jint *in, jint n, jint o, jbyte *out, jint start, jint b) { return bitdpack128v32( (unsigned *)in, n, (unsigned char *)out, start, b) - (unsigned char *)out; } -JNIEXPORT jint JNICALL Java_jic_bitdunpackv32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start, jint b) { JNIDECSB(bitdunpackv32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitdunpackv32( jint i, jbyte *in, jint n, jint o, jint *out, jint start, jint b) { return bitdunpackv32( (unsigned char *)in, n, (unsigned *)out, start, b) - (unsigned char *)in; } +JNIEXPORT jint JNICALL Java_jic_bitdunpack128v32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start, jint b) { JNIDECSB(bitdunpack128v32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitdunpack128v32( jint i, jbyte *in, jint n, jint o, jint *out, jint start, jint b) { return bitdunpack128v32( (unsigned char *)in, n, (unsigned *)out, start, b) - (unsigned char *)in; } -JNIEXPORT jint JNICALL Java_jic_bitd1packv32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out, jint start, jint b) { JNIENCSB(bitd1packv32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitd1packv32( jint i, jint *in, jint n, jint o, jbyte *out, jint start, jint b) { return bitd1packv32( (unsigned *)in, n, (unsigned char *)out, start, b) - (unsigned char *)out; } +JNIEXPORT jint JNICALL Java_jic_bitd1pack128v32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out, jint start, jint b) { JNIENCSB(bitd1pack128v32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitd1pack128v32( jint i, jint *in, jint n, jint o, jbyte *out, jint start, jint b) { return bitd1pack128v32( (unsigned *)in, n, (unsigned char *)out, start, b) - (unsigned char *)out; } -JNIEXPORT jint JNICALL Java_jic_bitd1unpackv32(JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start, jint b) { JNIDECSB(bitd1unpackv32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitd1unpackv32(jint i, jbyte *in, jint n, jint o, jint *out, jint start, jint b) { return bitd1unpackv32((unsigned char *)in, n, (unsigned *)out, start, b) - (unsigned char *)in; } +JNIEXPORT jint JNICALL Java_jic_bitd1unpack128v32(JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start, jint b) { JNIDECSB(bitd1unpack128v32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitd1unpack128v32(jint i, jbyte *in, jint n, jint o, jint *out, jint start, jint b) { return bitd1unpack128v32((unsigned char *)in, n, (unsigned *)out, start, b) - (unsigned char *)in; } + +// AVX2 +JNIEXPORT jint JNICALL Java_jic_bitpack256v32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out, jint b) { JNIENCS(bitpack256v32, _in, n, _out, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitpack256v32( jint i, jint *in, jint n, jint o, jbyte *out, jint b) { return bitpack256v32( (unsigned *)in, n, (unsigned char *)out, b) - (unsigned char *)out; } + +JNIEXPORT jint JNICALL Java_jic_bitunpack256v32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint b) { JNIDECS(bitunpack256v32, _in, n, _out, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitunpack256v32( jint i, jbyte *in, jint n, jint o, jint *out, jint b) { return bitunpack256v32( (unsigned char *)in, n, (unsigned *)out, b) - (unsigned char *)in; } + +JNIEXPORT jint JNICALL Java_jic_bitdpack256v32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out, jint start, jint b) { JNIENCSB(bitdpack256v32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitdpack256v32( jint i, jint *in, jint n, jint o, jbyte *out, jint start, jint b) { return bitdpack256v32( (unsigned *)in, n, (unsigned char *)out, start, b) - (unsigned char *)out; } + +JNIEXPORT jint JNICALL Java_jic_bitdunpack256v32( JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start, jint b) { JNIDECSB(bitdunpack256v32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitdunpack256v32( jint i, jbyte *in, jint n, jint o, jint *out, jint start, jint b) { return bitdunpack256v32( (unsigned char *)in, n, (unsigned *)out, start, b) - (unsigned char *)in; } + +JNIEXPORT jint JNICALL Java_jic_bitd1pack256v32( JNIEnv *env, jclass cls, jintArray _in, jint n, jbyteArray _out, jint start, jint b) { JNIENCSB(bitd1pack256v32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitd1pack256v32( jint i, jint *in, jint n, jint o, jbyte *out, jint start, jint b) { return bitd1pack256v32( (unsigned *)in, n, (unsigned char *)out, start, b) - (unsigned char *)out; } + +JNIEXPORT jint JNICALL Java_jic_bitd1unpack256v32(JNIEnv *env, jclass cls, jbyteArray _in, jint n, jintArray _out, jint start, jint b) { JNIDECSB(bitd1unpack256v32, _in, n, _out, start, b); } JNIEXPORT jint JNICALL JavaCritical_jic_bitd1unpack256v32(jint i, jbyte *in, jint n, jint o, jint *out, jint start, jint b) { return bitd1unpack256v32((unsigned char *)in, n, (unsigned *)out, start, b) - (unsigned char *)in; } //--------------------------------- bitutil -------------------------------------------------------------------------------------------------- JNIEXPORT jint JNICALL Java_jic_bit32( JNIEnv *env, jclass cls, jintArray _in, jint n ) { JNIBIT( bit32, _in, n ); } JNIEXPORT jint JNICALL JavaCritical_jic_bit32( jint i, jint *in, jint n ) { return bit32( (unsigned *)in, n ); } JNIEXPORT jint JNICALL Java_jic_bitd32( JNIEnv *env, jclass cls, jintArray _in, jint n, jint start ) { JNIBITS(bitd32, _in, n, start ); } JNIEXPORT jint JNICALL JavaCritical_jic_bitd32( jint i, jint *in, jint n, jint start ) { return bitd32( (unsigned *)in, n, start ); }