projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
removed outdated comment
[libfirm]
/
ir
/
be
/
ia32
/
ia32_architecture.h
diff --git
a/ir/be/ia32/ia32_architecture.h
b/ir/be/ia32/ia32_architecture.h
index
663b02b
..
89fb4ad
100644
(file)
--- a/
ir/be/ia32/ia32_architecture.h
+++ b/
ir/be/ia32/ia32_architecture.h
@@
-27,6
+27,8
@@
#define FIRM_BE_IA32_ARCHITECTURE_H
typedef struct {
#define FIRM_BE_IA32_ARCHITECTURE_H
typedef struct {
+ /** optimize for size */
+ unsigned optimize_size:1;
/** use leave in function epilogue */
unsigned use_leave:1;
/** use inc, dec instead of add ,1 and add, -1 */
/** use leave in function epilogue */
unsigned use_leave:1;
/** use inc, dec instead of add ,1 and add, -1 */
@@
-45,6
+47,8
@@
typedef struct {
unsigned use_fucomi:1;
/** use cmovXX instructions */
unsigned use_cmov:1;
unsigned use_fucomi:1;
/** use cmovXX instructions */
unsigned use_cmov:1;
+ /** mode_D moves instead of 2 integer moves */
+ unsigned use_modeD_moves:1;
/** use add esp, 4 instead of pop */
unsigned use_add_esp_4:1;
/** use add esp, 8 instead of 2 pop's */
/** use add esp, 4 instead of pop */
unsigned use_add_esp_4:1;
/** use add esp, 8 instead of 2 pop's */
@@
-55,11
+59,17
@@
typedef struct {
unsigned use_sub_esp_8:1;
/** use imul mem, imm32 instruction (slow on some cpu's */
unsigned use_imul_mem_imm32:1;
unsigned use_sub_esp_8:1;
/** use imul mem, imm32 instruction (slow on some cpu's */
unsigned use_imul_mem_imm32:1;
+ /** use pxor instead xorps/xorpd */
+ unsigned use_pxor:1;
/** use mov reg, 0 instruction */
unsigned use_mov_0:1;
/** use mov reg, 0 instruction */
unsigned use_mov_0:1;
- /** pad Ret that are destination of conditional jump or directly preceded
+ /** pad Ret
instructions
that are destination of conditional jump or directly preceded
by other jump instruction. */
by other jump instruction. */
- unsigned use_pad_return;
+ unsigned use_pad_return:1;
+ /** use the bt instruction */
+ unsigned use_bt:1;
+ /** use fisttp instruction (requieres SSE3) */
+ unsigned use_fisttp:1;
/** optimize calling convention where possible */
unsigned optimize_cc:1;
/**
/** optimize calling convention where possible */
unsigned optimize_cc:1;
/**
@@
-72,8
+82,10
@@
typedef struct {
unsigned function_alignment;
/** alignment for labels (which are expected to be frequent jump targets) */
unsigned label_alignment;
unsigned function_alignment;
/** alignment for labels (which are expected to be frequent jump targets) */
unsigned label_alignment;
+ /** maximum skip alignment for labels (which are expected to be frequent jump targets) */
+ unsigned label_alignment_max_skip;
/** if a blocks execfreq is factor higher than it's predecessor then align
/** if a blocks execfreq is factor higher than it's predecessor then align
- * the blocks label (0 switches of label alignment) */
+ * the blocks label (0 switches of
f
label alignment) */
double label_alignment_factor;
} ia32_code_gen_config_t;
double label_alignment_factor;
} ia32_code_gen_config_t;