5 * @brief Lower Double word operations, ie Mode L -> I
10 #ifndef _FIRM_LOWER_DW_H
11 #define _FIRM_LOWER_DW_H
13 #include "firm_types.h"
16 * A callback type for creating an intrinsic entity for a given opcode. */
17 typedef entity *(create_intrinsic_fkt)(ir_type *method, const ir_op *op, const ir_mode *mode, void *context);
19 typedef struct _lwrdw_param_t {
20 int enable; /**< if true lowering is enabled */
21 int little_endian; /**< if true should be lowered for little endian, else big endian */
22 ir_mode *high_signed; /**< the double word signed mode to be lowered, typically Ls */
23 ir_mode *high_unsigned; /**< the double word unsigned mode to be lowered, typically Lu */
24 ir_mode *low_signed; /**< the word signed mode to be used, typically Is */
25 ir_mode *low_unsigned; /**< the word unsigned mode to be used, typically Iu */
27 /** callback that creates the intrinsic entity */
28 create_intrinsic_fkt *create_intrinsic;
29 void *ctx; /**< context parameter for the creator function */
33 * Lower all double word operations.
35 void lower_dw_ops(const lwrdw_param_t *param);
38 * Default implementation.
40 entity *def_create_intrinsic_fkt(ir_type *method, const ir_op *op, const ir_mode *mode, void *context);
42 #endif /* _FIRM_LOWER_DW_H */