Michael Beck [Wed, 24 Oct 2007 21:47:45 +0000 (21:47 +0000)]
add Op(Phi(const, const, ...), Phi(const, const, ...)) optimization
[r16340]
Michael Beck [Wed, 24 Oct 2007 21:46:48 +0000 (21:46 +0000)]
add test for new phi optimization
[r16339]
Michael Beck [Wed, 24 Oct 2007 21:26:44 +0000 (21:26 +0000)]
add more comments
[r16338]
Michael Beck [Wed, 24 Oct 2007 20:48:48 +0000 (20:48 +0000)]
same fix again on another place
[r16337]
Sebastian Hack [Wed, 24 Oct 2007 20:48:46 +0000 (20:48 +0000)]
A more general color priorization.
[r16336]
Michael Beck [Wed, 24 Oct 2007 20:44:41 +0000 (20:44 +0000)]
check the opcode again after an optimize_node()
[r16335]
Christoph Mallon [Wed, 24 Oct 2007 18:33:44 +0000 (18:33 +0000)]
Emit the "t" suffix for f96 numbers in the ia32 backend.
[r16334]
Christoph Mallon [Wed, 24 Oct 2007 18:09:32 +0000 (18:09 +0000)]
Pad the names of fehler*.c with leading zeros for sorting.
[r16333]
Christoph Mallon [Wed, 24 Oct 2007 17:30:11 +0000 (17:30 +0000)]
Give direct visual feedback by printing "FAILED" when a test in makereport failed.
[r16332]
Michael Beck [Wed, 24 Oct 2007 15:16:29 +0000 (15:16 +0000)]
long double x87 modes don't support AM
[r16331]
Michael Beck [Wed, 24 Oct 2007 14:29:11 +0000 (14:29 +0000)]
improved fehler101.c. Now with printing!
[r16330]
Michael Beck [Wed, 24 Oct 2007 14:20:17 +0000 (14:20 +0000)]
cannot output suffix for long double store
[r16329]
Michael Beck [Wed, 24 Oct 2007 14:18:17 +0000 (14:18 +0000)]
beware: when lowering Phi's, put them into the block list (needed for prt_block)
[r16328]
Christoph Mallon [Wed, 24 Oct 2007 13:49:02 +0000 (13:49 +0000)]
Restore the AM fold behavior of prior to r16324. It is faster. *shrug*
[r16327]
Christoph Mallon [Wed, 24 Oct 2007 11:29:09 +0000 (11:29 +0000)]
Actually implement what r16324 promised.
[r16326]
Sebastian Hack [Wed, 24 Oct 2007 10:40:42 +0000 (10:40 +0000)]
Prioritize chunks with constraint nodes more
[r16325]
Christoph Mallon [Tue, 23 Oct 2007 22:01:26 +0000 (22:01 +0000)]
Improve the AM folding heuristics: Do not fold AM if at least one of the AM operands is not used except for this address calculation.
[r16324]
Christoph Mallon [Tue, 23 Oct 2007 21:52:34 +0000 (21:52 +0000)]
Remove dead code, remove pointless marking of memory nodes, explain a bit what happens.
[r16323]
Christoph Mallon [Tue, 23 Oct 2007 21:49:34 +0000 (21:49 +0000)]
Remove the unused function mode_needs_gp_reg().
[r16322]
Christoph Mallon [Tue, 23 Oct 2007 21:48:57 +0000 (21:48 +0000)]
Clarify a comment.
[r16321]
Christoph Mallon [Tue, 23 Oct 2007 21:26:43 +0000 (21:26 +0000)]
- Allow an arbitrary (for arbitrary < 32) number of in_rBAR and !in_rBAR constraints per node.
- Remove !in and arch_register_req_type_should_be_different_from_all.
- Specify the output constraints of ia32 ShlD and ShrD more accurately as in_r1 !in_r2 !in_r3 instead of !in. This usually saves the fourth register.
[r16320]
Christoph Mallon [Tue, 23 Oct 2007 20:49:24 +0000 (20:49 +0000)]
Do no parse {,!}out_rBAR constraints anymore. The constraint handler does not handle them anyway.
[r16319]
Michael Beck [Tue, 23 Oct 2007 19:14:56 +0000 (19:14 +0000)]
Add a main to let it compile.
[r16318]
Michael Beck [Tue, 23 Oct 2007 14:32:20 +0000 (14:32 +0000)]
added initialization to suppress (wrong) warning
[r16317]
Michael Beck [Tue, 23 Oct 2007 14:23:03 +0000 (14:23 +0000)]
removed useless calculation of dominance, debug mask settings
[r16316]
Michael Beck [Tue, 23 Oct 2007 14:20:22 +0000 (14:20 +0000)]
even better fix for r16314
[r16315]
Michael Beck [Tue, 23 Oct 2007 14:13:00 +0000 (14:13 +0000)]
initialize variable to supress (wrong) warning
[r16314]
Michael Beck [Tue, 23 Oct 2007 13:32:09 +0000 (13:32 +0000)]
temporary disable "manual" spill due to probles with uninitialised reloaded_value
[r16313]
Michael Beck [Tue, 23 Oct 2007 10:39:54 +0000 (10:39 +0000)]
now even buggier
[r16312]
Michael Beck [Tue, 23 Oct 2007 10:36:06 +0000 (10:36 +0000)]
wrong spill ?
[r16311]
Michael Beck [Mon, 22 Oct 2007 22:56:57 +0000 (22:56 +0000)]
add CopyB support to get_op_fragile_mem()
used new pn_Generic_M_regular constant
[r16310]
Michael Beck [Mon, 22 Oct 2007 22:35:08 +0000 (22:35 +0000)]
Let dfs() discover only memory nodes
[r16309]
Michael Beck [Mon, 22 Oct 2007 16:54:53 +0000 (16:54 +0000)]
- check if a Load has a regular exec before chenging it
- killed a shortcut: does NOT work if the loop contains Stores to the same address
- BugFix: ldst_info_t must be added to the Load node, NOT to the block
[r16308]
Michael Beck [Mon, 22 Oct 2007 14:14:22 +0000 (14:14 +0000)]
beware of loops without Phis
[r16307]
Michael Beck [Mon, 22 Oct 2007 13:56:58 +0000 (13:56 +0000)]
fixed the loop optimization
[r16306]
Michael Beck [Mon, 22 Oct 2007 13:24:37 +0000 (13:24 +0000)]
heur5 not available yet ;-)
[r16305]
Sebastian Hack [Mon, 22 Oct 2007 13:13:07 +0000 (13:13 +0000)]
Some heur4 tweaks
ILP coalescing should work again
changed include of config.h to firm_config.h since WITH_ILP is defined there
[r16304]
Matthias Braun [Mon, 22 Oct 2007 12:24:28 +0000 (12:24 +0000)]
some more code I played around with lately
[r16303]
Michael Beck [Mon, 22 Oct 2007 12:25:03 +0000 (12:25 +0000)]
transform the macro block header
[r16302]
Michael Beck [Mon, 22 Oct 2007 12:09:25 +0000 (12:09 +0000)]
preliminary version of moving Loads out of loops
[r16301]
Michael Beck [Mon, 22 Oct 2007 12:02:35 +0000 (12:02 +0000)]
add a short cut to the disabiguator: pointer and non-pointer are not allowed to alias
[r16300]
Michael Beck [Mon, 22 Oct 2007 10:13:36 +0000 (10:13 +0000)]
Treat Start as a forking op in remove_critical edges. This will place a block here if needed (before loops for instance)
[r16298]
Matthias Braun [Sun, 21 Oct 2007 15:36:59 +0000 (15:36 +0000)]
don't aggressively fold some nodes when we know it will increase register pressure
[r16297]
Matthias Braun [Sun, 21 Oct 2007 14:19:49 +0000 (14:19 +0000)]
fix address mode calculation: we can not eat immediates for shifted values (well we could shift them, but that is not implemented yet and isn't even possible for symconsts...)
[r16296]
Matthias Braun [Sun, 21 Oct 2007 13:09:00 +0000 (13:09 +0000)]
- fix a conceptual bug in peephole, we need a callback before and after
replacing a node to correctly update liveness info. This should fix the big
bad twolf
- added some debugging statements to bepeephole
[r16295]
Christoph Mallon [Sat, 20 Oct 2007 08:02:20 +0000 (08:02 +0000)]
Fix r16293.
[r16294]
Christoph Mallon [Fri, 19 Oct 2007 20:29:30 +0000 (20:29 +0000)]
Make the emit sequences of ShrD and ShlD probably more correct by copying first and shifting after that.
[r16293]
Christoph Mallon [Fri, 19 Oct 2007 20:19:00 +0000 (20:19 +0000)]
Undo r16291.
Requested by: beck
[r16292]
Michael Beck [Fri, 19 Oct 2007 20:06:27 +0000 (20:06 +0000)]
use get_irn_ne() instead of (direct) call to get_irn_link()
[r16291]
Christoph Mallon [Fri, 19 Oct 2007 19:38:19 +0000 (19:38 +0000)]
Generalise (and fix) sorting of operands by constness and index.
[r16290]
Michael Beck [Fri, 19 Oct 2007 19:27:53 +0000 (19:27 +0000)]
Fixed broken indentation of r16286
[r16289]
Michael Beck [Fri, 19 Oct 2007 19:24:40 +0000 (19:24 +0000)]
fixed typos
use *_nodes_block() instead of *_irn_n(n, -1)
[r16288]
Christoph Mallon [Fri, 19 Oct 2007 19:23:43 +0000 (19:23 +0000)]
Now even correct! (see r16284)
[r16287]
Michael Beck [Fri, 19 Oct 2007 19:08:39 +0000 (19:08 +0000)]
Make the ir_loop link field permanent. The other behavior is unexpected.
[r16286]
Matthias Braun [Fri, 19 Oct 2007 18:13:10 +0000 (18:13 +0000)]
fix Cmp input normalisation
[r16285]
Christoph Mallon [Fri, 19 Oct 2007 18:00:44 +0000 (18:00 +0000)]
A do-while loop is nicer than a for loop here.
[r16284]
Christoph Mallon [Fri, 19 Oct 2007 17:57:27 +0000 (17:57 +0000)]
Fix fehler99: always skip at least one node and check for (Copy)Keeps when looking for the insertion point of a CopyKeep. Also do not check for Projs, they are not scheduled anymore.
[r16283]
Christoph Mallon [Fri, 19 Oct 2007 17:24:18 +0000 (17:24 +0000)]
fehler99: defective copykeep when ShrD has to identical inputs for lo and hi.
[r16282]
Michael Beck [Fri, 19 Oct 2007 14:31:24 +0000 (14:31 +0000)]
add missing initialization
[r16280]
Michael Beck [Fri, 19 Oct 2007 14:29:12 +0000 (14:29 +0000)]
fixed warnings in release mode
[r16279]
Michael Beck [Fri, 19 Oct 2007 14:24:15 +0000 (14:24 +0000)]
to shut up gcc in release mode
[r16278]
Michael Beck [Fri, 19 Oct 2007 14:17:38 +0000 (14:17 +0000)]
renamed type_state to ir_type_state
[r16277]
Michael Beck [Fri, 19 Oct 2007 14:04:05 +0000 (14:04 +0000)]
restrict some Cmp related optimizations to integer types
create a new Proj at the end of transform_node_Proj_Cmp(): this will lead to a fixpoint optimizations of Cmp's
no need to use_new_r_Const(): they are always placed in the startblock
[r16276]
Matthias Braun [Fri, 19 Oct 2007 12:48:46 +0000 (12:48 +0000)]
A+X == A -> X==0 optimisations
[r16275]
Matthias Braun [Fri, 19 Oct 2007 12:34:07 +0000 (12:34 +0000)]
new testcases
[r16274]
Matthias Braun [Fri, 19 Oct 2007 11:10:56 +0000 (11:10 +0000)]
- improve set transformation
- create SetMems
- support 3 operand IMul
- started writing a new incsp->store to push peephole phase
[r16273]
Matthias Braun [Fri, 19 Oct 2007 11:09:34 +0000 (11:09 +0000)]
make it possible to specify custom mode for set lowering
[r16272]
Christoph Mallon [Fri, 19 Oct 2007 09:00:03 +0000 (09:00 +0000)]
Fix fehler 98. clarify comments.
[r16271]
Christoph Mallon [Fri, 19 Oct 2007 08:54:02 +0000 (08:54 +0000)]
make fehler98.c behave properly.
[r16270]
Christoph Mallon [Fri, 19 Oct 2007 08:50:13 +0000 (08:50 +0000)]
fehler98: gen_Cmp tries to build test with two immediates.
[r16269]
Michael Beck [Thu, 18 Oct 2007 15:46:32 +0000 (15:46 +0000)]
fixed release build
[r16266]
Michael Beck [Thu, 18 Oct 2007 15:42:51 +0000 (15:42 +0000)]
fixed release build with assertions enabled
[r16265]
Christoph Mallon [Thu, 18 Oct 2007 12:06:10 +0000 (12:06 +0000)]
Small cleanup.
[r16264]
Christoph Mallon [Thu, 18 Oct 2007 10:03:03 +0000 (10:03 +0000)]
Restructure gen_Cmp() so it does not use ia32_use_source_address_mode() anymore, but only match_arguments().
[r16263]
Michael Beck [Wed, 17 Oct 2007 22:33:53 +0000 (22:33 +0000)]
fixed declaration of dbg
[r16262]
Michael Beck [Wed, 17 Oct 2007 22:08:33 +0000 (22:08 +0000)]
fixed _is_Phi()
[r16261]
Matthias Braun [Wed, 17 Oct 2007 22:01:57 +0000 (22:01 +0000)]
add inline versions of is_Phi and is_Proj
[r16260]
Michael Beck [Wed, 17 Oct 2007 19:52:21 +0000 (19:52 +0000)]
removed an if, should not happen on this place
[r16259]
Matthias Braun [Wed, 17 Oct 2007 19:43:32 +0000 (19:43 +0000)]
unsafe mode for float to int conversion
[r16258]
Matthias Braun [Wed, 17 Oct 2007 19:05:27 +0000 (19:05 +0000)]
improve float->int conversion
[r16257]
Matthias Braun [Wed, 17 Oct 2007 17:09:19 +0000 (17:09 +0000)]
- Add a generic_attribute field to irops
- extend backend generator to support custom irop data
- cleanup and streamline transform code in ia32
- Improve handling of AddAM vs. Add used in AM expressions
[r16254]
Matthias Braun [Wed, 17 Oct 2007 15:25:28 +0000 (15:25 +0000)]
some interesting testcases to look at
[r16253]
Michael Beck [Wed, 17 Oct 2007 15:21:20 +0000 (15:21 +0000)]
extended version
[r16252]
Michael Beck [Wed, 17 Oct 2007 14:08:43 +0000 (14:08 +0000)]
fixed two warnings
[r16251]
Michael Beck [Wed, 17 Oct 2007 13:50:03 +0000 (13:50 +0000)]
Refactored attributes:
- remove pn_code from general ones
- add attribute types for condcode and copyb
- more more attributes into constructors
[r16250]
Michael Beck [Wed, 17 Oct 2007 13:48:56 +0000 (13:48 +0000)]
float->unsigned 64bit does not work yet: panic
[r16249]
Michael Beck [Wed, 17 Oct 2007 13:43:13 +0000 (13:43 +0000)]
- renamed a lot of parameters to more sensible names
- hopefully fixed Shrs with unsigned values (and did not break other cases)
[r16248]
Matthias Braun [Wed, 17 Oct 2007 13:25:03 +0000 (13:25 +0000)]
fehler97
[r16247]
Michael Beck [Wed, 17 Oct 2007 12:50:56 +0000 (12:50 +0000)]
add some comments, DBG_OPT call
[r16246]
Michael Beck [Wed, 17 Oct 2007 12:39:29 +0000 (12:39 +0000)]
enable Minus(Iu) const folding
[r16245]
Christoph Mallon [Wed, 17 Oct 2007 12:07:06 +0000 (12:07 +0000)]
In the RA constraint handler insert no copy when an operand is used more than once with constraints, but the constraints are equal (this is not optimal, but better than before and solves the test x, x case on x86).
[r16244]
Matthias Braun [Tue, 16 Oct 2007 20:58:01 +0000 (20:58 +0000)]
no need to test mode of other argument in use_source_address_mode
[r16241]
Christoph Mallon [Tue, 16 Oct 2007 20:57:43 +0000 (20:57 +0000)]
Decompose Mul(x, 2**b + 2**a) into y = x + x << (b - a), y << a instead of y = x << a, y + y << (b - a). This is beneficial for address mode generation.
[r16240]
Matthias Braun [Tue, 16 Oct 2007 18:49:50 +0000 (18:49 +0000)]
another interesing case
[r16239]
Matthias Braun [Tue, 16 Oct 2007 18:49:29 +0000 (18:49 +0000)]
fix AM matcher seeing add x, x as value with scale 2
[r16238]
Michael Beck [Tue, 16 Oct 2007 14:38:36 +0000 (14:38 +0000)]
unused functions removed
[r16236]
Michael Beck [Tue, 16 Oct 2007 14:06:53 +0000 (14:06 +0000)]
removed unused got_lea attribute
[r16235]
Michael Beck [Tue, 16 Oct 2007 13:55:59 +0000 (13:55 +0000)]
- removed identical is_downconv()
- used new ia32_skip_downconv()
- add ia32_prefix to global function
[r16234]
Matthias Braun [Tue, 16 Oct 2007 13:50:08 +0000 (13:50 +0000)]
0 constants don't modify flags anymore
[r16233]
Michael Beck [Tue, 16 Oct 2007 12:52:42 +0000 (12:52 +0000)]
- removed identical is_downconv()
- used new ia32_skip_downconv()
- add ia32_prefix to global function
[r16232]