path: root/ir/be/TEMPLATE
Commit message (Collapse)AuthorAge
* Directly use ${ARCH}_single_reg_req_${CLS}_${REG} instead of ↵Christoph Mallon2018-08-23
| | | | ${ARCH}_registers[REG_${REG}].single_req.
* amd64, mips, template: Mark nodes as fallthrough.Christoph Mallon2018-05-31
* be: Factor out code to decide whether a basic block needs a label.Christoph Mallon2018-05-31
| | | | For this a new flag 'arch_irn_flag_fallthrough' is introduced to mark nodes which are capable of falling through to their successor.
* be: Factor out parsing of register names for clobbers.Christoph Mallon2018-05-04
* be: Handle '%u' centrally in BE_EMITF().Christoph Mallon2018-04-08
* be, doc: '%%' is also handle by BE_EMITF().Christoph Mallon2018-04-03
* be: Handle '%s' centrally in BE_EMITF().Christoph Mallon2018-04-02
* template: Remove handling of '%d' in the emitter.Christoph Mallon2018-04-02
| | | | It is handled by BE_EMITF().
* be: Update documentation of what is handled by BE_EMITF().Christoph Mallon2018-04-02
* be: Remove default attribute initialization.Christoph Mallon2018-02-28
| | | | | The only user is the template backend. Especially this one should not use it, because it should demonstrate all the mechanisms.
* be: Turn the specification of each register class into a map.Christoph Mallon2018-02-26
| | | | | So far the mode and flags were in the last magic entry in each register class. Now they are entries in the map and the list of registers is also an entry.
* be: Remove the redundant parameter 'sp' from be_new_IncSP().Christoph Mallon2018-02-26
| | | | | It only needs the register class, not the specific stack pointer register. So simply get the register class from the parameter 'old_sp'.
* Implement a new, callback-based, lowering for calls with compounds.Andreas Fried2017-12-13
| | | | | | | | | | The difference between ABIs is so large that we cannot distingush between them with flags. Basically, we would have to implement all ABIs in lower_calls.c. Instead, we let the backends specify how parameter and result types are to be lowered. For now, all backends except IA-32 use a dummy ABI, which is the old Firm default, i.e. the SPARC ABI.
* Rework target initialization and queryMatthias Braun2017-02-20
| | | | | | | | | | | | | | | | | | | | | | | | | | - Moves machine triple handling code form cparser into libfirm - Create new APIs to set the target and query information about it - Move backend_params into the new target API - Backends initialize ir_target instead of backend_params now - Add new API to get information about the target platform: - Mangle a name for the target platform (and remove compilerlib mangling callback) - Can query size and alignment of basic C types for the platform - Move some constant target information into arch_isa_if_t (we move it to target_info_t later when we realize it needs to be dynamic) - Redo backend initialization. Examples: Simple case: Initialize for host: ir_init(); Complex case: cross-compile to sparc with PIC enabled: ir_init_library(); ir_target_set("sparc-leon-linux-gnu"); ir_target_option("pic"); ir_target_init();
* Reorganize include directivesMatthias Braun2017-02-17
* irarch: Leave setup to backendsMatthias Braun2017-01-28
| | | | | | Let backends perform the irarch setup in lower_for_target(). Frontends do not need to explicitely enable it any longer and there is no need to keep the settings around in backend_params.
* Reorganize va_arg handlingMatthias Braun2017-01-28
| | | | | | Do not put stuff unnecessarily into backend params. - Pass lower_va_arg directly as a parameter to lower_builtins - Pass stack_param align directly to be_default_lower_va_arg
* irmode: Do not initialize mode_PMatthias Braun2016-12-30
| | | | | Just guessing a 32bit mode is not too helpful. Leave the mode_P initialization to the backend or frontend.
* be: Simply use '&${ARCH}_class_reg_req_${CLASS}' instead of ↵Christoph Mallon2016-12-05
| | | | '${ARCH}_reg_classes[CLASS_${ARCH}_${CLASS}].class_req'.
* amd64, arm, ia32, sparc, template: Use '{name}'.Christoph Mallon2016-10-31
* be: Handle emitting jump labels centrally in BE_EMITF().Christoph Mallon2016-10-31
* be: Factor out (almost) common code in ${ARCH}_emitf() into the macro ↵Christoph Mallon2016-10-19
| | | | | | | BE_EMITF(). This save quite a bit of code duplication. Also the code drifted apart in the different backends, which this macro prevents now.
* be: Remove the unused function 'be_get_type_unsigned_long_long()' as well as ↵Christoph Mallon2016-10-13
| | | | 'type_unsigned_long_long' from 'struct backend_params'.
* be: Remove the unused function 'be_get_type_long_long()' as well as ↵Christoph Mallon2016-10-13
| | | | 'type_long_long' from 'struct backend_params'.
* be: Add and use 'be_mode_needs_gp_reg()'.Christoph Mallon2016-09-18
* be: Do not put mode in node titleMatthias Braun2016-04-24
| | | | | The node is usually less interesting for backend nodes, so it is enough to have it in the detail attributes.
* TEMPLATE: Use bool arg for be_new_IncSPMatthias Braun2016-04-04
* be: Rename bearch_${ARCH}{.c,_t.h} -> ${ARCH}_bearch{.c,_t.h} for consistency.Christoph Mallon2016-03-15
* be: Let the backends themselves tell, whether they are experimental.Christoph Mallon2016-03-14
* Rename get_type_{size|alignment}_bytes() to get_type{size|alignment}()Matthias Braun2016-02-14
* be: Merge common emitter code to query jump targets and block scheduleMatthias Braun2016-02-08
* beemitter: Move helper function to beemithlpMatthias Braun2016-02-08
| | | | | Only keep the basics necessary to emit text lines in beemitter.[ch] and move all the other convenience stuff to beemithlp.[ch].
* lower_calls: Make aggregate type return lowering more flexible.Matthias Braun2016-01-30
| | | | This allows us to properly implement the OS X calling conventions.
* be: gen_xxx_new_nodes.c.inl -> gen_xxx_new_nodes.cMatthias Braun2016-01-03
* be: Use rbitset_alloca() instead of rbitset_malloc()Matthias Braun2015-12-30
| | | | This plugs a memory leak.
* be: Provide a default implementation for the hook 'is_valid_clobber()'.Christoph Mallon2015-12-07
| | | | | In particular remove the unnecessary 'sparc_is_valid_clobber()'. The wrapper 'be_is_valid_clobber()' already handles 'memory' and 'cc'.
* Always include irop_t.h inside libfirmMatthias Braun2015-09-10
* Move ir_node struct from irtypes.h to irnode_t.h, remove irtypes.h, cleanupMatthias Braun2015-09-10
* be: Pass the input requirements directly to the constructors of nodes, which ↵Christoph Mallon2015-09-08
| | | | have a variable number of arguments.
* be: Do not explicitly set $default_attr_type.Christoph Mallon2015-08-19
| | | | The generator chooses the right default automatically.
* be: Use one common function to copy the node attributes in the backend.Christoph Mallon2015-08-19
| | | | | All backends had identical implementations. Now rematerialization works out of the box for new backends.
* be: Reintroduce be_Start.Christoph Mallon2015-08-09
| | | | | All backends have similar empty Start nodes, which just provide registers. So having one generic backend Start node to share some infrastructure is sensible.
* template: Add a function prologue like all other backends do.Christoph Mallon2015-08-07
* template: Correct typo s/TEMLPATE/TEMPLATE.Christoph Mallon2015-08-07
* be: Remove duplicate dumps of register allocation information.Christoph Mallon2015-08-05
| | | | It is now done generically in dump_backend_info_hook().
* bescripts: Automatically determine the mode of nodes by default and add the ↵Christoph Mallon2015-08-04
| | | | option "first" to use the mode of the first output requirement.
* bescripts: Merge the attributes 'custominit' and 'init_attr' into the new ↵Christoph Mallon2015-08-04
| | | | attribute 'init'.
* amd64, arm, ia32, sparc, template: Small cleanup in node specifications.Christoph Mallon2015-08-04
* be: Add and use be_new_Proj().Christoph Mallon2015-07-28
| | | | | It is like new_r_Proj(), but the mode is determined automatically from the out requirement of the predecessor. This probably resolves some mode mismatches in untested code paths -- AMD64 backend and SPARC hard float, I'm looking at you!
* be: Introduce a constraint for execution outputs.Christoph Mallon2015-07-27