projects
/
libfirm
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bearch: remove arch_register_type_joker.
[libfirm]
/
ir
/
be
/
ia32
/
ia32_architecture.h
diff --git
a/ir/be/ia32/ia32_architecture.h
b/ir/be/ia32/ia32_architecture.h
index
fc3959d
..
c96eaac
100644
(file)
--- a/
ir/be/ia32/ia32_architecture.h
+++ b/
ir/be/ia32/ia32_architecture.h
@@
-21,7
+21,6
@@
* @file
* @brief ia32 architecture variants
* @author Michael Beck, Matthias Braun
* @file
* @brief ia32 architecture variants
* @author Michael Beck, Matthias Braun
- * @version $Id: bearch_ia32_t.h 16363 2007-10-25 23:27:07Z beck $
*/
#ifndef FIRM_BE_IA32_ARCHITECTURE_H
#define FIRM_BE_IA32_ARCHITECTURE_H
*/
#ifndef FIRM_BE_IA32_ARCHITECTURE_H
#define FIRM_BE_IA32_ARCHITECTURE_H
@@
-33,12
+32,12
@@
typedef struct {
unsigned use_leave:1;
/** use inc, dec instead of add $1, reg and add $-1, reg */
unsigned use_incdec:1;
unsigned use_leave:1;
/** use inc, dec instead of add $1, reg and add $-1, reg */
unsigned use_incdec:1;
+ /** use soft float library */
+ unsigned use_softfloat:1;
/** use sse2 instructions (instead of x87) */
unsigned use_sse2:1;
/** use ffreep instead of fpop */
unsigned use_ffreep:1;
/** use sse2 instructions (instead of x87) */
unsigned use_sse2:1;
/** use ffreep instead of fpop */
unsigned use_ffreep:1;
- /** use ftst where possible */
- unsigned use_ftst:1;
/** use femms to pop all float registers */
unsigned use_femms:1;
/** use emms to pop all float registers */
/** use femms to pop all float registers */
unsigned use_femms:1;
/** use emms to pop all float registers */
@@
-76,6
+75,10
@@
typedef struct {
unsigned use_sse_prefetch:1;
/** use 3DNow! prefetch instructions */
unsigned use_3dnow_prefetch:1;
unsigned use_sse_prefetch:1;
/** use 3DNow! prefetch instructions */
unsigned use_3dnow_prefetch:1;
+ /** use SSE4.2 or SSE4a popcnt instruction */
+ unsigned use_popcnt:1;
+ /** use i486 instructions */
+ unsigned use_bswap:1;
/** optimize calling convention where possible */
unsigned optimize_cc:1;
/**
/** optimize calling convention where possible */
unsigned optimize_cc:1;
/**
@@
-84,6
+87,9
@@
typedef struct {
* rounding mode
*/
unsigned use_unsafe_floatconv:1;
* rounding mode
*/
unsigned use_unsafe_floatconv:1;
+ /** emit machine code instead of assembler */
+ unsigned emit_machcode:1;
+
/** function alignment (a power of two in bytes) */
unsigned function_alignment;
/** alignment for labels (which are expected to be frequent jump targets) */
/** function alignment (a power of two in bytes) */
unsigned function_alignment;
/** alignment for labels (which are expected to be frequent jump targets) */
@@
-97,6
+103,14
@@
typedef struct {
extern ia32_code_gen_config_t ia32_cg_config;
extern ia32_code_gen_config_t ia32_cg_config;
+typedef enum ia32_fp_architectures {
+ IA32_FPU_ARCH_NONE = 0,
+ IA32_FPU_ARCH_X87 = 0x00000001,
+ IA32_FPU_ARCH_SSE2 = 0x00000002,
+ IA32_FPU_ARCH_SOFTFLOAT = 0x00000004,
+}
+ia32_fp_architectures;
+
/** Initialize the ia32 architecture module. */
void ia32_init_architecture(void);
/** Initialize the ia32 architecture module. */
void ia32_init_architecture(void);
@@
-108,10
+122,11
@@
void ia32_setup_cg_config(void);
* lowerer.
*
* @param kind the instruction
* lowerer.
*
* @param kind the instruction
+ * @param mode the mode of the instruction
* @param tv for MUL instruction, the multiplication constant
*
* @return the cost
*/
* @param tv for MUL instruction, the multiplication constant
*
* @return the cost
*/
-int ia32_evaluate_insn(insn_kind kind, tarval *tv);
+int ia32_evaluate_insn(insn_kind kind,
const ir_mode *mode, ir_
tarval *tv);
#endif
#endif