X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fia32_architecture.h;h=89fb4adabd8cda69733f1bb2655bf1e0fe3d6eff;hb=3f807bf48426a29da4129ff29c44a4b4690c45f6;hp=ba2277f1f59f66f11ba7128a0b787da8ff973c5c;hpb=3cead570932d6321975e27ab91a209d300ebaf22;p=libfirm diff --git a/ir/be/ia32/ia32_architecture.h b/ir/be/ia32/ia32_architecture.h index ba2277f1f..89fb4adab 100644 --- 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 { + /** 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 */ @@ -45,6 +47,8 @@ typedef struct { 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 */ @@ -53,6 +57,19 @@ typedef struct { unsigned use_sub_esp_4:1; /** use sub esp, 8 instead of 2 push's */ 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; + /** pad Ret instructions that are destination of conditional jump or directly preceded + by other jump instruction. */ + 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; /** @@ -65,8 +82,10 @@ typedef struct { 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 - * the blocks label (0 switches of label alignment) */ + * the blocks label (0 switches off label alignment) */ double label_alignment_factor; } ia32_code_gen_config_t;