Commit graph

172 commits

Author SHA1 Message Date
Quentin Carbonneaux
97b58def96 mark diag() as non-returning 2016-03-25 10:56:35 -04:00
Quentin Carbonneaux
a67ffa423c check for overflow in ssa.c (abi fuzzer) 2016-03-22 12:16:09 -04:00
Quentin Carbonneaux
337b10f6ed store register usage of ret instructions (abi fuzz)
So far I was ignoring register uses of return instructions
and it was working because at most one register could be
returned.  Now that more complex returns are supported it
is necessary to keep track of the registers used by
returns.

The abi fuzzer triggered an assertion failure in the
register allocator with the following IL:

        R1 =l load [%t16]
        R3 =l load [8 + %t16]
        ret

The regalloc would use R1 for %t16, and then a (nice)
assertion realized the inconsistent state because R1
could only be def'd by an assignment to %t16.
2016-03-22 11:53:57 -04:00
Quentin Carbonneaux
b19b9a27a0 handle padding correctly in types 2016-03-18 15:15:02 -04:00
Quentin Carbonneaux
240cfcd5cd support return of structs 2016-03-17 13:41:12 -04:00
Quentin Carbonneaux
ce7fd0cb49 add unsigned division and remainder 2016-03-16 11:30:57 -04:00
Quentin Carbonneaux
db6f7ad72d add shift instructions 2016-03-16 11:18:28 -04:00
Quentin Carbonneaux
567c18398f refine comment of OpDesc.sflag 2016-03-16 11:00:49 -04:00
Quentin Carbonneaux
4d41a720d0 use opdesc[] in isel.c 2016-03-09 11:50:44 -05:00
Quentin Carbonneaux
8645a5ae23 add more info in opdesc[] 2016-03-08 16:47:34 -05:00
Quentin Carbonneaux
cebec4dd47 add new cast instruction 2016-03-07 13:46:44 -05:00
Quentin Carbonneaux
8a87b3f1ff make bshas() inline 2016-03-04 15:44:50 -05:00
Quentin Carbonneaux
a5dffd6c24 bump up NIns, should not hurt us 2016-03-04 10:31:59 -05:00
Quentin Carbonneaux
4467769253 get rid of hard coded NBlk 2016-03-04 10:30:13 -05:00
Quentin Carbonneaux
169411a220 add some (easy) instructions 2016-03-03 17:40:48 -05:00
Ori Bernstein
032c3eafdd Make err nonstatic. 2016-02-28 23:39:43 -08:00
Ori Bernstein
542d89bcd5 Add zero fill data. 2016-02-28 20:39:41 -08:00
Ori Bernstein
8a9b0c5513 Add strings as 'b "foo"' 2016-02-28 20:36:01 -08:00
Ori Bernstein
50c5af4290 Allow trailing and ',' and references in data.
This change adds support for two things:

		data $foo {l 123,}

	Which allows easier machine generation of data
	statements. It also adds the ability to parse
	and emit references in data declarations.
2016-02-28 20:16:20 -08:00
Ori Bernstein
7f738bb025 More standard/better error message formatting. 2016-02-28 19:38:11 -08:00
Quentin Carbonneaux
abc2557839 remove BITS constant 2016-02-27 13:43:12 -05:00
Quentin Carbonneaux
f6d5193cac use a new bits type for bitmaps 2016-02-27 13:41:57 -05:00
Quentin Carbonneaux
c56148e7f9 get rid of Bits 2016-02-26 16:01:52 -05:00
Quentin Carbonneaux
5bff7146fd add cheapo static assert 2016-02-26 13:33:27 -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
beda73643f add some bitset functions 2016-02-25 14:38:40 -05:00
Quentin Carbonneaux
abf4d3f719 fix tight assertion in MEM() 2016-02-24 14:32:16 -05:00
Quentin Carbonneaux
82d5bbc0bc patch return, might not work 2016-02-23 10:54:56 -05:00
Quentin Carbonneaux
97cfdc309e stop using OXxx1 and use new OLoad 2016-02-18 19:40:40 -05:00
Quentin Carbonneaux
0debea30d4 completely hide xmm15 2016-02-15 16:34:16 -05:00
Quentin Carbonneaux
16e430935d collect and emit fp constants 2016-02-15 16:34:16 -05:00
Quentin Carbonneaux
8e88861807 new syntax for float literals 2016-02-12 14:20:12 -05:00
Quentin Carbonneaux
b498f24b8f use ICX{np,p} to clarify enum definitions 2016-02-12 10:27:05 -05:00
Quentin Carbonneaux
53a5d7de2a fp cmp fixes (highly untested) 2016-02-11 16:12:11 -05:00
Quentin Carbonneaux
b4f80258a1 comment in enum Op 2016-02-04 14:00:26 -05:00
Quentin Carbonneaux
470810f307 add more spaces 2016-02-03 16:00:45 -05:00
Quentin Carbonneaux
69b6b9290f use macros for OXxx and OXxx1
This will make sure the debugger uses the
correct name when printing an operation.
2016-01-28 16:33:54 -05:00
Quentin Carbonneaux
be088e724f remove constant NReg 2016-01-28 15:12:46 -05:00
Quentin Carbonneaux
417255cff1 get rid of the Ty enum 2015-12-27 14:13:00 -05:00
Quentin Carbonneaux
2aea575f12 get rid of TYS() macro 2015-12-25 17:47:24 -05:00
Quentin Carbonneaux
1dc0089684 wip on instruction selection 2015-12-08 13:39:30 -05:00
Quentin Carbonneaux
0791dd026e sanitize constants representation 2015-12-08 10:39:06 -05:00
Quentin Carbonneaux
ecebb6f48e update liveness to work with fp 2015-11-30 12:53:30 -05:00
Quentin Carbonneaux
af1a5079fd change the wide bit to a class number 2015-11-30 11:44:37 -05:00
Quentin Carbonneaux
5097cf1d42 stores becomes storeh 2015-11-30 10:18:03 -05:00
Quentin Carbonneaux
3302e31534 add sse regs 2015-11-27 11:25:23 -05:00
Quentin Carbonneaux
bbaf4fd61b start memopt(), still buggy 2015-11-19 21:38:35 -05:00
Quentin Carbonneaux
0aa9e83211 add initial version of copy elimination 2015-11-13 15:22:58 -05:00
Quentin Carbonneaux
291c39565f store the use locations for temporaries 2015-11-13 13:12:22 -05:00