Add predefined datatype for FP4 format (#6122)

Adds predefined datatype for FP4 data in E2M1 format

Does not add support for any native FP4 types; datatype conversions are performed in software
This commit is contained in:
jhendersonHDF
2025-12-31 11:44:08 -06:00
committed by GitHub
parent 1ba82a0a75
commit d1efeba7be
40 changed files with 1564 additions and 777 deletions
@@ -1133,6 +1133,8 @@ public class HDF5Constants {
/** */
public static final long H5T_FLOAT_F6E3M2 = H5T_FLOAT_F6E3M2();
/** */
public static final long H5T_FLOAT_F4E2M1 = H5T_FLOAT_F4E2M1();
/** */
public static final int H5T_INTEGER = H5T_INTEGER();
/** */
public static final long H5T_INTEL_B16 = H5T_INTEL_B16();
@@ -2656,6 +2658,8 @@ public class HDF5Constants {
private static native final long H5T_FLOAT_F6E3M2();
private static native final long H5T_FLOAT_F4E2M1();
private static native final int H5T_INTEGER();
private static native final long H5T_INTEL_B16();
+5
View File
@@ -2766,6 +2766,11 @@ Java_hdf_hdf5lib_HDF5Constants_H5T_1FLOAT_1F6E3M2(JNIEnv *env, jclass cls)
{
return H5T_FLOAT_F6E3M2;
}
JNIEXPORT jlong JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5T_1FLOAT_1F4E2M1(JNIEnv *env, jclass cls)
{
return H5T_FLOAT_F4E2M1;
}
JNIEXPORT jint JNICALL
Java_hdf_hdf5lib_HDF5Constants_H5T_1INTEGER(JNIEnv *env, jclass cls)
{
+8
View File
@@ -2175,6 +2175,8 @@ h5str_get_little_endian_type(hid_t tid)
p_type = H5Tcopy(H5T_FLOAT_F6E2M3);
else if (true == H5Tequal(tid, H5T_FLOAT_F6E3M2))
p_type = H5Tcopy(H5T_FLOAT_F6E3M2);
else if (true == H5Tequal(tid, H5T_FLOAT_F4E2M1))
p_type = H5Tcopy(H5T_FLOAT_F4E2M1);
}
else if (size == 2) {
if (true == H5Tequal(tid, H5T_IEEE_F16LE) || true == H5Tequal(tid, H5T_IEEE_F16BE))
@@ -2310,6 +2312,12 @@ h5str_get_big_endian_type(hid_t tid)
else if (true == H5Tequal(tid, H5T_FLOAT_F6E3M2)) {
p_type = H5Tcopy(H5T_FLOAT_F6E3M2);
/* Though not very useful, set order to BE as expected */
H5Tset_order(p_type, H5T_ORDER_BE);
}
else if (true == H5Tequal(tid, H5T_FLOAT_F4E2M1)) {
p_type = H5Tcopy(H5T_FLOAT_F4E2M1);
/* Though not very useful, set order to BE as expected */
H5Tset_order(p_type, H5T_ORDER_BE);
}