34 result.
d.
a = b0.
a + b1.
dd + b2.
d.
a;
35 result.
d.
b = b0.
b + b1.
ff + b2.
d.
b;
36 result.
d.
c = b0.
c + b1.
ii + b2.
d.
c;
41 printf(
"%g %g %d %d %g %g %g %g %d %d %g %g: %g %g %d %d %g %g\n",
46 result.
d.
a, result.
d.
b, result.
d.
c,
53cls_struct_combined_gn(ffi_cif* cif
__UNUSED__,
void* resp,
void** args,
72 ffi_closure *pcl = ffi_closure_alloc(
sizeof(ffi_closure), &code);
74 ffi_type* cls_struct_fields[5];
75 ffi_type* cls_struct_fields1[5];
76 ffi_type* cls_struct_fields2[5];
77 ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
78 ffi_type* dbl_arg_types[5];
86 cls_struct_type.size = 0;
87 cls_struct_type.alignment = 0;
88 cls_struct_type.type = FFI_TYPE_STRUCT;
89 cls_struct_type.elements = cls_struct_fields;
91 cls_struct_type1.size = 0;
92 cls_struct_type1.alignment = 0;
93 cls_struct_type1.type = FFI_TYPE_STRUCT;
94 cls_struct_type1.elements = cls_struct_fields1;
96 cls_struct_type2.size = 0;
97 cls_struct_type2.alignment = 0;
98 cls_struct_type2.type = FFI_TYPE_STRUCT;
99 cls_struct_type2.elements = cls_struct_fields2;
101 cls_struct_fields[0] = &ffi_type_double;
102 cls_struct_fields[1] = &ffi_type_float;
103 cls_struct_fields[2] = &ffi_type_sint;
104 cls_struct_fields[3] =
NULL;
106 cls_struct_fields1[0] = &ffi_type_sint;
107 cls_struct_fields1[1] = &ffi_type_double;
108 cls_struct_fields1[2] = &ffi_type_float;
109 cls_struct_fields1[3] =
NULL;
111 cls_struct_fields2[0] = &cls_struct_type;
112 cls_struct_fields2[1] = &cls_struct_type1;
113 cls_struct_fields2[2] =
NULL;
116 dbl_arg_types[0] = &cls_struct_type;
117 dbl_arg_types[1] = &cls_struct_type1;
118 dbl_arg_types[2] = &cls_struct_type2;
119 dbl_arg_types[3] =
NULL;
122 dbl_arg_types) == FFI_OK);
124 args_dbl[0] = &e_dbl;
125 args_dbl[1] = &f_dbl;
126 args_dbl[2] = &g_dbl;
131 CHECK( res_dbl.
d.
a == (e_dbl.
a + f_dbl.
dd + g_dbl.
d.
a));
132 CHECK( res_dbl.
d.
b == (e_dbl.
b + f_dbl.
ff + g_dbl.
d.
b));
133 CHECK( res_dbl.
d.
c == (e_dbl.
c + f_dbl.
ii + g_dbl.
d.
c));
143 (code))(e_dbl, f_dbl, g_dbl);
145 CHECK( res_dbl.
d.
a == (e_dbl.
a + f_dbl.
dd + g_dbl.
d.
a));
146 CHECK( res_dbl.
d.
b == (e_dbl.
b + f_dbl.
ff + g_dbl.
d.
b));
147 CHECK( res_dbl.
d.
c == (e_dbl.
c + f_dbl.
ii + g_dbl.
d.
c));
ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void(*fun)(ffi_cif *, void *, void **, void *), void *user_data, void *codeloc)
void ffi_call(ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue)
struct cls_struct_combined cls_struct_combined
struct cls_struct_16byte1 cls_struct_16byte1
struct cls_struct_16byte2 cls_struct_16byte2
cls_struct_combined cls_struct_combined_fn(struct cls_struct_16byte1 b0, struct cls_struct_16byte2 b1, struct cls_struct_combined b2)
ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes)