ir_mode: simplify interface, improve float-mode handling
authorMatthias Braun <matze@braunis.de>
Tue, 25 Oct 2011 12:47:25 +0000 (14:47 +0200)
committerMatthias Braun <matze@braunis.de>
Thu, 27 Oct 2011 12:25:14 +0000 (14:25 +0200)
commite3b765fcef0e337f4fe2e17d57d2fbaf1912ec79
treef420e8e9a865373e4ed94bde53f31029d267ea80
parentf82110689db75f46a28ec31e76f510d0fba2ecb2
ir_mode: simplify interface, improve float-mode handling

The main change here is splitting new_ir_mode into new_int_mode,
new_reference_mode and new_float_mode. You can now specify
mantissa+exponent size in new_float_mode. This also changes:

- x86 80bit-FP mode is NOT a ieee754 don't put "ieee754" into functions
  names that can also handle x86 80bit fps
- Move ieee_descriptor_t from tarval module into ir_mode struct
  (and rename to float_descriptor_t)
- Introduce mode_Q which represents binary128 from ieee754
- You can ask float modes for mantissa/exponent sizes now
- Fix endianess when emitting big float values in begnuas
- A bunch of long double fixes in ia32: the mode there has 10bytes
  (80bit) but the variables typically are 12 or 16 byte big
- This fixes some problems of sparc binary128 handling
29 files changed:
include/libfirm/irhooks.h
include/libfirm/irmode.h
include/libfirm/tv.h
ir/ana/irmemory.c
ir/be/TEMPLATE/TEMPLATE_spec.pl
ir/be/arm/arm_spec.pl
ir/be/arm/arm_transform.c
ir/be/begnuas.c
ir/be/ia32/bearch_ia32.c
ir/be/ia32/bearch_ia32_t.h
ir/be/ia32/ia32_common_transform.c
ir/be/ia32/ia32_common_transform.h
ir/be/ia32/ia32_emitter.c
ir/be/ia32/ia32_spec.pl
ir/be/ia32/ia32_transform.c
ir/be/sparc/bearch_sparc.c
ir/be/sparc/sparc_new_nodes.c
ir/be/sparc/sparc_spec.pl
ir/ir/irio.c
ir/ir/irmode.c
ir/ir/irmode_t.h
ir/ir/iropt.c
ir/ir/irtypes.h
ir/lower/lower_dw.c
ir/opt/scalar_replace.c
ir/stat/const_stat.c
ir/tv/fltcalc.c
ir/tv/fltcalc.h
ir/tv/tv.c