+ .type = SIDE_TYPE_GATHER_BYTE, \
+ .u = { \
+ .side_gather = { \
+ .u = { \
+ .side_byte = { \
+ .offset = _offset, \
+ .access_mode = _access_mode, \
+ .type = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ }, \
+ }, \
+ }, \
+ }, \
+ }, \
+ }
+#define side_field_gather_byte(_name, _offset, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_byte(_offset, _access_mode, SIDE_PARAM(_attr)))
+
+#define _side_type_gather_bool(_byte_order, _offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ { \
+ .type = SIDE_TYPE_GATHER_BOOL, \
+ .u = { \
+ .side_gather = { \
+ .u = { \
+ .side_bool = { \
+ .offset = _offset, \
+ .access_mode = _access_mode, \
+ .type = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .bool_size_bits = _bool_size_bits, \
+ .len_bits = _len_bits, \
+ .byte_order = _byte_order, \
+ }, \
+ .offset_bits = _offset_bits, \
+ }, \
+ }, \
+ }, \
+ }, \
+ }
+#define side_type_gather_bool(_offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_type_gather_bool(SIDE_TYPE_BYTE_ORDER_HOST, _offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, _attr)
+#define side_type_gather_bool_le(_offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_type_gather_bool(SIDE_TYPE_BYTE_ORDER_LE, _offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, _attr)
+#define side_type_gather_bool_be(_offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_type_gather_bool(SIDE_TYPE_BYTE_ORDER_BE, _offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, _attr)
+
+#define side_field_gather_bool(_name, _offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_bool(_offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr)))
+#define side_field_gather_bool_le(_name, _offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_bool_le(_offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr)))
+#define side_field_gather_bool_be(_name, _offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_bool_be(_offset, _bool_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr)))
+
+#define _side_type_gather_integer(_type, _signedness, _byte_order, _offset, \
+ _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ { \
+ .type = _type, \
+ .u = { \
+ .side_gather = { \
+ .u = { \
+ .side_integer = { \
+ .offset = _offset, \
+ .access_mode = _access_mode, \
+ .type = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .integer_size_bits = _integer_size_bits, \
+ .len_bits = _len_bits, \
+ .signedness = _signedness, \
+ .byte_order = _byte_order, \
+ }, \
+ .offset_bits = _offset_bits, \
+ }, \
+ }, \
+ }, \
+ }, \
+ }
+
+#define side_type_gather_unsigned_integer(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_type_gather_integer(SIDE_TYPE_GATHER_UNSIGNED_INT, false, SIDE_TYPE_BYTE_ORDER_HOST, \
+ _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr))
+#define side_type_gather_signed_integer(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_type_gather_integer(SIDE_TYPE_GATHER_SIGNED_INT, true, SIDE_TYPE_BYTE_ORDER_HOST, \
+ _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr))
+
+#define side_type_gather_unsigned_integer_le(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_type_gather_integer(SIDE_TYPE_GATHER_UNSIGNED_INT, false, SIDE_TYPE_BYTE_ORDER_LE, \
+ _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr))
+#define side_type_gather_signed_integer_le(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_type_gather_integer(SIDE_TYPE_GATHER_SIGNED_INT, true, SIDE_TYPE_BYTE_ORDER_LE, \
+ _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr))
+
+#define side_type_gather_unsigned_integer_be(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_type_gather_integer(SIDE_TYPE_GATHER_UNSIGNED_INT, false, SIDE_TYPE_BYTE_ORDER_BE, \
+ _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr))
+#define side_type_gather_signed_integer_be(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_type_gather_integer(SIDE_TYPE_GATHER_SIGNED_INT, true, SIDE_TYPE_BYTE_ORDER_BE, \
+ _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr))
+
+#define side_field_gather_unsigned_integer(_name, _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_unsigned_integer(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr)))
+#define side_field_gather_signed_integer(_name, _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_signed_integer(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr)))
+
+#define side_field_gather_unsigned_integer_le(_name, _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_unsigned_integer_le(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr)))
+#define side_field_gather_signed_integer_le(_name, _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_signed_integer_le(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr)))
+
+#define side_field_gather_unsigned_integer_be(_name, _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_unsigned_integer_be(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr)))
+#define side_field_gather_signed_integer_be(_name, _integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_signed_integer_be(_integer_offset, _integer_size_bits, _offset_bits, _len_bits, _access_mode, SIDE_PARAM(_attr)))
+
+#define _side_type_gather_float(_byte_order, _offset, _float_size_bits, _access_mode, _attr) \
+ { \
+ .type = SIDE_TYPE_GATHER_FLOAT, \
+ .u = { \
+ .side_gather = { \
+ .u = { \
+ .side_float = { \
+ .offset = _offset, \
+ .access_mode = _access_mode, \
+ .type = { \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ .float_size_bits = _float_size_bits, \
+ .byte_order = _byte_order, \
+ }, \
+ }, \
+ }, \
+ }, \
+ }, \
+ }
+
+#define side_type_gather_float(_offset, _float_size_bits, _access_mode, _attr) \
+ _side_type_gather_float(SIDE_TYPE_FLOAT_WORD_ORDER_HOST, _offset, _float_size_bits, _access_mode, _attr)
+#define side_type_gather_float_le(_offset, _float_size_bits, _access_mode, _attr) \
+ _side_type_gather_float(SIDE_TYPE_BYTE_ORDER_LE, _offset, _float_size_bits, _access_mode, _attr)
+#define side_type_gather_float_be(_offset, _float_size_bits, _access_mode, _attr) \
+ _side_type_gather_float(SIDE_TYPE_BYTE_ORDER_BE, _offset, _float_size_bits, _access_mode, _attr)
+
+#define side_field_gather_float(_name, _offset, _float_size_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_float(_offset, _float_size_bits, _access_mode, _attr))
+#define side_field_gather_float_le(_name, _offset, _float_size_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_float_le(_offset, _float_size_bits, _access_mode, _attr))
+#define side_field_gather_float_be(_name, _offset, _float_size_bits, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_float_be(_offset, _float_size_bits, _access_mode, _attr))
+
+#define side_type_gather_struct(_struct_gather, _offset, _size, _access_mode) \
+ { \
+ .type = SIDE_TYPE_GATHER_STRUCT, \
+ .u = { \
+ .side_gather = { \
+ .u = { \
+ .side_struct = { \
+ .offset = _offset, \
+ .access_mode = _access_mode, \
+ .type = _struct_gather, \
+ .size = _size, \
+ }, \
+ }, \
+ }, \
+ }, \
+ }
+#define side_field_gather_struct(_name, _struct_gather, _offset, _size, _access_mode) \
+ _side_field(_name, side_type_gather_struct(SIDE_PARAM(_struct_gather), _offset, _size, _access_mode))
+
+#define side_type_gather_array(_elem_type_gather, _length, _offset, _access_mode, _attr) \
+ { \
+ .type = SIDE_TYPE_GATHER_ARRAY, \
+ .u = { \
+ .side_gather = { \
+ .u = { \
+ .side_array = { \
+ .offset = _offset, \
+ .access_mode = _access_mode, \
+ .type = { \
+ .elem_type = _elem_type_gather, \
+ .attr = _attr, \
+ .length = _length, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ }, \
+ }, \
+ }, \
+ }, \
+ }, \
+ }
+#define side_field_gather_array(_name, _elem_type, _length, _offset, _access_mode, _attr) \
+ _side_field(_name, side_type_gather_array(SIDE_PARAM(_elem_type), _length, _offset, _access_mode, SIDE_PARAM(_attr)))
+
+#define side_type_gather_vla(_elem_type_gather, _offset, _access_mode, _length_type_gather, _attr) \
+ { \
+ .type = SIDE_TYPE_GATHER_VLA, \
+ .u = { \
+ .side_gather = { \
+ .u = { \
+ .side_vla = { \
+ .offset = _offset, \
+ .access_mode = _access_mode, \
+ .type = { \
+ .elem_type = _elem_type_gather, \
+ .attr = _attr, \
+ .nr_attr = SIDE_ARRAY_SIZE(SIDE_PARAM(_attr)), \
+ }, \
+ .length_type = _length_type_gather, \
+ }, \
+ }, \
+ }, \
+ }, \