bechordal: Remove the write-only attribute pressure from struct border_t.
[libfirm] / ir / be / ia32 / ia32_transform.h
1 /*
2  * This file is part of libFirm.
3  * Copyright (C) 2012 University of Karlsruhe.
4  */
5
6 /**
7  * @file
8  * @brief       This file implements the IR transformation from firm into ia32-Firm.
9  * @author      Christian Wuerdig, Matthias Braun
10  */
11 #ifndef FIRM_BE_IA32_IA32_TRANSFORM_H
12 #define FIRM_BE_IA32_IA32_TRANSFORM_H
13
14 #include "bearch_ia32_t.h"
15
16 /**
17  * Transform firm nodes to x86 assembler nodes, ie
18  * do instruction selection.
19  */
20 void ia32_transform_graph(ir_graph *irg);
21
22 /**
23  * Some constants needed for code generation.
24  * Generated on demand.
25  */
26 typedef enum {
27         ia32_SSIGN,          /**< SSE2 single precision sign */
28         ia32_DSIGN,          /**< SSE2 double precision sign */
29         ia32_SABS,           /**< SSE2 single precision ABS mask */
30         ia32_DABS,           /**< SSE2 double precision ABS mask */
31         ia32_ULLBIAS,        /**< x87 ULL->float bias */
32         ia32_known_const_max /**< last constant */
33 } ia32_known_const_t;
34
35 /**
36  * Generate a known floating point constant
37  */
38 ir_entity *ia32_gen_fp_known_const(ia32_known_const_t kct);
39
40 /**
41  * Skip all Down-Conv's on a given node and return the resulting node.
42  */
43 ir_node *ia32_skip_downconv(ir_node *node);
44
45 /** Initialize the ia32 instruction selector. */
46 void ia32_init_transform(void);
47
48 #endif