libfirm
13 years agoallow backend to specify endianess, rewrite bitfield emitter to handle little and...
Matthias Braun [Mon, 6 Sep 2010 13:05:07 +0000 (13:05 +0000)]
allow backend to specify endianess, rewrite bitfield emitter to handle little and big-endian byte order

[r27974]

13 years agosparc: first attempt at using delay slots
Matthias Braun [Mon, 6 Sep 2010 13:05:06 +0000 (13:05 +0000)]
sparc: first attempt at using delay slots

[r27973]

13 years agosparc: use arch_dependent mul/div lowering
Matthias Braun [Mon, 6 Sep 2010 13:05:06 +0000 (13:05 +0000)]
sparc: use arch_dependent mul/div lowering

[r27972]

13 years agosparc: fix bitopcc bugs
Matthias Braun [Mon, 6 Sep 2010 13:05:05 +0000 (13:05 +0000)]
sparc: fix bitopcc bugs

[r27971]

13 years agorename heights_t to ir_heights_t, improve docu a bit, rename to heights.[ch]
Matthias Braun [Mon, 6 Sep 2010 13:05:04 +0000 (13:05 +0000)]
rename heights_t to ir_heights_t, improve docu a bit, rename to heights.[ch]

[r27970]

13 years agosparc: fix abort when matching addressmode Adds
Matthias Braun [Mon, 6 Sep 2010 13:05:04 +0000 (13:05 +0000)]
sparc: fix abort when matching addressmode Adds

[r27969]

13 years agoremove Abs node, backends can match the abs patterns themselfes
Matthias Braun [Mon, 6 Sep 2010 13:05:03 +0000 (13:05 +0000)]
remove Abs node, backends can match the abs patterns themselfes

[r27968]

13 years agoremove useless code from iropt
Matthias Braun [Mon, 6 Sep 2010 13:05:01 +0000 (13:05 +0000)]
remove useless code from iropt

[r27967]

13 years agosparc: new patterns to match comparisons of bitoperations with zero
Matthias Braun [Thu, 19 Aug 2010 15:56:42 +0000 (15:56 +0000)]
sparc: new patterns to match comparisons of bitoperations with zero

[r27959]

13 years agosparc: implement mode-neutral matching; support immediates for Cmp node
Matthias Braun [Thu, 19 Aug 2010 15:56:41 +0000 (15:56 +0000)]
sparc: implement mode-neutral matching; support immediates for Cmp node

[r27958]

13 years agosparc: preliminary SwitchJmp implementation
Matthias Braun [Thu, 19 Aug 2010 15:56:41 +0000 (15:56 +0000)]
sparc: preliminary SwitchJmp implementation

[r27957]

13 years agosparc: mostly implement reg+reg address mode
Matthias Braun [Thu, 19 Aug 2010 15:56:40 +0000 (15:56 +0000)]
sparc: mostly implement reg+reg address mode

[r27956]

13 years agosparc: specifying ins in constructor variants makes no sense
Matthias Braun [Thu, 19 Aug 2010 15:56:39 +0000 (15:56 +0000)]
sparc: specifying ins in constructor variants makes no sense

[r27955]

13 years agoa normalisation which shrinks values on the right shift operand because of modulo_shi...
Matthias Braun [Thu, 19 Aug 2010 15:56:38 +0000 (15:56 +0000)]
a normalisation which shrinks values on the right shift operand because of modulo_shift behaviour. As a nice side-effect this simplifies the Rotl matcher

[r27954]

13 years agoonly construct Rotl if backend supports it
Matthias Braun [Thu, 19 Aug 2010 15:56:36 +0000 (15:56 +0000)]
only construct Rotl if backend supports it

[r27953]

13 years agosparc: implement div instructions correctly
Matthias Braun [Thu, 19 Aug 2010 15:56:36 +0000 (15:56 +0000)]
sparc: implement div instructions correctly

[r27952]

13 years agosparc: rewrite address mode matching, we now use offsets for load/store nodes and...
Matthias Braun [Thu, 19 Aug 2010 15:56:35 +0000 (15:56 +0000)]
sparc: rewrite address mode matching, we now use offsets for load/store nodes and need less special nodes

[r27951]

13 years agosparc: remove entity_sign, gas/elf doesn't support it anyway
Matthias Braun [Thu, 19 Aug 2010 15:56:34 +0000 (15:56 +0000)]
sparc: remove entity_sign, gas/elf doesn't support it anyway

[r27950]

13 years agosparc: no need for is_load_store attribute anymore
Matthias Braun [Thu, 19 Aug 2010 15:56:34 +0000 (15:56 +0000)]
sparc: no need for is_load_store attribute anymore

[r27949]

13 years agonew localopt: Cmp(Eor(x,y),0) <=> Cmp(x,y) for the Equals and NotEquals case
Matthias Braun [Thu, 19 Aug 2010 15:56:33 +0000 (15:56 +0000)]
new localopt: Cmp(Eor(x,y),0) <=> Cmp(x,y) for the Equals and NotEquals case

[r27948]

13 years agouse operands_are_normalized when permuting Not operations on Xor inputs to avoid...
Matthias Braun [Thu, 19 Aug 2010 15:56:32 +0000 (15:56 +0000)]
use operands_are_normalized when permuting Not operations on Xor inputs to avoid commutative normalisation turning it back

[r27947]

13 years agoia32: fix bug introduced when improving doz matcher, cleanup Mux matcher
Matthias Braun [Wed, 18 Aug 2010 21:50:00 +0000 (21:50 +0000)]
ia32: fix bug introduced when improving doz matcher, cleanup Mux matcher

[r27946]

13 years agoreally keep mux intact if KEEP_MUX is enabled; cleanup and improve some Mux optimisat...
Matthias Braun [Wed, 18 Aug 2010 21:49:59 +0000 (21:49 +0000)]
really keep mux intact if KEEP_MUX is enabled; cleanup and improve some Mux optimisation rules

[r27945]

13 years agoremove lots of unnecessary and dangerous current_ir_graph usages
Matthias Braun [Wed, 18 Aug 2010 21:49:58 +0000 (21:49 +0000)]
remove lots of unnecessary and dangerous current_ir_graph usages

[r27944]

13 years agobackend is responsible for defining what lowering operations need to be performed...
Matthias Braun [Wed, 18 Aug 2010 13:37:11 +0000 (13:37 +0000)]
backend is responsible for defining what lowering operations need to be performed => so the logical thing is to use a backend callback for performing lowerings

[r27938]

13 years agomake if-conversion and archdep optimisations get their information directly from...
Matthias Braun [Wed, 18 Aug 2010 13:37:10 +0000 (13:37 +0000)]
make if-conversion and archdep optimisations get their information directly from the backend without frontends needing special code to transfer these infos

[r27937]

13 years agodoz pattern matcher missed some cases
Matthias Braun [Wed, 18 Aug 2010 13:37:09 +0000 (13:37 +0000)]
doz pattern matcher missed some cases

[r27936]

13 years agoidentifiers starting with _ are reserved; remove this bad practice
Matthias Braun [Thu, 12 Aug 2010 12:16:48 +0000 (12:16 +0000)]
identifiers starting with _ are reserved; remove this bad practice

[r27924]

13 years agodocument the new behaviour of set_entity_owner which has been there for a while now
Matthias Braun [Thu, 12 Aug 2010 12:16:45 +0000 (12:16 +0000)]
document the new behaviour of set_entity_owner which has been there for a while now

[r27923]

13 years agoAdapt to coding conventions.
Sebastian Buchwald [Mon, 9 Aug 2010 19:58:56 +0000 (19:58 +0000)]
Adapt to coding conventions.

[r27919]

13 years agosparc: redo and improve sparc immediate handling (low-part after sethi is now omitted...
Matthias Braun [Mon, 9 Aug 2010 14:53:12 +0000 (14:53 +0000)]
sparc: redo and improve sparc immediate handling (low-part after sethi is now omitted if it is 0)

[r27918]

13 years agosparc: mark Mul nodes as rematerializable
Matthias Braun [Mon, 9 Aug 2010 14:53:11 +0000 (14:53 +0000)]
sparc: mark Mul nodes as rematerializable

[r27917]

13 years agouse sub_immediate in case of add a,0x1000
Matthias Braun [Mon, 9 Aug 2010 14:53:11 +0000 (14:53 +0000)]
use sub_immediate in case of add a,0x1000

[r27916]

13 years agosparc: matching rules for andn and orn
Matthias Braun [Mon, 9 Aug 2010 14:53:10 +0000 (14:53 +0000)]
sparc: matching rules for andn and orn

[r27915]

13 years agosparc: pattern to match xnor
Matthias Braun [Mon, 9 Aug 2010 14:53:09 +0000 (14:53 +0000)]
sparc: pattern to match xnor

[r27914]

13 years agoimproved normalisation of not+eor nodes
Matthias Braun [Mon, 9 Aug 2010 14:53:08 +0000 (14:53 +0000)]
improved normalisation of not+eor nodes

[r27913]

13 years agosparc: No need for Minus, Not, Nop nodes. Implement with the real instructions Sub...
Matthias Braun [Mon, 9 Aug 2010 14:53:07 +0000 (14:53 +0000)]
sparc: No need for Minus, Not, Nop nodes. Implement with the real instructions Sub, XNor and zero register

[r27912]

13 years agosparc: use %g0 for 0 constants
Matthias Braun [Mon, 9 Aug 2010 14:53:06 +0000 (14:53 +0000)]
sparc: use %g0 for 0 constants

[r27911]

13 years agoextend register allocation verifier to check alignment and wide constraints
Matthias Braun [Mon, 9 Aug 2010 14:53:05 +0000 (14:53 +0000)]
extend register allocation verifier to check alignment and wide constraints

[r27910]

13 years agoallow ignore registers as inputs of Phis; cleanup bessadestr.c
Matthias Braun [Mon, 9 Aug 2010 14:53:04 +0000 (14:53 +0000)]
allow ignore registers as inputs of Phis; cleanup bessadestr.c

[r27909]

13 years agoadapt daemelspiller to wide register values
Matthias Braun [Mon, 9 Aug 2010 14:53:03 +0000 (14:53 +0000)]
adapt daemelspiller to wide register values

[r27908]

13 years agocorrectly use wide values in automatic phi register requirement determination
Matthias Braun [Mon, 9 Aug 2010 14:53:02 +0000 (14:53 +0000)]
correctly use wide values in automatic phi register requirement determination

[r27907]

13 years agoreformat and cleanup benode.c
Matthias Braun [Mon, 9 Aug 2010 14:53:02 +0000 (14:53 +0000)]
reformat and cleanup benode.c

[r27906]

13 years agocleanup spill code; assert that no wide values are used yet
Matthias Braun [Mon, 9 Aug 2010 14:53:01 +0000 (14:53 +0000)]
cleanup spill code; assert that no wide values are used yet

[r27905]

13 years agofix beabi not setting width in register constraint
Matthias Braun [Mon, 9 Aug 2010 14:52:59 +0000 (14:52 +0000)]
fix beabi not setting width in register constraint

[r27904]

13 years agodump double and aligned register requirements
Matthias Braun [Mon, 9 Aug 2010 14:52:59 +0000 (14:52 +0000)]
dump double and aligned register requirements

[r27903]

13 years agosparc: implement all floating point operations in single, double and quad mode
Matthias Braun [Mon, 9 Aug 2010 14:52:58 +0000 (14:52 +0000)]
sparc: implement all floating point operations in single, double and quad mode

[r27902]

13 years agosparc: remove old code which was only valid for old beabi handling
Matthias Braun [Mon, 9 Aug 2010 14:52:57 +0000 (14:52 +0000)]
sparc: remove old code which was only valid for old beabi handling

[r27901]

13 years agocleanup, simplify hungarian algorithm implementation
Matthias Braun [Mon, 9 Aug 2010 14:52:47 +0000 (14:52 +0000)]
cleanup, simplify hungarian algorithm implementation

[r27900]

13 years agoMostly reverted r27894, removed usage of unreachable.
Michael Beck [Sat, 7 Aug 2010 14:47:29 +0000 (14:47 +0000)]
Mostly reverted r27894, removed usage of unreachable.

The gain from using an extra Unreachable is rather low, plus the noreturn call must probably be keeped anyway, so revrt it again

[r27898]

13 years agoAdd an Unreachable node.
Michael Beck [Sat, 7 Aug 2010 10:07:51 +0000 (10:07 +0000)]
Add an Unreachable node.

Unreachable nodes mark unreachable control flow (after noreturn calls). They
"eat" the memory, saving the two keeps used before.

Works mostly yet (scheduler issues warning about not scheduled Unreachable's)

[r27894]

13 years agoC99 feature removed.
Michael Beck [Sat, 7 Aug 2010 09:07:46 +0000 (09:07 +0000)]
C99 feature removed.

[r27892]

13 years agoPanic in case of an invalid solution.
Sebastian Buchwald [Fri, 6 Aug 2010 19:01:11 +0000 (19:01 +0000)]
Panic in case of an invalid solution.

[r27891]

13 years agoFixed warning.
Sebastian Buchwald [Fri, 6 Aug 2010 19:01:10 +0000 (19:01 +0000)]
Fixed warning.

[r27890]

13 years agoIgnore kaps directory.
Sebastian Buchwald [Fri, 6 Aug 2010 17:55:59 +0000 (17:55 +0000)]
Ignore kaps directory.

[r27887]

13 years agoRemove redundant reg_req from SPARC nodes with constructors.
Christoph Mallon [Fri, 6 Aug 2010 17:14:53 +0000 (17:14 +0000)]
Remove redundant reg_req from SPARC nodes with constructors.

[r27886]

13 years agoCorrect and clean up gen_Abs() for SPARC: The Sub was the wrong way round.
Christoph Mallon [Fri, 6 Aug 2010 17:14:52 +0000 (17:14 +0000)]
Correct and clean up gen_Abs() for SPARC: The Sub was the wrong way round.

[r27885]

13 years agoIndent.
Christoph Mallon [Fri, 6 Aug 2010 17:14:51 +0000 (17:14 +0000)]
Indent.

[r27884]

13 years agoRemove redundant bitset_clear_all() before bitset_copy().
Christoph Mallon [Fri, 6 Aug 2010 17:14:50 +0000 (17:14 +0000)]
Remove redundant bitset_clear_all() before bitset_copy().

[r27883]

13 years agoDirectly remember the pointer instead of an index to reconstruct the pointer.
Christoph Mallon [Fri, 6 Aug 2010 17:14:49 +0000 (17:14 +0000)]
Directly remember the pointer instead of an index to reconstruct the pointer.

[r27882]

13 years agoRemove a loop invariant summand from finding a minimum.
Christoph Mallon [Fri, 6 Aug 2010 17:14:46 +0000 (17:14 +0000)]
Remove a loop invariant summand from finding a minimum.

[r27881]

13 years agofix for my last commit
Matthias Braun [Fri, 6 Aug 2010 08:43:29 +0000 (08:43 +0000)]
fix for my last commit

[r27879]

13 years agoRemove VISITED in link-field hackery. Cleanups.
Matthias Braun [Fri, 6 Aug 2010 08:42:18 +0000 (08:42 +0000)]
Remove VISITED in link-field hackery. Cleanups.

[r27878]

13 years agoFixed comment.
Sebastian Buchwald [Fri, 6 Aug 2010 08:08:04 +0000 (08:08 +0000)]
Fixed comment.

[r27877]

13 years agomake sure the width field is always initialized to 1 for normal constraints
Matthias Braun [Thu, 5 Aug 2010 19:04:58 +0000 (19:04 +0000)]
make sure the width field is always initialized to 1 for normal constraints

[r27875]

13 years agobackend: created a (not so nice) macro to iterate over all values defined by an instr...
Matthias Braun [Thu, 5 Aug 2010 19:04:57 +0000 (19:04 +0000)]
backend: created a (not so nice) macro to iterate over all values defined by an instruction. This avoids lots of small-scale code duplication in the spillers and the prefallocator

[r27874]

13 years agofix lower_mode_b relying on current_ir_graph being equal to the passed irg; make...
Matthias Braun [Thu, 5 Aug 2010 19:04:55 +0000 (19:04 +0000)]
fix lower_mode_b relying on current_ir_graph being equal to the passed irg; make lower_mode_b invalidate outedges if something changes

[r27873]

13 years agoNow bipartite matching can be used for pre-coloring restricted cliques after a perm.
Thomas Bersch [Wed, 4 Aug 2010 14:55:18 +0000 (14:55 +0000)]
Now bipartite matching can be used for pre-coloring restricted cliques after a perm.

[r27871]

13 years agofix some cases where doubleword lowering didn't use the unsigned type for the lower...
Matthias Braun [Mon, 2 Aug 2010 14:35:03 +0000 (14:35 +0000)]
fix some cases where doubleword lowering didn't use the unsigned type for the lower word

[r27868]

13 years agoDuplicate GetEIP when transforming.
Christoph Mallon [Mon, 2 Aug 2010 14:03:50 +0000 (14:03 +0000)]
Duplicate GetEIP when transforming.

[r27865]

13 years agosimplify doubleword lowering: we have a type for each mode by default nowadays
Matthias Braun [Mon, 2 Aug 2010 11:50:40 +0000 (11:50 +0000)]
simplify doubleword lowering: we have a type for each mode by default nowadays

[r27861]

13 years agoremove odd mode->index, index->mode API for statistics, ir_prog already had such...
Matthias Braun [Mon, 2 Aug 2010 11:50:39 +0000 (11:50 +0000)]
remove odd mode->index, index->mode API for statistics, ir_prog already had such an API

[r27860]

13 years agoDisable timer.
Sebastian Buchwald [Fri, 30 Jul 2010 14:33:54 +0000 (14:33 +0000)]
Disable timer.

[r27859]

13 years agoUnify output format.
Sebastian Buchwald [Fri, 30 Jul 2010 14:22:20 +0000 (14:22 +0000)]
Unify output format.

[r27857]

13 years agobring back Carry and Borrow (firm_decomp apparently uses it) and add a note that...
Matthias Braun [Fri, 30 Jul 2010 08:28:45 +0000 (08:28 +0000)]
bring back Carry and Borrow (firm_decomp apparently uses it) and add a note that the backends don't support them

[r27849]

13 years agocan not -> cannot.
Sebastian Buchwald [Thu, 29 Jul 2010 13:37:31 +0000 (13:37 +0000)]
can not -> cannot.

[r27848]

13 years agoallow nodes with more inputs in prefallocator (some sparc keeps have more than 32...
Matthias Braun [Thu, 29 Jul 2010 11:36:39 +0000 (11:36 +0000)]
allow nodes with more inputs in prefallocator (some sparc keeps have more than 32 inputs)

[r27847]

13 years agouse new double wide register requirements; implement calling convention for sparc...
Matthias Braun [Thu, 29 Jul 2010 09:27:59 +0000 (09:27 +0000)]
use new double wide register requirements; implement calling convention for sparc 64bit floats

[r27846]

13 years agosparc: remove uninterpreted (and often wrongly used) MATCH_SIZE_NEUTRAL match flag...
Matthias Braun [Thu, 29 Jul 2010 09:27:58 +0000 (09:27 +0000)]
sparc: remove uninterpreted (and often wrongly used) MATCH_SIZE_NEUTRAL match flag for now

[r27845]

13 years agoavoid unnecessary #define in public headers
Matthias Braun [Wed, 28 Jul 2010 14:56:55 +0000 (14:56 +0000)]
avoid unnecessary #define in public headers

[r27837]

13 years agono unnecessary and cryptic abreviations: rename vrfy to verify
Matthias Braun [Wed, 28 Jul 2010 14:56:54 +0000 (14:56 +0000)]
no unnecessary and cryptic abreviations: rename vrfy to verify

[r27836]

13 years agofix doxygen warnings
Matthias Braun [Wed, 28 Jul 2010 10:52:15 +0000 (10:52 +0000)]
fix doxygen warnings

[r27835]

13 years agoautomatically generate most declarations for node getters+setters and is_XXX functions
Matthias Braun [Wed, 28 Jul 2010 10:52:14 +0000 (10:52 +0000)]
automatically generate most declarations for node getters+setters and is_XXX functions

[r27834]

13 years agoreplace is_no_Block() with !is_Block()
Matthias Braun [Wed, 28 Jul 2010 10:52:13 +0000 (10:52 +0000)]
replace is_no_Block() with !is_Block()

[r27833]

13 years agoautomatically generate code to allocate the 'frag_arr' for fragile nodes; improve...
Matthias Braun [Wed, 28 Jul 2010 10:52:12 +0000 (10:52 +0000)]
automatically generate code to allocate the 'frag_arr' for fragile nodes; improve readability of autogenerated code

[r27832]

13 years agoremove unused/unsupported Carry and Borrow nodes
Matthias Braun [Wed, 28 Jul 2010 08:35:08 +0000 (08:35 +0000)]
remove unused/unsupported Carry and Borrow nodes

[r27831]

13 years agoautomatically generate opcode declarations from ir_spec
Matthias Braun [Wed, 28 Jul 2010 08:35:08 +0000 (08:35 +0000)]
automatically generate opcode declarations from ir_spec

[r27830]

13 years agoarm: we don't use the generic be_Call anymore, no need for an emitter
Matthias Braun [Wed, 28 Jul 2010 08:35:07 +0000 (08:35 +0000)]
arm: we don't use the generic be_Call anymore, no need for an emitter

[r27829]

13 years agodraft for register width specifications
Matthias Braun [Tue, 27 Jul 2010 17:57:59 +0000 (17:57 +0000)]
draft for register width specifications

[r27828]

13 years agoimplement floatingpoint compares
Matthias Braun [Tue, 27 Jul 2010 17:57:58 +0000 (17:57 +0000)]
implement floatingpoint compares

[r27827]

13 years agosparc: cleanup register classes, remove some unused code, try to cleanup Div
Matthias Braun [Tue, 27 Jul 2010 17:57:57 +0000 (17:57 +0000)]
sparc: cleanup register classes, remove some unused code, try to cleanup Div

[r27826]

13 years agofirst implementation of floatingpoint arithmetic operations
Matthias Braun [Tue, 27 Jul 2010 17:57:57 +0000 (17:57 +0000)]
first implementation of floatingpoint arithmetic operations

[r27825]

13 years agouse custom spillslot coalescer so int->float and float->int gets proper spillslots
Matthias Braun [Tue, 27 Jul 2010 17:57:56 +0000 (17:57 +0000)]
use custom spillslot coalescer so int->float and float->int gets proper spillslots

[r27824]

13 years agofix Ldf/Stf emitter
Matthias Braun [Tue, 27 Jul 2010 17:57:56 +0000 (17:57 +0000)]
fix Ldf/Stf emitter

[r27823]

13 years agofix warnings
Matthias Braun [Tue, 27 Jul 2010 17:57:55 +0000 (17:57 +0000)]
fix warnings

[r27822]

13 years agobeflags: transform modifies_flags property into a callback, use default rematerialisa...
Matthias Braun [Tue, 27 Jul 2010 17:57:55 +0000 (17:57 +0000)]
beflags: transform modifies_flags property into a callback, use default rematerialisation callback in backends where necessary

[r27821]

13 years agoreplace psets with arrays to make the compiler more predictable across runs (and...
Matthias Braun [Tue, 27 Jul 2010 09:31:51 +0000 (09:31 +0000)]
replace psets with arrays to make the compiler more predictable across runs (and a little bit more efficient)

[r27820]

13 years agono need to pass environment stuff aroudn that can be retireved from irg
Matthias Braun [Tue, 27 Jul 2010 09:31:50 +0000 (09:31 +0000)]
no need to pass environment stuff aroudn that can be retireved from irg

[r27819]

13 years agobeflags: move be_Keep logic out of is_modify_flags function where it didn't really...
Matthias Braun [Tue, 27 Jul 2010 06:44:46 +0000 (06:44 +0000)]
beflags: move be_Keep logic out of is_modify_flags function where it didn't really belong

[r27818]

13 years agoarm: remove unused code, using tst to avoid cmp,0 not necessary
Matthias Braun [Mon, 26 Jul 2010 17:42:48 +0000 (17:42 +0000)]
arm: remove unused code, using tst to avoid cmp,0 not necessary

[r27817]