* @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
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 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 SSE4.2 or SSE4a popcnt instruction */
unsigned use_popcnt:1;
/** use i486 instructions */
- unsigned use_i486:1;
+ unsigned use_bswap:1;
/** optimize calling convention where possible */
unsigned optimize_cc:1;
/**
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);