+ * A helper type collecting needed info for IA32 intrinsic lowering.
+ */
+struct ia32_intrinsic_env_t {
+ ia32_isa_t *isa; /**< the isa object */
+ ir_graph *irg; /**< the irg, these entities belong to */
+ ir_entity *ll_div_op1; /**< entity for first div operand (move into FPU) */
+ ir_entity *ll_div_op2; /**< entity for second div operand (move into FPU) */
+ ir_entity *ll_d_conv; /**< entity for converts ll -> d */
+ ir_entity *d_ll_conv; /**< entity for converts d -> ll */
+ ir_entity *divdi3; /**< entity for __divdi3 library call */
+ ir_entity *moddi3; /**< entity for __moddi3 library call */
+ ir_entity *udivdi3; /**< entity for __udivdi3 library call */
+ ir_entity *umoddi3; /**< entity for __umoddi3 library call */
+ tarval *u64_bias; /**< bias value for conversion from float to unsigned 64 */
+};
+
+typedef enum transformer_t {
+ TRANSFORMER_DEFAULT,
+#ifdef FIRM_GRGEN_BE
+ TRANSFORMER_PBQP,
+ TRANSFORMER_RAND
+#endif
+} transformer_t;
+
+#ifdef FIRM_GRGEN_BE
+/** The selected transformer. */
+extern transformer_t be_transformer;
+
+#else
+#define be_transformer TRANSFORMER_DEFAULT
+#endif
+
+/** The mode for the floating point control word. */
+extern ir_mode *mode_fpcw;
+
+/** The current code generator. */
+extern ia32_code_gen_t *ia32_current_cg;
+
+/**
+ * Returns the unique per irg GP NoReg node.