Commit graph

688 commits

Author SHA1 Message Date
Quentin Carbonneaux
f74f18b13e make the comment greppable 2016-02-26 16:13:44 -05:00
Quentin Carbonneaux
eb26f0cded use memset to zero a bitset 2016-02-26 16:05:01 -05:00
Quentin Carbonneaux
c56148e7f9 get rid of Bits 2016-02-26 16:01:52 -05:00
Quentin Carbonneaux
a9a723e008 also catch stderr 2016-02-26 15:54:43 -05:00
Quentin Carbonneaux
ef5ae515a0 add regression testing script 2016-02-26 15:46:15 -05:00
Quentin Carbonneaux
e91a7788e0 bug in liveout()
Because of the bsclr() call, liveout was not actually
making the union correctly.  Instead of performing an
union, it now fully sets the bitset passed as parameter.
2016-02-26 15:40:19 -05:00
Quentin Carbonneaux
956154e06e dirty fix bogus bsiter() 2016-02-26 13:55:13 -05:00
Quentin Carbonneaux
06c2e75a76 compile everything 2016-02-26 13:46:32 -05:00
Quentin Carbonneaux
b487620955 use bitset in rega.c (broken) 2016-02-26 13:46:16 -05:00
Quentin Carbonneaux
5bff7146fd add cheapo static assert 2016-02-26 13:33:27 -05:00
Quentin Carbonneaux
6275cd6e06 use bitset in spill.c 2016-02-26 13:33:09 -05:00
Quentin Carbonneaux
744cf01321 convert ssa.c to bitsets 2016-02-26 12:51:43 -05:00
Quentin Carbonneaux
ad5dae18f4 move dumpts() into util, add bsequal() 2016-02-26 11:38:57 -05:00
Quentin Carbonneaux
987b3def33 start conversion to dynamic bitsets 2016-02-26 10:31:21 -05:00
Quentin Carbonneaux
3e104e532b a little code compaction 2016-02-25 15:05:40 -05:00
Quentin Carbonneaux
beda73643f add some bitset functions 2016-02-25 14:38:40 -05:00
Quentin Carbonneaux
649fb739fd remove FP notes 2016-02-25 13:26:47 -05:00
Quentin Carbonneaux
ec8fcc977c add details in the abi doc 2016-02-24 19:11:48 -05:00
Quentin Carbonneaux
381dfc1fc6 create new doc directory 2016-02-24 19:11:19 -05:00
Quentin Carbonneaux
abf4d3f719 fix tight assertion in MEM() 2016-02-24 14:32:16 -05:00
Quentin Carbonneaux
eff3371966 tentative big args support 2016-02-24 12:53:57 -05:00
Quentin Carbonneaux
01a8102c3d use default use/def counts in newtmp()
This is paliative, before I check that all use
counts in isel.c are correct.
2016-02-24 12:53:08 -05:00
Quentin Carbonneaux
ebaec26046 do not print null offsets 2016-02-24 12:37:21 -05:00
Quentin Carbonneaux
eae16f56eb fix swapped operands on emitcopy() call 2016-02-24 12:10:37 -05:00
Quentin Carbonneaux
0705d509dd prepare for big structs passing code 2016-02-24 12:10:00 -05:00
Quentin Carbonneaux
08f2c03e30 support memory class arguemnts 2016-02-24 10:57:08 -05:00
Quentin Carbonneaux
43d3f241ba oh oh, subs are not folded! 2016-02-24 10:56:36 -05:00
Quentin Carbonneaux
e10b91fcc9 simply use memset to 0 stuff 2016-02-24 09:50:03 -05:00
Quentin Carbonneaux
72988e6aa8 oops, phi nodes rewrite for fast locals was trashed
The phi fixing mechanism can use emit(), so we need to
set curi before performing the rewrite.  Otherwise, we are
writing at random places in the instruction buffer (not so
bad because it is bounds checked), but then we loose the
instructions written (bad)!
2016-02-24 09:40:18 -05:00
Quentin Carbonneaux
400a8c70f9 add fun example, does not compile yet 2016-02-23 18:28:28 -05:00
Quentin Carbonneaux
47304da835 cosmetics in isel.c 2016-02-23 12:19:30 -05:00
Quentin Carbonneaux
187c9991b5 print new jump instructions 2016-02-23 11:27:46 -05:00
Quentin Carbonneaux
e301a51457 fix uninitialized variable in selpar() 2016-02-23 11:27:23 -05:00
Quentin Carbonneaux
82d5bbc0bc patch return, might not work 2016-02-23 10:54:56 -05:00
Quentin Carbonneaux
b75c211dbf fix buggy name changes in isel 2016-02-22 15:14:28 -05:00
Quentin Carbonneaux
b7b430e578 simplify emit table 2016-02-22 14:07:05 -05:00
Quentin Carbonneaux
2ee3d2ec2e cosmetics 2016-02-22 14:00:21 -05:00
Quentin Carbonneaux
e400e177b6 use isstore() in parser 2016-02-22 13:55:18 -05:00
Quentin Carbonneaux
4be29d4030 do not spill dead phis
Regalloc will be able to handle these spurious phis,
however, some other spurious dead instructions can be
emitted.  It would be better to get rid of them upfront;
maybe by modifying isel, or by inserting a proper dce
pass.  An example of that undesirable behavior is
exposed below.

@l1
	%foo =w ...
@l2
	%dead =w phi @l1 %foo, ...
2016-02-21 21:22:05 -05:00
Quentin Carbonneaux
8041947672 complete fp support for small structs
There is an oddity/bug though, we use OStorel to store possibly
fp registers.  Gas does not complain, but this is wrong.  The
fix is probably to have a simple OStore, like in the OLoad case.
2016-02-21 18:29:25 -05:00
Quentin Carbonneaux
420bf4cc8b genius or idiot? 2016-02-21 11:35:53 -05:00
Quentin Carbonneaux
3983c206f9 add lexing sugar for backward compatibility 2016-02-19 14:17:22 -05:00
Quentin Carbonneaux
97cfdc309e stop using OXxx1 and use new OLoad 2016-02-18 19:40:40 -05:00
Quentin Carbonneaux
7922b259d9 use classes in arg classification 2016-02-18 18:56:56 -05:00
Quentin Carbonneaux
a74291382c complete argcls (pretty ugly...) 2016-02-18 18:33:09 -05:00
Quentin Carbonneaux
cabad82d72 start completing the fp abi 2016-02-18 18:13:57 -05:00
Quentin Carbonneaux
70d73e2d6e fix dumb bug found by Andrew Chambers 2016-02-16 22:17:18 -05:00
Quentin Carbonneaux
7d203e7f99 better variable name in selcall() 2016-02-15 22:15:11 -05:00
Quentin Carbonneaux
6dc1cdead0 always print RACall with 3 digits 2016-02-15 22:12:54 -05:00
Quentin Carbonneaux
2cfccce680 use arguments in mandelbrot test 2016-02-15 22:06:29 -05:00