Commit graph

2213 commits

Author SHA1 Message Date
Dale Weiler
a798859a7a Added isnan compiler builtin, documented what each compiler builtin does as well. 2013-03-09 09:20:54 +00:00
Dale Weiler
d4785ad6e3 fix comment 2013-03-09 08:59:12 +00:00
Dale Weiler
965f8b9041 Uh wrong file. 2013-03-09 08:57:37 +00:00
Dale Weiler
cbeac3e5f2 Implemented smart intrinsic / builtin system. When you use trivial math functions like "pow", if they don't exist as a builtin, the compiler will implement its own versions, likewise, if a compiler builtin depends on a function that exists, it will use it, likewise if it doesn't it will implement it. If you explicitally use __builtin_ (prefixed) versions, the compiler again will select the best option it can, be it a combination of both builtins and compiler builtins, all compiler builtins, OR, all builtins (most performant). 2013-03-09 08:53:39 +00:00
Dale Weiler
9bb586fb5a Add floor to tests defs.qh 2013-03-09 05:46:08 +00:00
Dale Weiler
d8d78f61a7 Implemented "reverse" enum attribute, e.g enum : reverse { A, B, C, D } -> A,B,C,D = 3,2,1,0 2013-03-09 05:07:14 +00:00
Dale Weiler
73c085a461 Fix operator precedence, closes #101 2013-03-09 04:25:02 +00:00
Dale Weiler
662612d66f Better diagnostic when "floor" cannot be found. 2013-03-08 09:23:35 +00:00
Dale Weiler
f19adcd1b3 Implemented __builtin_mod, and % operator. Added floor builtin to the standalone executor. Mod works so long as the compiler can find a suitable definition of "float floor(float)", otherwise it prints a diagnostic and gives up (original id1 Quake had floor so we can depend on it). 2013-03-08 09:17:54 +00:00
Dale Weiler
b971ddec3a Implemented concept of enumeration attributes (can be further extended, but currently only "flag" is implemented as an attribute). An enumeration with a flag attribute will act as a "flagged enumeration", one that automatically handles exponentiation of the constants defined inside it, i.e enum : flag { A, B, C }, A,B,C will equal 2, 4, 8. 2013-03-08 08:01:45 +00:00
Dale Weiler
479f3b9343 Implemented __builtin_exp 2013-03-08 03:46:25 +00:00
Dale Weiler
12340a6bd0 Actually generate an ast_call for __builtin_pow for the ** operator, otherwise the operator yeilds a ast_function, making "a ** b" not work, but since it's a function, allows **(a, b). Also added tests for exponentiation operator. 2013-03-07 23:05:40 +00:00
Dale Weiler
0367a6175d Add some ice 2013-03-07 22:52:03 +00:00
Dale Weiler
db229b6f94 Make ** RIGHT associative 2013-03-07 22:14:04 +00:00
Dale Weiler
bd54fe03b9 Get rid of the bullshit log stuff 2013-03-07 22:09:14 +00:00
Dale Weiler
f2380a2faa They see me roll 'n, casting, so far they just think I'm implicit casting dirty, implicity casting dirty .. 2013-03-07 21:38:46 +00:00
Dale Weiler
d3c7b6fb39 Implement exponentiation operator ** as well as __builtin_pow (used for exponentiation operator). Use of exponentiation operator with constants results in const folded (precomputed at compile time exponentiation), otherwise runtime exponentiation with some clever loops (slow!). 2013-03-07 21:31:19 +00:00
Dale Weiler
f59d557dce Update specification.tex 2013-03-07 10:21:29 -05:00
Dale Weiler
bedfee1fae Update specification.tex 2013-03-07 10:19:00 -05:00
Dale Weiler
bdbfc85243 Update specification.tex 2013-03-07 09:39:41 -05:00
Dale Weiler
2146e018f1 Update specification.tex 2013-03-07 00:39:26 -05:00
Wolfgang Bumiller
a32f59b256 hopefully fix an off-by-1 vararg copy issue 2013-02-26 16:39:28 +01:00
Dale Weiler
9f06e0e017 Print the number for the test itself in the test-suite. The log10 can be improved. 2013-02-25 10:01:36 +00:00
Dale Weiler
b1d1aabbdd Remove debug printf 2013-02-25 08:52:56 +00:00
Dale Weiler
aebab8b68a Push definitions when -O0 2013-02-25 08:52:17 +00:00
Wolfgang Bumiller
d27c06ea7f Merge branch 'master' into cooking 2013-02-20 23:08:58 +01:00
Wolfgang Bumiller
80184b0d80 fix: don't mess up multiline macros in files ending with \r\n 2013-02-20 23:08:50 +01:00
Wolfgang Bumiller
aa27249b88 update to .gitignore 2013-02-13 10:55:32 +01:00
Wolfgang Bumiller
3593a1b6b8 Merge branch 'master' into cooking 2013-02-12 14:31:27 +01:00
Dale Weiler
3b923a0183 fix 2013-02-11 18:02:42 +00:00
Dale Weiler
3b630ec5dc Less duplication 2013-02-11 17:51:23 +00:00
Dale Weiler
c7e3e3e306 Fix fucking mingw32 shit. 2013-02-11 17:49:17 +00:00
Wolfgang Bumiller
1dfd375738 include: guard the actual inclusion with ftepp->output_on so that include inside #if 0 doesn't happen 2013-02-11 12:13:27 +01:00
Wolfgang Bumiller
3e3b8993aa Lifetime analysis: Don't go through the blocks as a graph, instead, go through only the list.
The difference in code is rather small, but it's much faster.
2013-02-11 11:39:44 +01:00
Dale Weiler
0b154d69e7 BOOM 2013-02-10 13:59:24 +00:00
Dale Weiler
c8959a2452 BOOM 2013-02-10 13:57:22 +00:00
Dale Weiler
b5ead871ef Consider cppchecks (performance) warnings. 2013-02-10 13:47:50 +00:00
Dale Weiler
5acde18ef1 Sigh 2013-02-10 02:09:12 +00:00
Dale Weiler
b0c6dc5ab2 Fix mem leak. 2013-02-10 02:08:17 +00:00
Dale Weiler
e4554892b0 Oops 2013-02-08 19:07:12 +00:00
Dale Weiler
e4075916f0 depend rule for $(OBJ_P) PAK utility. 2013-02-08 16:45:05 +00:00
Dale Weiler
fb8fb9f0f7 These includes are not required 2013-02-08 16:43:31 +00:00
Dale Weiler
ac8f510dac Added $(PAK) to Makefile for clean rule. 2013-02-08 16:42:43 +00:00
Dale Weiler
02230ca992 endian swap on FOURCC for "PACK" on BE systems. 2013-02-08 16:40:47 +00:00
Dale Weiler
533b2144c5 Fix some memleaks. 2013-02-08 16:39:14 +00:00
Dale Weiler
eabb92f7b4 A command line interface for the PAK utility, made it a seperate build target too. 2013-02-08 16:32:15 +00:00
Dale Weiler
a568d43487 Implemented __VA_COUNT__ 2013-02-08 12:30:17 +00:00
Dale Weiler
945aba6e10 Make it compile as C++ code AGAIN 2013-02-08 12:20:48 +00:00
Dale Weiler
09a1a37554 Actually add fs.c 2013-02-08 12:08:24 +00:00
Dale Weiler
8d59d7029d Cleanup cargocult directory and file specific things, to fs.c (renamed file.c which also contains directory handling stuff). Also cleaned up some stuff, and added proper end comments to conditional inclusion stuff. 2013-02-08 12:06:59 +00:00