35 result.
d.
a = b0.
a + b1.
dd + b2.
d.
a;
36 result.
d.
b = b0.
b + b1.
ff + b2.
d.
b;
37 result.
d.
c = b0.
c + b1.
ii + b2.
d.
c;
42 printf(
"%g %g %d %d %g %g %g %g %d %d %g %g %g %g %d: %g %g %d %d %g %g\n",
48 result.
d.
a, result.
d.
b, result.
d.
c,
55cls_struct_combined_gn(ffi_cif* cif
__UNUSED__,
void* resp,
void** args,
76 ffi_closure *pcl = ffi_closure_alloc(
sizeof(ffi_closure), &code);
78 ffi_type* cls_struct_fields[5];
79 ffi_type* cls_struct_fields1[5];
80 ffi_type* cls_struct_fields2[5];
81 ffi_type cls_struct_type, cls_struct_type1, cls_struct_type2;
82 ffi_type* dbl_arg_types[5];
91 cls_struct_type.size = 0;
92 cls_struct_type.alignment = 0;
93 cls_struct_type.type = FFI_TYPE_STRUCT;
94 cls_struct_type.elements = cls_struct_fields;
96 cls_struct_type1.size = 0;
97 cls_struct_type1.alignment = 0;
98 cls_struct_type1.type = FFI_TYPE_STRUCT;
99 cls_struct_type1.elements = cls_struct_fields1;
101 cls_struct_type2.size = 0;
102 cls_struct_type2.alignment = 0;
103 cls_struct_type2.type = FFI_TYPE_STRUCT;
104 cls_struct_type2.elements = cls_struct_fields2;
106 cls_struct_fields[0] = &ffi_type_double;
107 cls_struct_fields[1] = &ffi_type_float;
108 cls_struct_fields[2] = &ffi_type_sint;
109 cls_struct_fields[3] =
NULL;
111 cls_struct_fields1[0] = &ffi_type_sint;
112 cls_struct_fields1[1] = &ffi_type_double;
113 cls_struct_fields1[2] = &ffi_type_float;
114 cls_struct_fields1[3] =
NULL;
116 cls_struct_fields2[0] = &cls_struct_type;
117 cls_struct_fields2[1] = &cls_struct_type1;
118 cls_struct_fields2[2] =
NULL;
121 dbl_arg_types[0] = &cls_struct_type;
122 dbl_arg_types[1] = &cls_struct_type1;
123 dbl_arg_types[2] = &cls_struct_type2;
124 dbl_arg_types[3] = &cls_struct_type;
125 dbl_arg_types[4] =
NULL;
128 dbl_arg_types) == FFI_OK);
130 args_dbl[0] = &e_dbl;
131 args_dbl[1] = &f_dbl;
132 args_dbl[2] = &g_dbl;
133 args_dbl[3] = &h_dbl;
138 CHECK( res_dbl.
d.
a == (e_dbl.
a + f_dbl.
dd + g_dbl.
d.
a));
139 CHECK( res_dbl.
d.
b == (e_dbl.
b + f_dbl.
ff + g_dbl.
d.
b));
140 CHECK( res_dbl.
d.
c == (e_dbl.
c + f_dbl.
ii + g_dbl.
d.
c));
151 (code))(e_dbl, f_dbl, g_dbl, h_dbl);
153 CHECK( res_dbl.
d.
a == (e_dbl.
a + f_dbl.
dd + g_dbl.
d.
a));
154 CHECK( res_dbl.
d.
b == (e_dbl.
b + f_dbl.
ff + g_dbl.
d.
b));
155 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)
cls_struct_combined cls_struct_combined_fn(struct cls_struct_16byte1 b0, struct cls_struct_16byte2 b1, struct cls_struct_combined b2, struct cls_struct_16byte1 b3)
struct cls_struct_combined cls_struct_combined
struct cls_struct_16byte1 cls_struct_16byte1
struct cls_struct_16byte2 cls_struct_16byte2
ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes)