8321300: Cleanup TestHFA

Reviewed-by: jvernee, jbechberger
This commit is contained in:
Martin Doerr 2023-12-05 13:57:06 +00:00
parent 5b02188f72
commit a1fe16b5ec

@ -46,43 +46,44 @@ public class TestHFA {
final static Linker abi = Linker.nativeLinker();
final static SymbolLookup lookup = SymbolLookup.loaderLookup();
static final OfFloat FLOAT = JAVA_FLOAT.withByteAlignment(4);
final static OfFloat C_FLOAT = (ValueLayout.OfFloat) abi.canonicalLayouts().get("float");
final static OfDouble C_DOUBLE = (ValueLayout.OfDouble) abi.canonicalLayouts().get("double");
final static GroupLayout S_FFLayout = MemoryLayout.structLayout(
FLOAT.withName("p0"),
FLOAT.withName("p1")
C_FLOAT.withName("p0"),
C_FLOAT.withName("p1")
).withName("S_FF");
final static GroupLayout S_FFFFFFFLayout = MemoryLayout.structLayout(
FLOAT.withName("p0"),
FLOAT.withName("p1"),
FLOAT.withName("p2"),
FLOAT.withName("p3"),
FLOAT.withName("p4"),
FLOAT.withName("p5"),
FLOAT.withName("p6")
C_FLOAT.withName("p0"),
C_FLOAT.withName("p1"),
C_FLOAT.withName("p2"),
C_FLOAT.withName("p3"),
C_FLOAT.withName("p4"),
C_FLOAT.withName("p5"),
C_FLOAT.withName("p6")
).withName("S_FFFF");
static final FunctionDescriptor fdadd_float_structs = FunctionDescriptor.of(S_FFFFFFFLayout, S_FFFFFFFLayout, S_FFFFFFFLayout);
static final FunctionDescriptor fdadd_float_to_struct_after_floats = FunctionDescriptor.of(S_FFLayout,
JAVA_FLOAT, JAVA_FLOAT, JAVA_FLOAT, JAVA_FLOAT, JAVA_FLOAT,
JAVA_FLOAT, JAVA_FLOAT, JAVA_FLOAT, JAVA_FLOAT, JAVA_FLOAT,
JAVA_FLOAT, JAVA_FLOAT, S_FFLayout, JAVA_FLOAT);
C_FLOAT, C_FLOAT, C_FLOAT, C_FLOAT, C_FLOAT,
C_FLOAT, C_FLOAT, C_FLOAT, C_FLOAT, C_FLOAT,
C_FLOAT, C_FLOAT, S_FFLayout, C_FLOAT);
static final FunctionDescriptor fdadd_float_to_struct_after_structs = FunctionDescriptor.of(S_FFLayout,
S_FFLayout, S_FFLayout, S_FFLayout, S_FFLayout, S_FFLayout, S_FFLayout,
S_FFLayout, JAVA_FLOAT);
S_FFLayout, C_FLOAT);
static final FunctionDescriptor fdadd_double_to_struct_after_structs = FunctionDescriptor.of(S_FFLayout,
S_FFLayout, S_FFLayout, S_FFLayout, S_FFLayout, S_FFLayout, S_FFLayout,
S_FFLayout, JAVA_DOUBLE);
S_FFLayout, C_DOUBLE);
static final FunctionDescriptor fdadd_float_to_large_struct_after_structs = FunctionDescriptor.of(S_FFFFFFFLayout,
S_FFLayout, S_FFLayout, S_FFLayout, S_FFLayout, S_FFLayout, S_FFLayout,
S_FFFFFFFLayout, JAVA_FLOAT);
S_FFFFFFFLayout, C_FLOAT);
static final FunctionDescriptor fdpass_two_large_structs = FunctionDescriptor.of(S_FFFFFFFLayout, ADDRESS, S_FFFFFFFLayout, S_FFFFFFFLayout);
static final FunctionDescriptor fdpass_struct_after_floats = FunctionDescriptor.of(S_FFLayout, ADDRESS, S_FFLayout, JAVA_FLOAT);
static final FunctionDescriptor fdpass_struct_after_structs = FunctionDescriptor.of(S_FFLayout, ADDRESS, S_FFLayout, JAVA_FLOAT);
static final FunctionDescriptor fdpass_struct_after_structs_plus_double = FunctionDescriptor.of(S_FFLayout, ADDRESS, S_FFLayout, JAVA_DOUBLE);
static final FunctionDescriptor fdpass_large_struct_after_structs = FunctionDescriptor.of(S_FFFFFFFLayout, ADDRESS, S_FFFFFFFLayout, JAVA_FLOAT);
static final FunctionDescriptor fdpass_struct_after_floats = FunctionDescriptor.of(S_FFLayout, ADDRESS, S_FFLayout, C_FLOAT);
static final FunctionDescriptor fdpass_struct_after_structs = FunctionDescriptor.of(S_FFLayout, ADDRESS, S_FFLayout, C_FLOAT);
static final FunctionDescriptor fdpass_struct_after_structs_plus_double = FunctionDescriptor.of(S_FFLayout, ADDRESS, S_FFLayout, C_DOUBLE);
static final FunctionDescriptor fdpass_large_struct_after_structs = FunctionDescriptor.of(S_FFFFFFFLayout, ADDRESS, S_FFFFFFFLayout, C_FLOAT);
final static MethodHandle mhadd_float_structs = abi.downcallHandle(lookup.find("add_float_structs").orElseThrow(),
fdadd_float_structs);
@ -109,24 +110,23 @@ public class TestHFA {
@Test
public static void testAddFloatStructs() {
float p0 = 0.0f, p1 = 0.0f, p2 = 0.0f, p3 = 0.0f, p4 = 0.0f, p5 = 0.0f, p6 = 0.0f;
try {
Arena arena = Arena.ofConfined();
try (Arena arena = Arena.ofConfined()) {
MemorySegment s = arena.allocate(S_FFFFFFFLayout);
s.set(FLOAT, 0, 1.0f);
s.set(FLOAT, 4, 2.0f);
s.set(FLOAT, 8, 3.0f);
s.set(FLOAT, 12, 4.0f);
s.set(FLOAT, 16, 5.0f);
s.set(FLOAT, 20, 6.0f);
s.set(FLOAT, 24, 7.0f);
s.set(C_FLOAT, 0, 1.0f);
s.set(C_FLOAT, 4, 2.0f);
s.set(C_FLOAT, 8, 3.0f);
s.set(C_FLOAT, 12, 4.0f);
s.set(C_FLOAT, 16, 5.0f);
s.set(C_FLOAT, 20, 6.0f);
s.set(C_FLOAT, 24, 7.0f);
s = (MemorySegment)mhadd_float_structs.invokeExact((SegmentAllocator)arena, s, s);
p0 = s.get(FLOAT, 0);
p1 = s.get(FLOAT, 4);
p2 = s.get(FLOAT, 8);
p3 = s.get(FLOAT, 12);
p4 = s.get(FLOAT, 16);
p5 = s.get(FLOAT, 20);
p6 = s.get(FLOAT, 24);
p0 = s.get(C_FLOAT, 0);
p1 = s.get(C_FLOAT, 4);
p2 = s.get(C_FLOAT, 8);
p3 = s.get(C_FLOAT, 12);
p4 = s.get(C_FLOAT, 16);
p5 = s.get(C_FLOAT, 20);
p6 = s.get(C_FLOAT, 24);
System.out.println("S_FFFFFFF(" + p0 + ";" + p1 + ";" + p2 + ";" + p3 + ";" + p4 + ";" + p5 + ";" + p6 + ")");
} catch (Throwable t) {
t.printStackTrace();
@ -138,17 +138,16 @@ public class TestHFA {
@Test
public static void testAddFloatToStructAfterFloats() {
float p0 = 0.0f, p1 = 0.0f;
try {
Arena arena = Arena.ofConfined();
try (Arena arena = Arena.ofConfined()) {
MemorySegment s = arena.allocate(S_FFLayout);
s.set(FLOAT, 0, 1.0f);
s.set(FLOAT, 4, 1.0f);
s.set(C_FLOAT, 0, 1.0f);
s.set(C_FLOAT, 4, 1.0f);
s = (MemorySegment)mhadd_float_to_struct_after_floats.invokeExact((SegmentAllocator)arena,
1.0f, 2.0f, 3.0f, 4.0f, 5.0f,
6.0f, 7.0f, 8.0f, 9.0f, 10.0f,
11.0f, 12.0f, s, 1.0f);
p0 = s.get(FLOAT, 0);
p1 = s.get(FLOAT, 4);
p0 = s.get(C_FLOAT, 0);
p1 = s.get(C_FLOAT, 4);
System.out.println("S_FF(" + p0 + ";" + p1 + ")");
} catch (Throwable t) {
t.printStackTrace();
@ -159,16 +158,15 @@ public class TestHFA {
@Test
public static void testAddFloatToStructAfterStructs() {
float p0 = 0.0f, p1 = 0.0f;
try {
Arena arena = Arena.ofConfined();
try (Arena arena = Arena.ofConfined()) {
MemorySegment s = arena.allocate(S_FFLayout);
s.set(FLOAT, 0, 1.0f);
s.set(FLOAT, 4, 1.0f);
s.set(C_FLOAT, 0, 1.0f);
s.set(C_FLOAT, 4, 1.0f);
s = (MemorySegment)mhadd_float_to_struct_after_structs.invokeExact((SegmentAllocator)arena,
s, s, s, s, s, s,
s, 1.0f);
p0 = s.get(FLOAT, 0);
p1 = s.get(FLOAT, 4);
p0 = s.get(C_FLOAT, 0);
p1 = s.get(C_FLOAT, 4);
System.out.println("S_FF(" + p0 + ";" + p1 + ")");
} catch (Throwable t) {
t.printStackTrace();
@ -179,16 +177,15 @@ public class TestHFA {
@Test
public static void testAddDoubleToStructAfterStructs() {
float p0 = 0.0f, p1 = 0.0f;
try {
Arena arena = Arena.ofConfined();
try (Arena arena = Arena.ofConfined()) {
MemorySegment s = arena.allocate(S_FFLayout);
s.set(FLOAT, 0, 1.0f);
s.set(FLOAT, 4, 1.0f);
s.set(C_FLOAT, 0, 1.0f);
s.set(C_FLOAT, 4, 1.0f);
s = (MemorySegment)mhadd_double_to_struct_after_structs.invokeExact((SegmentAllocator)arena,
s, s, s, s, s, s,
s, 1.0d);
p0 = s.get(FLOAT, 0);
p1 = s.get(FLOAT, 4);
p0 = s.get(C_FLOAT, 0);
p1 = s.get(C_FLOAT, 4);
System.out.println("S_FF(" + p0 + ";" + p1 + ")");
} catch (Throwable t) {
t.printStackTrace();
@ -199,26 +196,25 @@ public class TestHFA {
@Test
public static void testAddFloatToLargeStructAfterStructs() {
float p0 = 0.0f, p1 = 0.0f, p2 = 0.0f, p3 = 0.0f, p4 = 0.0f, p5 = 0.0f, p6 = 0.0f;
try {
Arena arena = Arena.ofConfined();
try (Arena arena = Arena.ofConfined()) {
MemorySegment s = arena.allocate(S_FFFFFFFLayout);
s.set(FLOAT, 0, 1.0f);
s.set(FLOAT, 4, 2.0f);
s.set(FLOAT, 8, 3.0f);
s.set(FLOAT, 12, 4.0f);
s.set(FLOAT, 16, 5.0f);
s.set(FLOAT, 20, 6.0f);
s.set(FLOAT, 24, 7.0f);
s.set(C_FLOAT, 0, 1.0f);
s.set(C_FLOAT, 4, 2.0f);
s.set(C_FLOAT, 8, 3.0f);
s.set(C_FLOAT, 12, 4.0f);
s.set(C_FLOAT, 16, 5.0f);
s.set(C_FLOAT, 20, 6.0f);
s.set(C_FLOAT, 24, 7.0f);
s = (MemorySegment)mhadd_float_to_large_struct_after_structs.invokeExact((SegmentAllocator)arena,
s, s, s, s, s, s,
s, 1.0f);
p0 = s.get(FLOAT, 0);
p1 = s.get(FLOAT, 4);
p2 = s.get(FLOAT, 8);
p3 = s.get(FLOAT, 12);
p4 = s.get(FLOAT, 16);
p5 = s.get(FLOAT, 20);
p6 = s.get(FLOAT, 24);
p0 = s.get(C_FLOAT, 0);
p1 = s.get(C_FLOAT, 4);
p2 = s.get(C_FLOAT, 8);
p3 = s.get(C_FLOAT, 12);
p4 = s.get(C_FLOAT, 16);
p5 = s.get(C_FLOAT, 20);
p6 = s.get(C_FLOAT, 24);
System.out.println("S_FFFFFFF(" + p0 + ";" + p1 + ";" + p2 + ";" + p3 + ";" + p4 + ";" + p5 + ";" + p6 + ")");
} catch (Throwable t) {
t.printStackTrace();
@ -229,20 +225,20 @@ public class TestHFA {
// Java versions for Upcall tests.
public static MemorySegment addFloatStructs(MemorySegment p0, MemorySegment p1) {
float val0 = p0.get(FLOAT, 0) + p1.get(FLOAT, 0);
float val1 = p0.get(FLOAT, 4) + p1.get(FLOAT, 4);
float val2 = p0.get(FLOAT, 8) + p1.get(FLOAT, 8);
float val3 = p0.get(FLOAT, 12) + p1.get(FLOAT, 12);
float val4 = p0.get(FLOAT, 16) + p1.get(FLOAT, 16);
float val5 = p0.get(FLOAT, 20) + p1.get(FLOAT, 20);
float val6 = p0.get(FLOAT, 24) + p1.get(FLOAT, 24);
p0.set(FLOAT, 0, val0);
p0.set(FLOAT, 4, val1);
p0.set(FLOAT, 8, val2);
p0.set(FLOAT, 12, val3);
p0.set(FLOAT, 16, val4);
p0.set(FLOAT, 20, val5);
p0.set(FLOAT, 24, val6);
float val0 = p0.get(C_FLOAT, 0) + p1.get(C_FLOAT, 0);
float val1 = p0.get(C_FLOAT, 4) + p1.get(C_FLOAT, 4);
float val2 = p0.get(C_FLOAT, 8) + p1.get(C_FLOAT, 8);
float val3 = p0.get(C_FLOAT, 12) + p1.get(C_FLOAT, 12);
float val4 = p0.get(C_FLOAT, 16) + p1.get(C_FLOAT, 16);
float val5 = p0.get(C_FLOAT, 20) + p1.get(C_FLOAT, 20);
float val6 = p0.get(C_FLOAT, 24) + p1.get(C_FLOAT, 24);
p0.set(C_FLOAT, 0, val0);
p0.set(C_FLOAT, 4, val1);
p0.set(C_FLOAT, 8, val2);
p0.set(C_FLOAT, 12, val3);
p0.set(C_FLOAT, 16, val4);
p0.set(C_FLOAT, 20, val5);
p0.set(C_FLOAT, 24, val6);
return p0;
}
@ -250,8 +246,8 @@ public class TestHFA {
float f1, float f2, float f3, float f4, float f5,
float f6, float f7, float f8, float f9, float f10,
float f11, float f12, MemorySegment s, float f) {
float val = s.get(FLOAT, 0);
s.set(FLOAT, 0, val + f);
float val = s.get(C_FLOAT, 0);
s.set(C_FLOAT, 0, val + f);
return s;
}
@ -259,8 +255,8 @@ public class TestHFA {
MemorySegment s1, MemorySegment s2, MemorySegment s3,
MemorySegment s4, MemorySegment s5, MemorySegment s6,
MemorySegment s, float f) {
float val = s.get(FLOAT, 0);
s.set(FLOAT, 0, val + f);
float val = s.get(C_FLOAT, 0);
s.set(C_FLOAT, 0, val + f);
return s;
}
@ -268,36 +264,35 @@ public class TestHFA {
MemorySegment s1, MemorySegment s2, MemorySegment s3,
MemorySegment s4, MemorySegment s5, MemorySegment s6,
MemorySegment s, double f) {
float val = s.get(FLOAT, 0);
s.set(FLOAT, 0, val + (float) f);
float val = s.get(C_FLOAT, 0);
s.set(C_FLOAT, 0, val + (float) f);
return s;
}
@Test
public static void testAddFloatStructsUpcall() {
float p0 = 0.0f, p1 = 0.0f, p2 = 0.0f, p3 = 0.0f, p4 = 0.0f, p5 = 0.0f, p6 = 0.0f;
try {
Arena arena = Arena.ofConfined();
try (Arena arena = Arena.ofConfined()) {
MemorySegment s = arena.allocate(S_FFFFFFFLayout);
s.set(FLOAT, 0, 1.0f);
s.set(FLOAT, 4, 2.0f);
s.set(FLOAT, 8, 3.0f);
s.set(FLOAT, 12, 4.0f);
s.set(FLOAT, 16, 5.0f);
s.set(FLOAT, 20, 6.0f);
s.set(FLOAT, 24, 7.0f);
s.set(C_FLOAT, 0, 1.0f);
s.set(C_FLOAT, 4, 2.0f);
s.set(C_FLOAT, 8, 3.0f);
s.set(C_FLOAT, 12, 4.0f);
s.set(C_FLOAT, 16, 5.0f);
s.set(C_FLOAT, 20, 6.0f);
s.set(C_FLOAT, 24, 7.0f);
MethodType mt = MethodType.methodType(MemorySegment.class,
MemorySegment.class, MemorySegment.class);
MemorySegment stub = abi.upcallStub(MethodHandles.lookup().findStatic(TestHFA.class, "addFloatStructs", mt),
fdadd_float_structs, arena);
s = (MemorySegment)mhpass_two_large_structs.invokeExact((SegmentAllocator)arena, stub, s, s);
p0 = s.get(FLOAT, 0);
p1 = s.get(FLOAT, 4);
p2 = s.get(FLOAT, 8);
p3 = s.get(FLOAT, 12);
p4 = s.get(FLOAT, 16);
p5 = s.get(FLOAT, 20);
p6 = s.get(FLOAT, 24);
p0 = s.get(C_FLOAT, 0);
p1 = s.get(C_FLOAT, 4);
p2 = s.get(C_FLOAT, 8);
p3 = s.get(C_FLOAT, 12);
p4 = s.get(C_FLOAT, 16);
p5 = s.get(C_FLOAT, 20);
p6 = s.get(C_FLOAT, 24);
System.out.println("S_FFFFFFF(" + p0 + ";" + p1 + ";" + p2 + ";" + p3 + ";" + p4 + ";" + p5 + ";" + p6 + ")");
} catch (Throwable t) {
t.printStackTrace();
@ -309,11 +304,10 @@ public class TestHFA {
@Test
public static void testAddFloatToStructAfterFloatsUpcall() {
float p0 = 0.0f, p1 = 0.0f;
try {
Arena arena = Arena.ofConfined();
try (Arena arena = Arena.ofConfined()) {
MemorySegment s = arena.allocate(S_FFLayout);
s.set(FLOAT, 0, 1.0f);
s.set(FLOAT, 4, 1.0f);
s.set(C_FLOAT, 0, 1.0f);
s.set(C_FLOAT, 4, 1.0f);
MethodType mt = MethodType.methodType(MemorySegment.class,
float.class, float.class, float.class, float.class,
float.class, float.class, float.class, float.class,
@ -322,8 +316,8 @@ public class TestHFA {
MemorySegment stub = abi.upcallStub(MethodHandles.lookup().findStatic(TestHFA.class, "addFloatToStructAfterFloats", mt),
fdadd_float_to_struct_after_floats, arena);
s = (MemorySegment)mhpass_struct_after_floats.invokeExact((SegmentAllocator)arena, stub, s, 1.0f);
p0 = s.get(FLOAT, 0);
p1 = s.get(FLOAT, 4);
p0 = s.get(C_FLOAT, 0);
p1 = s.get(C_FLOAT, 4);
System.out.println("S_FF(" + p0 + ";" + p1 + ")");
} catch (Throwable t) {
t.printStackTrace();
@ -334,11 +328,10 @@ public class TestHFA {
@Test
public static void testAddFloatToStructAfterStructsUpcall() {
float p0 = 0.0f, p1 = 0.0f;
try {
Arena arena = Arena.ofConfined();
try (Arena arena = Arena.ofConfined()) {
MemorySegment s = arena.allocate(S_FFLayout);
s.set(FLOAT, 0, 1.0f);
s.set(FLOAT, 4, 1.0f);
s.set(C_FLOAT, 0, 1.0f);
s.set(C_FLOAT, 4, 1.0f);
MethodType mt = MethodType.methodType(MemorySegment.class,
MemorySegment.class, MemorySegment.class, MemorySegment.class,
MemorySegment.class, MemorySegment.class, MemorySegment.class,
@ -346,8 +339,8 @@ public class TestHFA {
MemorySegment stub = abi.upcallStub(MethodHandles.lookup().findStatic(TestHFA.class, "addFloatToStructAfterStructs", mt),
fdadd_float_to_struct_after_structs, arena);
s = (MemorySegment)mhpass_struct_after_structs.invokeExact((SegmentAllocator)arena, stub, s, 1.0f);
p0 = s.get(FLOAT, 0);
p1 = s.get(FLOAT, 4);
p0 = s.get(C_FLOAT, 0);
p1 = s.get(C_FLOAT, 4);
System.out.println("S_FF(" + p0 + ";" + p1 + ")");
} catch (Throwable t) {
t.printStackTrace();
@ -358,11 +351,10 @@ public class TestHFA {
@Test
public static void testAddDoubleToStructAfterStructsUpcall() {
float p0 = 0.0f, p1 = 0.0f;
try {
Arena arena = Arena.ofConfined();
try (Arena arena = Arena.ofConfined()) {
MemorySegment s = arena.allocate(S_FFLayout);
s.set(FLOAT, 0, 1.0f);
s.set(FLOAT, 4, 1.0f);
s.set(C_FLOAT, 0, 1.0f);
s.set(C_FLOAT, 4, 1.0f);
MethodType mt = MethodType.methodType(MemorySegment.class,
MemorySegment.class, MemorySegment.class, MemorySegment.class,
MemorySegment.class, MemorySegment.class, MemorySegment.class,
@ -370,8 +362,8 @@ public class TestHFA {
MemorySegment stub = abi.upcallStub(MethodHandles.lookup().findStatic(TestHFA.class, "addDoubleToStructAfterStructs", mt),
fdadd_double_to_struct_after_structs, arena);
s = (MemorySegment)mhpass_struct_after_structs_plus_double.invokeExact((SegmentAllocator)arena, stub, s, 1.0d);
p0 = s.get(FLOAT, 0);
p1 = s.get(FLOAT, 4);
p0 = s.get(C_FLOAT, 0);
p1 = s.get(C_FLOAT, 4);
System.out.println("S_FF(" + p0 + ";" + p1 + ")");
} catch (Throwable t) {
t.printStackTrace();
@ -382,16 +374,15 @@ public class TestHFA {
@Test
public static void testAddFloatToLargeStructAfterStructsUpcall() {
float p0 = 0.0f, p1 = 0.0f, p2 = 0.0f, p3 = 0.0f, p4 = 0.0f, p5 = 0.0f, p6 = 0.0f;
try {
Arena arena = Arena.ofConfined();
try (Arena arena = Arena.ofConfined()) {
MemorySegment s = arena.allocate(S_FFFFFFFLayout);
s.set(FLOAT, 0, 1.0f);
s.set(FLOAT, 4, 2.0f);
s.set(FLOAT, 8, 3.0f);
s.set(FLOAT, 12, 4.0f);
s.set(FLOAT, 16, 5.0f);
s.set(FLOAT, 20, 6.0f);
s.set(FLOAT, 24, 7.0f);
s.set(C_FLOAT, 0, 1.0f);
s.set(C_FLOAT, 4, 2.0f);
s.set(C_FLOAT, 8, 3.0f);
s.set(C_FLOAT, 12, 4.0f);
s.set(C_FLOAT, 16, 5.0f);
s.set(C_FLOAT, 20, 6.0f);
s.set(C_FLOAT, 24, 7.0f);
MethodType mt = MethodType.methodType(MemorySegment.class,
MemorySegment.class, MemorySegment.class, MemorySegment.class,
MemorySegment.class, MemorySegment.class, MemorySegment.class,
@ -399,13 +390,13 @@ public class TestHFA {
MemorySegment stub = abi.upcallStub(MethodHandles.lookup().findStatic(TestHFA.class, "addFloatToStructAfterStructs", mt),
fdadd_float_to_large_struct_after_structs, arena);
s = (MemorySegment)mhpass_large_struct_after_structs.invokeExact((SegmentAllocator)arena, stub, s, 1.0f);
p0 = s.get(FLOAT, 0);
p1 = s.get(FLOAT, 4);
p2 = s.get(FLOAT, 8);
p3 = s.get(FLOAT, 12);
p4 = s.get(FLOAT, 16);
p5 = s.get(FLOAT, 20);
p6 = s.get(FLOAT, 24);
p0 = s.get(C_FLOAT, 0);
p1 = s.get(C_FLOAT, 4);
p2 = s.get(C_FLOAT, 8);
p3 = s.get(C_FLOAT, 12);
p4 = s.get(C_FLOAT, 16);
p5 = s.get(C_FLOAT, 20);
p6 = s.get(C_FLOAT, 24);
System.out.println("S_FFFFFFF(" + p0 + ";" + p1 + ";" + p2 + ";" + p3 + ";" + p4 + ";" + p5 + ";" + p6 + ")");
} catch (Throwable t) {
t.printStackTrace();