Commit Graph

827 Commits

Author SHA1 Message Date
drmortalwombat a91112c05c Pointer in loop optimizations 2023-02-19 18:07:25 +01:00
drmortalwombat 347c336b09 Optimize X vs. Y usage for indexed increment 2023-02-15 22:03:04 +01:00
drmortalwombat 23091a0536 Combining consecutive pointer arithmetic 2023-02-12 20:09:02 +01:00
drmortalwombat 71a071fea4 Loop direction inversion for simple counts 2023-02-11 10:36:46 +01:00
drmortalwombat acbd70a84f Fix XY register propagation for incomming fast parameters 2023-02-10 18:10:41 +01:00
drmortalwombat 5852ca5aea Shortcut conditional branch blocks in intermediate code 2023-02-08 08:51:58 +01:00
drmortalwombat 115b34626e More XY register cross block optimizations 2023-02-07 16:37:41 +01:00
drmortalwombat ff26dffada Optimize alternate XY cross block register use 2023-02-05 12:30:18 +01:00
drmortalwombat 932a65be8c Optimize cross block XY register usage 2023-02-02 20:10:35 +01:00
drmortalwombat d15fd8a451 Fix over eager cross block zp move 2023-01-30 19:27:09 +01:00
drmortalwombat e624011415 Fix crash when compiling address of structs in constants 2023-01-29 10:17:36 +01:00
drmortalwombat dbd0fb6a56 Fix propagate of compare result over potential dual entry empty basic block 2023-01-22 15:18:07 +01:00
drmortalwombat 946b1fe53d Add mouse library 2023-01-22 11:01:03 +01:00
drmortalwombat 0fae7abd72 Optimize simple inline assembler code 2023-01-21 22:41:13 +01:00
drmortalwombat 677de2508b Shuffle temp moves to avoid duplicates 2023-01-21 08:42:22 +01:00
drmortalwombat 16faec8627 Fix loop exit condition broken by Y register lifting 2023-01-19 20:28:02 +01:00
drmortalwombat 862b8aaf06 bump version number 2023-01-19 19:33:38 +01:00
drmortalwombat 29611ec3db Fix striped constant pointer initializer 2023-01-19 19:03:02 +01:00
drmortalwombat 0b30258f80 Dataflow optimizations 2023-01-17 22:42:02 +01:00
drmortalwombat 2f4b2790f6 Register condition block bypassing 2023-01-17 08:02:36 +01:00
drmortalwombat 02db5b5eb1 Static call graph analysis for function arguments 2023-01-15 18:38:18 +01:00
drmortalwombat 761206d009 Propagation of unsigend attribute accross function arguments 2023-01-13 20:14:16 +01:00
drmortalwombat fdb051bd2b Fix right + left shift optimization when shifting from long to int 2023-01-13 15:41:21 +01:00
drmortalwombat 7c11a5347c Fix over eager move of volatile stores 2023-01-13 13:33:34 +01:00
drmortalwombat a9d3673f4e Optimize left shift by four from byte to int 2023-01-12 22:57:19 +01:00
drmortalwombat d6fcb5f9ca Use CPU register A for single byte parameter and returns 2023-01-10 20:41:55 +01:00
drmortalwombat 9a64bcc8b6 Fix select operator for string constants 2023-01-08 22:29:13 +01:00
drmortalwombat b04f05b575 Optimize signed divide by two 2023-01-08 19:17:25 +01:00
drmortalwombat 50d3c843b4 Use X instead of A when lda/sta sequence inside TAXA range 2023-01-08 10:56:14 +01:00
drmortalwombat ffe07a6a3c Optimize multiplication with short negative constants 2023-01-07 13:41:59 +01:00
drmortalwombat c105c3b778 Fix error in final code size reduction step 2023-01-03 21:48:50 +01:00
drmortalwombat 59d77504c8 Fix compile time load of const striped array data 2023-01-01 18:34:52 +01:00
drmortalwombat 57449e3f4a Optimize adds to ors when possible 2022-12-30 20:20:49 +01:00
drmortalwombat 425aae8f72 Fix pointer register loss while forwarding index 2022-12-30 15:55:03 +01:00
drmortalwombat 1a06102668 Shortcut identical consecutive conditional branches 2022-12-25 22:14:12 +01:00
drmortalwombat 5696691a19 Bump version number 2022-12-23 22:50:13 +01:00
drmortalwombat 9daf4fa621 Some more cross block pointer forwarding 2022-12-18 20:33:52 +01:00
drmortalwombat cdd7a15a42 Fix half pointer cross block move 2022-12-18 10:02:16 +01:00
drmortalwombat e202f8e5b5 Bump version number 2022-12-13 20:16:11 +01:00
drmortalwombat ac0f4d232e Fix .d64 layout 2022-12-13 08:49:05 +01:00
drmortalwombat de3c7415b3 Fix error in recursive macro expansion 2022-12-13 08:18:25 +01:00
drmortalwombat 0055911491 Add overlay support 2022-12-10 17:15:25 +01:00
drmortalwombat 0aa9ca0c70 Bump Version number 2022-12-10 16:15:04 +01:00
drmortalwombat 5bb21b3b0a Fix block allocator for .d64 generator 2022-12-09 15:45:40 +01:00
drmortalwombat 50ae45a533 Bump version number 2022-12-06 19:07:59 +01:00
drmortalwombat 3edd541750 Fix over eager forwarding of global addresses across loop boundaries 2022-12-06 18:29:37 +01:00
drmortalwombat f56fb9e505 Fix crash in optimizer when declaring too many unused local variables 2022-12-06 15:55:31 +01:00
drmortalwombat 8b631d564e Add autotest for striped arrays 2022-12-03 13:28:03 +01:00
drmortalwombat 9c6b745993 Fix self destruct of load store forwarding dict 2022-11-30 22:47:13 +01:00
drmortalwombat ec31b845b8 Fix type check of pointers derived by address of operator 2022-11-30 15:07:06 +01:00
drmortalwombat bfe6311ca4 Add assignment of structs from and to striped arrays 2022-11-29 18:11:42 +01:00
drmortalwombat 02e4d4bd1b Optimize indexing in loops 2022-11-26 14:12:13 +01:00
drmortalwombat bc058a1c80 Known zero register value propagation 2022-11-25 22:31:23 +01:00
drmortalwombat ebe9476bcc Fix strided array unsigned struct member assignment 2022-11-24 18:15:16 +01:00
drmortalwombat 688fd92a6b Bump version number 2022-11-22 20:25:03 +01:00
drmortalwombat a5a27c039e Fix __asume declaration in loop causing loss of temp chain 2022-11-20 17:35:31 +01:00
drmortalwombat c6d0f44364 Fix unsigend int to/from float conversion 2022-11-19 10:58:44 +01:00
drmortalwombat 42b4f46356 Add striped array memory layout 2022-11-16 08:59:02 +01:00
drmortalwombat 6283f5f9e6 Improve accu train movement 2022-11-09 18:06:33 +01:00
drmortalwombat 54955b6b5f Bump version number 2022-10-29 10:59:20 +02:00
drmortalwombat 93943f8f87 Fix pre decrement operator l value return type 2022-10-25 17:12:36 +02:00
drmortalwombat 44bd9cf595 Fix const enum type check 2022-10-25 11:02:00 +02:00
drmortalwombat 04624f208c Fix multiply add 2n + 1 2022-10-23 17:02:34 +02:00
drmortalwombat 0aee1ad452 Code size reduction for jmp to rts 2022-10-22 18:21:45 +02:00
drmortalwombat 7271106397 bump version number 2022-10-17 08:00:35 +02:00
drmortalwombat ef7b391da0 Fix 16 bit indexed ops lost high byte offset 2022-10-16 16:05:55 +02:00
drmortalwombat e52e554fec Add warning for missing return statement 2022-10-16 14:06:27 +02:00
drmortalwombat 4ff762b711 Add warning/error for unassigned variable access 2022-10-16 13:33:20 +02:00
drmortalwombat 8ee390a532 Fix negative array access in native code path propagation 2022-10-16 10:49:51 +02:00
drmortalwombat 77010a0ab2 Fix propagation of volatile memory reads in loops 2022-10-15 17:44:49 +02:00
drmortalwombat 53e4019ecd Fix 2D array access 2022-10-15 10:50:28 +02:00
drmortalwombat 634b7914ea Fix movement of LDY/STY pair that conflicts with Z flag usage 2022-10-13 22:43:50 +02:00
drmortalwombat 4a49456a57 Improve accu train movement 2022-10-09 13:44:59 +02:00
drmortalwombat bd32b38027 Preserve X or Y cross conditions 2022-10-08 11:34:42 +02:00
drmortalwombat 571d60cbb7 Bump version number 2022-10-03 19:41:22 +02:00
drmortalwombat 4daecdc51a Optimize select statement 2022-10-03 18:56:17 +02:00
drmortalwombat 3e59f47748 Loop index optimizations 2022-10-03 10:50:24 +02:00
drmortalwombat 27a227501a Bump version number 2022-09-29 15:40:22 +02:00
drmortalwombat 0c633d114c Added late stage loop optimization for indexed offset addressing 2022-09-29 15:32:00 +02:00
drmortalwombat 3907068014 Fix over eager down movement of xy load store 2022-09-25 16:41:21 +02:00
drmortalwombat 121f0476e1 Bump version number 2022-09-24 14:31:09 +02:00
drmortalwombat 03be76f7f5 Fix postcondition in false branch of integer range estimation after signed less than comparison 2022-09-22 21:57:37 +02:00
drmortalwombat 259abf4c4b Improve compiler speed 2022-09-20 15:01:47 +02:00
drmortalwombat 01365c38b7 Move more invariants out of complex loops 2022-09-18 12:59:01 +02:00
drmortalwombat d1c22573da Bump version number 2022-09-17 23:03:44 +02:00
drmortalwombat 5156055e53 Fix index subtract using wrong direction 2022-09-17 22:57:01 +02:00
drmortalwombat 0835b90219 Optimize negative const offsets in array index 2022-09-17 22:36:17 +02:00
drmortalwombat bd2e198339 Fix loop exit condition z when using xy as loop invariants 2022-09-17 18:33:48 +02:00
drmortalwombat 49a822afbf Fix load int range estimation 2022-09-17 16:15:35 +02:00
drmortalwombat 31dfc702ab Fix lingering branch in idle loop elimination 2022-09-14 08:21:53 +02:00
drmortalwombat 03b5a0655a Bump version number 2022-09-13 22:10:58 +02:00
drmortalwombat 840175d218 More accu train movement 2022-09-13 22:08:02 +02:00
drmortalwombat 38fab44cca Dump cartridge bank usage to map file 2022-09-13 09:55:38 +02:00
drmortalwombat 8c19b1f148 Add heapsize and stacksize pragmas and check in linker 2022-09-12 22:01:58 +02:00
drmortalwombat f0c36c6400 Propagate sign and zero information cross branches 2022-09-11 11:50:57 +02:00
drmortalwombat 612e88456c Bump version number 2022-09-10 16:56:49 +02:00
drmortalwombat e50f3f9814 Fix lenient semicolon handling in parser 2022-09-10 10:05:44 +02:00
drmortalwombat 8287f03f49 Fix shortcut moves violating carry dependencies 2022-09-04 23:05:52 +02:00
drmortalwombat b6a02550f9 Shortcut move from zp to parameter registers 2022-09-04 20:23:06 +02:00
drmortalwombat 9f1205a6cd bump version number 2022-08-27 22:33:34 +02:00
drmortalwombat 6014018f4e Improve XY usage in 16 bit arithmetic 2022-08-27 16:52:27 +02:00
drmortalwombat 5435e1c930 Improve register allocation in complex loops 2022-08-27 15:23:50 +02:00
drmortalwombat da2c0b44ad Bump version number 2022-08-25 18:51:27 +02:00
drmortalwombat 7dd8f4dae3 Fix easyflash placement of auto copied main section 2022-08-25 18:01:58 +02:00
drmortalwombat 4b4c8866dd Optimize multiply of ranges 0..1 2022-08-22 22:00:16 +02:00
drmortalwombat 49330ce101 Extend zero bank crt copy to $3f00 bytes instead of $3800 2022-08-22 14:22:56 +02:00
drmortalwombat eafe13e557 Fix carray propagation in 16bit subtract with low byte const 2022-08-20 14:03:46 +02:00
drmortalwombat 1805e311b8 Add data flow calculation before moving const op ups to fix change of used dst temps in other branch 2022-08-15 22:08:00 +02:00
drmortalwombat 65fc43c123 More multi path constant folding 2022-08-14 17:52:58 +02:00
drmortalwombat 3d23e7f0b1 Combine partialy constant 16bit adds 2022-08-09 16:39:47 +02:00
drmortalwombat b9396542f0 Add page level unrolling 2022-08-07 22:29:33 +02:00
drmortalwombat 4d274f46d7 Fix move of 16 bit shft lower part across carry boundary 2022-08-06 18:45:37 +02:00
drmortalwombat f0deaab394 Add charpad and spritepad import 2022-08-05 18:08:10 +02:00
drmortalwombat ff1377f7bb Optimize simple search loops 2022-07-30 12:36:05 +02:00
drmortalwombat e1a30a25c7 Fix data dependency violation in cross diamond movement 2022-07-26 19:36:10 +02:00
drmortalwombat ca37ebff0b Fix native code peephole optimization with wrong type/mode enum 2022-07-23 14:50:28 +02:00
drmortalwombat f9f2516a65 Move accu eval trains up to connect them 2022-07-23 14:12:11 +02:00
drmortalwombat 864c8ec9a5 Add samples for 32 and 64 sprite multiplexing 2022-07-18 21:22:12 +02:00
drmortalwombat 0742be3204 Improve dataflow analysis 2022-07-16 14:14:02 +02:00
drmortalwombat 460a1b9d84 Bump version number 2022-07-12 20:07:40 +02:00
drmortalwombat 67e3071920 Fix cascaded indexing with byte postincrement 2022-07-12 17:05:23 +02:00
drmortalwombat 4666e7a176 Fix single block loop optimization for function call in loop 2022-07-12 14:50:55 +02:00
drmortalwombat 0bd2ab9e3c Fix global analyzer for global variable arrays of function pointers 2022-07-12 13:08:34 +02:00
drmortalwombat ae07b2cee6 Fix local array of function pointers indexing 2022-07-11 09:15:01 +02:00
drmortalwombat 9df036f4d4 Fix uninitialized variable
Fixed uninitialized variable in intermediate code generation leading to divergent windows and linux builds
2022-07-10 16:09:39 +02:00
drmortalwombat f3197d641c Rebuild intermediate data flow set after final basic block merge 2022-07-10 15:41:51 +02:00
drmortalwombat 5f8797b4be Fix regression with open array index by byte generated by a subtract 2022-07-10 10:07:33 +02:00
drmortalwombat 5d51ea13c5 Improve register allocator 2022-07-08 21:30:22 +02:00
drmortalwombat 931f9e71b9 Optimize bit check to bool conversion 2022-07-03 22:41:41 +02:00
drmortalwombat eb55b2f55d Remove dangling tail recursion rts after jmp 2022-07-03 13:13:32 +02:00
drmortalwombat bcc59a9afb Add intermediat code select operator 2022-07-02 14:53:00 +02:00
drmortalwombat ba661759fb Fix reordering of function calls 2022-06-30 20:28:36 +02:00
drmortalwombat fdcaf54666 Add unroll pragma for simple loops 2022-06-30 09:33:11 +02:00
drmortalwombat 350403121d Move load temporary register moves out of loops 2022-06-26 15:15:59 +02:00
drmortalwombat 5dc63248d8 bump version number 2022-06-22 22:23:20 +02:00
drmortalwombat 2eeef2d71c Fix data dependency lost due to instruction reshuffling 2022-06-22 22:09:32 +02:00
drmortalwombat 002c10ad13 Optimize array access and value propagation across simple loops 2022-06-21 20:57:58 +02:00
drmortalwombat 3cdc9032b4 Fix parameter loss in intermediate code branch forwarding 2022-06-19 18:31:07 +02:00
drmortalwombat 657b79cd3f bump version number 2022-06-19 15:25:09 +02:00
drmortalwombat ecfb206d1c Improve zero page register allocator 2022-06-19 15:20:53 +02:00
drmortalwombat 5000d521a1 Intermediate code generator cleanup 2022-06-18 20:21:41 +02:00
drmortalwombat fc7bb2c377 Optimize parameter handling in loops 2022-06-18 17:32:14 +02:00
drmortalwombat e7332192c0 Fix over eager elimination of byte to word conversion 2022-06-14 22:29:42 +02:00
drmortalwombat d37980e73c Bump version number 2022-06-12 13:46:19 +02:00
drmortalwombat 6e37060c24 More aggressive reverse value range limit forwarding 2022-06-12 13:39:46 +02:00
drmortalwombat 078007c9fe Fix infinite loop during size reduction 2022-06-10 16:36:52 +02:00
drmortalwombat a81f810a63 Size optimizations 2022-06-10 15:56:08 +02:00
drmortalwombat bf6fc7fd0b Add default preprorcessor __STDC__ 2022-06-07 08:24:12 +02:00
drmortalwombat a480e5e922 Fix overeager load forwarding 2022-06-06 22:26:58 +02:00
drmortalwombat beb8d8e6d7 Fix crash on error messages with unnamed objects 2022-06-06 22:06:57 +02:00
drmortalwombat 05ecc267ef Bump version number 2022-06-06 08:57:17 +02:00
drmortalwombat e73c40ba55 Fixed build issue with hscrollshmup on linux 2022-06-06 08:38:08 +02:00
drmortalwombat 36a5eaae00 Propagate independent instructions across diamond shaped basic blocks 2022-06-04 20:56:28 +02:00
drmortalwombat f9eb91e980 Optimize X and Y usage 2022-06-03 19:04:05 +02:00
drmortalwombat 0ba2ddf195 Propagate x and y across block boundaries 2022-06-02 22:19:10 +02:00
drmortalwombat 1b8e1f4048 Optimize cmp#0 always has carry set 2022-05-30 22:28:36 +02:00
drmortalwombat a86f5b877a Upstream variant constant propagation 2022-05-29 21:02:57 +02:00
drmortalwombat d833ca6834 Use array of struct assignments for index range validation 2022-05-26 13:55:00 +02:00
drmortalwombat 3dc35c5fff Fix invalid bypassing of JSR with X register 2022-05-22 16:41:40 +02:00
drmortalwombat 3351ee81cc Extend static stack allocation to zero page spilling 2022-05-22 13:22:36 +02:00
drmortalwombat b356f726a4 More local xy register usage 2022-05-21 17:17:16 +02:00
drmortalwombat e0f87c676c Eliminate non existing data dependencies 2022-05-21 13:39:12 +02:00
drmortalwombat b42c992a58 Fix buffer overflow in sprintf 2022-05-19 08:30:00 +02:00
drmortalwombat 9d18aef634 Optimize interval comparison cascades 2022-05-15 22:18:42 +02:00
drmortalwombat 46fe117f1f add alias _Bool for bool 2022-05-15 10:53:58 +02:00
drmortalwombat 728e707024 Optimize single page 2D array access 2022-05-14 17:57:32 +02:00
drmortalwombat 3dd61dac4a Fix invalid define of true and false 2022-05-14 08:16:26 +02:00
drmortalwombat e70162b2cc Forward native code instruction if only used on single outgoing path 2022-05-12 17:55:24 +02:00
drmortalwombat b85b222fc0 Fix comment detection in defines 2022-05-09 08:04:16 +02:00
drmortalwombat d7b0e54494 Fix define with single line comment 2022-05-08 21:44:28 +02:00
drmortalwombat 75e5471dd1 Add support for d64 image creation 2022-05-08 15:37:30 +02:00
drmortalwombat c7de44b015 Optimize signed int with unsigned char comparison 2022-05-08 10:36:02 +02:00
drmortalwombat 29bd0c8d2d Optimizations for global variables 2022-05-07 14:03:56 +02:00
drmortalwombat ea1fa189b2 Add lz compression for embedded assets 2022-05-01 12:55:13 +02:00
drmortalwombat 62d08e139b Optimize pointer arithmetic in loops 2022-04-28 15:52:27 +02:00
drmortalwombat 7aec7f5c50 Fix crash compiling indexed memcpy size 2022-04-25 21:22:25 +02:00
drmortalwombat f619c5e0ab More verbose debug output 2022-04-25 07:57:31 +02:00
drmortalwombat 3a689cc7a1 Validate register livetime during peephole optimization 2022-04-23 22:11:25 +02:00
drmortalwombat 4cdc501a34 Bit shift optimizations 2022-04-21 08:26:04 +02:00
drmortalwombat 253be26335 Constant pointer arithmetic for pointer initializers 2022-04-18 22:23:13 +02:00
drmortalwombat ecb9bbee8a Bump version number 2022-04-17 21:12:54 +02:00
drmortalwombat 41a4db4402 Prepare compressed embedded data 2022-04-17 18:41:53 +02:00
drmortalwombat 72d2fc1fac Reverse integer range limit calculation 2022-04-15 11:06:49 +02:00
drmortalwombat 8f32b87b18 Fix call of function pointers in array 2022-04-13 16:29:36 +02:00
drmortalwombat 417574b4bb Fix volatile copy 2022-04-12 22:08:40 +02:00
drmortalwombat 07afbc4714 Bump version number 2022-04-12 20:25:41 +02:00
drmortalwombat 1ee7845bb4 Fix disassembler choking on long names 2022-04-12 18:22:38 +02:00
drmortalwombat 6331ec5707 Fix crash with macro undefine 2022-04-11 07:46:50 +02:00
drmortalwombat e312dddb12 Bump version number 2022-04-10 22:13:32 +02:00
drmortalwombat 7ed7134b53 Remove superfluous temporary move 2022-04-10 21:54:12 +02:00
drmortalwombat 6a40fdc75d Opetimize sequence of ADC/SBC in native code 2022-04-10 15:29:07 +02:00
drmortalwombat c635ae8136 Optimize const and/or sequences 2022-04-10 12:28:39 +02:00
drmortalwombat 546dbfc45a Some add/sub optimizations for global variables 2022-04-07 22:45:40 +02:00
drmortalwombat 0be3114e7d Bump version number 2022-04-06 19:18:55 +02:00
drmortalwombat 72264109e9 Add experimental zero page allocation for global variables 2022-04-06 19:16:44 +02:00
drmortalwombat 27dee0223c Cross block value forwarding 2022-04-05 16:56:02 +02:00
drmortalwombat c9e1775469 Optimize data forwarding on loop exit 2022-04-04 20:25:05 +02:00
drmortalwombat 6b3c5249cf Add \y00 for non adapted characters in s" or p" string literals 2022-04-04 16:35:37 +02:00
drmortalwombat 2435797bd1 Optimize x and y index order 2022-04-03 20:39:56 +02:00
drmortalwombat 9e7139f344 Bump version number 2022-04-03 11:55:52 +02:00
drmortalwombat aafb4adfa2 Optimize linker placement, avoiding array crossing page boundaries 2022-04-03 11:40:23 +02:00
drmortalwombat 58c99a5dca Add left alignment in padding for printf 2022-04-02 13:36:15 +02:00
drmortalwombat 358def836d Fix optimization for absolute addressing and two indices 2022-04-01 20:35:55 +02:00
drmortalwombat 48f97b6e60 Optimize compare to boolean variable 2022-03-31 18:16:31 +02:00
drmortalwombat 5a1ff68926 Fix binary and/or with boolean values, now raising a warning 2022-03-30 14:58:41 +02:00
drmortalwombat a60f5a783f Optimize X and Y register livespan 2022-03-28 19:03:43 +02:00
drmortalwombat 7bd3622bbd Instructions bypassing small if branches 2022-03-27 22:41:29 +02:00
drmortalwombat c24cf916db Bump version number 2022-03-27 17:21:23 +02:00
drmortalwombat d2503aaf1f Constant folding address of global and static variables 2022-03-27 17:18:44 +02:00
drmortalwombat 0aacc14287 Bump version number 2022-03-26 21:42:54 +01:00
drmortalwombat f50613704c Fix moving of abs store across function call 2022-03-26 21:39:30 +01:00
drmortalwombat 68e048b945 Fix volatile loads with unused result 2022-03-26 12:30:48 +01:00
drmortalwombat fc5c9f137a Add indexed const array initializer 2022-03-26 10:29:48 +01:00
drmortalwombat 5f0e0225e1 Loop MSB optimizations 2022-03-22 22:21:59 +01:00
drmortalwombat 8c77a5d256 Add "16bit * 8bit / 8bit" to fixed point math library 2022-03-20 22:53:51 +01:00
drmortalwombat 4538f0295d Fix byte to long conversion 2022-03-20 21:33:58 +01:00
drmortalwombat 4dd31f6c69 Bump version number 2022-03-19 20:05:43 +01:00
drmortalwombat 13f3ea57a3 Fix signed unsigned shift with mixed signed arguments 2022-03-19 19:46:40 +01:00
drmortalwombat 91cb2fda15 Documenting compiler optimizations 2022-03-19 14:35:49 +01:00
drmortalwombat d37ecc44da More documentation 2022-03-18 22:29:12 +01:00
drmortalwombat 3d3618876f Bump version number 2022-03-15 18:50:15 +01:00
drmortalwombat dc0951ee9f Order inter instructions into eval trains and sequences, optimize copyloops for size 2022-03-15 18:45:34 +01:00
drmortalwombat a4fa4cd482 Basic block struct copy propagation 2022-03-14 14:07:09 +01:00
drmortalwombat a65c802485 Address promotion into struct copy inter instructions 2022-03-14 08:35:59 +01:00
drmortalwombat ea09c2aa7b Static stack allocations for complex locals in non recursive calls 2022-03-13 15:46:03 +01:00
drmortalwombat 24a17c937b Bump version number 2022-03-12 12:56:30 +01:00
drmortalwombat 736298238e Pointer and float loop optimizations 2022-03-12 12:52:43 +01:00
drmortalwombat 3cb4bd0fba Fix == instead of = for assignment 2022-03-11 13:07:38 +01:00
drmortalwombat 6f52a7beed Loop optimizing index register usage 2022-03-10 22:18:09 +01:00
drmortalwombat 6fe9a4f167 Fastcall optimization for 2nd and 3rd level calls 2022-03-10 16:35:35 +01:00
drmortalwombat b43edb2b4c Avoid inlining of native functions into byte code 2022-03-09 20:27:11 +01:00
drmortalwombat c5fc186336 Add horizontal scroll shmup sample game 2022-03-06 21:49:10 +01:00
drmortalwombat d1104e1eb3 Optimize y index progression 2022-03-05 11:25:56 +01:00
drmortalwombat 7e458d1eda More promotion of abs and abs indexed when only single use 2022-03-03 19:23:47 +01:00
drmortalwombat 51d447618b Bump version 2022-03-03 08:11:02 +01:00
drmortalwombat 9ec2b4fdef Replace JMP with branch when possible 2022-03-02 21:18:06 +01:00
drmortalwombat 2a815a9709 More forward 8 bit index optimizations 2022-03-01 08:53:54 +01:00
drmortalwombat fbdb513697 Optimize single use of global variables in function 2022-02-27 17:19:51 +01:00
drmortalwombat 756245694f Optimize indexed static variable access 2022-02-26 18:10:23 +01:00
drmortalwombat 2719b1156b Fix over eager livetime reduction of X and Y registers 2022-02-26 12:35:59 +01:00
drmortalwombat f4f9ae1a6a Some xy optimizations 2022-02-25 18:43:11 +01:00
drmortalwombat a2293a0ed1 Native code size reduction 2022-02-23 18:48:31 +01:00
drmortalwombat 2fd8d8673a Oprtimize right shift multiply combination 2022-02-23 15:00:08 +01:00
drmortalwombat ed609f124b Improve loop invariant hoisting 2022-02-20 20:51:05 +01:00
drmortalwombat 8b63d5bb34 Shortcut zero page register moves 2022-02-20 14:12:01 +01:00
drmortalwombat 46e1caaa4a Some pointer index optimizations 2022-02-19 17:14:52 +01:00
drmortalwombat 6ac606c91b Fix compile order based on dependency graph 2022-02-19 12:58:51 +01:00
drmortalwombat 6bd3ecb689 Fix over eager const expression inliner 2022-02-19 12:16:33 +01:00
drmortalwombat 3aa142957c Fix pointer comparison and interrupt warning 2022-02-16 16:31:03 +01:00
drmortalwombat 1221649a3d Add check for __interrupt attribute on function pointers call from interrupt code 2022-02-15 09:49:46 +01:00
drmortalwombat fdb112a037 Add constant address calculation for struct members 2022-02-14 20:13:30 +01:00
drmortalwombat a52fb469b6 Eliminate some redundant instructions during peephole optimization 2022-02-09 22:20:44 +01:00
drmortalwombat 42f71e264e Fix uninitialized interrupt flag in linux builds 2022-02-08 12:58:22 +01:00
drmortalwombat 2f009f129e Add regions replicated in multiple easyflash banks 2022-02-07 18:04:17 +01:00
drmortalwombat a5d5060048 Bump version number 2022-02-06 21:47:08 +01:00
drmortalwombat 3a7ea0837b Fix logic or inversion 2022-02-06 17:29:07 +01:00
drmortalwombat d4352ef043 Add __hwinterrupt function decoration 2022-02-06 10:28:09 +01:00
drmortalwombat 5147ec6bc9 Fix function pointers in struct consts 2022-02-05 16:52:54 +01:00
drmortalwombat 4831950e61 Optimizing right shifts greater 5 bits by left shifts 2022-02-05 11:37:03 +01:00
drmortalwombat 05d6b3d223 Fix table based multiplication for 16bit results 2022-02-03 22:10:17 +01:00
drmortalwombat 34220b96e3 Add auto generation of multiplier tables if variable factor is known to be small 2022-02-02 22:05:55 +01:00
drmortalwombat c6133ce7c0 Add error message on crash, fix infinite loop, extend asm listing 2022-02-02 08:58:35 +01:00
drmortalwombat ce6714006c Bump version number 2022-02-01 22:27:09 +01:00
drmortalwombat 3507b09207 Optimize PETSCII conversion in charwin 2022-02-01 22:00:33 +01:00
drmortalwombat 25ba5ca789 Fix absolute const pointer to int cast 2022-01-31 22:40:53 +01:00
drmortalwombat 5a9f82b147 Add resources for missile command 2022-01-31 21:20:37 +01:00
drmortalwombat 995e39a57d Add missile command sample game 2022-01-31 21:17:14 +01:00
drmortalwombat e1f605b28c Optimize value forwarding and memory alias check 2022-01-31 13:33:39 +01:00
drmortalwombat 94efcaeca6 Circle drawing in multicolor bitmap 2022-01-31 08:08:18 +01:00
drmortalwombat 18be0dfc0b Optimize dynamic code generation 2022-01-29 21:55:52 +01:00
drmortalwombat 08d6358932 Fix local variable array member forwarding 2022-01-29 16:06:47 +01:00
drmortalwombat 60165a7fc3 Add "*" symbol for current address in inline assembler 2022-01-29 13:33:57 +01:00
drmortalwombat 5ca651bc36 Add games to samples 2022-01-28 22:49:15 +01:00
drmortalwombat 65201f27b6 Bump version number 2022-01-28 14:24:55 +01:00
drmortalwombat 2d41edfc97 Fix byte limit in #embed 2022-01-28 14:13:49 +01:00
drmortalwombat aee284c1d6 Add irq autocrawler sample 2022-01-28 08:49:21 +01:00
drmortalwombat dfe3d71f85 Make shore memcpy calls intrinsic 2022-01-27 23:08:57 +01:00
drmortalwombat 79a841a422 Mark vic registers as volatile 2022-01-27 16:38:47 +01:00
drmortalwombat 5c8b1c6daf Add __export, __native and __interrupt storage class specifiers 2022-01-26 21:48:19 +01:00
drmortalwombat 94532fe038 Fix enum size 2022-01-26 12:41:12 +01:00
drmortalwombat 792751e3a4 Fix error swapping global variables with negation 2022-01-25 21:45:33 +01:00
drmortalwombat 0ea87ea322 Reduce speculation of integer value range analyzer 2022-01-25 21:05:00 +01:00
drmortalwombat f25bf80a0f Fix LF line ending on windows, float and loop optimizations 2022-01-25 14:31:36 +01:00
drmortalwombat 9f41a55a18 Fix static declaration in header files 2022-01-23 21:14:30 +01:00
drmortalwombat 5a8dbfea60 Fix placement of sections in cartridges at other locations than start 2022-01-23 12:03:54 +01:00
drmortalwombat ca93f107c3 Add relocated sections 2022-01-22 18:21:52 +01:00
drmortalwombat 742866c8c2 Enable charmap inside a series of string literals 2022-01-22 13:41:24 +01:00
drmortalwombat 9dd493d20b Add sid and easyflash includes 2022-01-22 11:16:59 +01:00
drmortalwombat fad67d18aa Add auto loop unrolling and binary (verbatim) format linking 2022-01-21 21:52:16 +01:00
drmortalwombat cc927d778f Improve C const declaration compatibility 2022-01-21 14:42:49 +01:00
drmortalwombat 8b4eff3ee1 More constant folding and value propagation 2022-01-20 17:43:08 +01:00
drmortalwombat 76322c005d Fix errors introduced with strength reduction 2022-01-20 13:39:55 +01:00
drmortalwombat 1c403dfeeb Add strength reduction in trivial loops 2022-01-19 20:55:33 +01:00
drmortalwombat 9161b088ee More integer range optimizations 2022-01-16 18:30:38 +01:00
drmortalwombat 6eedb931a7 More value range optimizations 2022-01-16 09:41:59 +01:00
drmortalwombat de562fccb6 Add carry optimizations 2022-01-15 18:09:48 +01:00
drmortalwombat de920f2418 Optimize global variable usage 2022-01-14 17:53:30 +01:00
drmortalwombat c72ca3547b Fix longjump and kernalio end of file handling 2022-01-13 10:37:44 +01:00
drmortalwombat d9946e12b9 Optimize byte size right shift 2022-01-12 15:54:50 +01:00
drmortalwombat ed37f360eb New multicolor bitmap library 2022-01-11 18:27:13 +01:00
drmortalwombat 55affa4de9 Add auto inline of functions that trivially compute to a constat with constant arguments 2022-01-10 20:05:51 +01:00
drmortalwombat 1be469aa9b Optimize placement of basic blocks 2022-01-10 14:06:21 +01:00
drmortalwombat 68f8628409 Optimize size of generated byte code 2022-01-09 19:00:02 +01:00
drmortalwombat 640007546f Add __assume builtin function 2022-01-08 15:51:17 +01:00
drmortalwombat 085fba137f optimize aligned address arithmetic 2022-01-06 16:26:19 +01:00
drmortalwombat 85f99fe411 Bump version number 2022-01-05 20:11:17 +01:00
drmortalwombat d2511b558c Reoder eight bit adds 2022-01-05 20:06:25 +01:00
drmortalwombat d4a9308627 More inter code value forwarding 2022-01-05 16:38:56 +01:00
drmortalwombat 2b7c7300d7 Integer value range optimizations 2022-01-04 22:26:44 +01:00
drmortalwombat 639a33f9eb Simple loop invariant optimization for native code 2022-01-04 14:07:56 +01:00
drmortalwombat 78615c0725 Optimize cross block single evaluation 2022-01-04 11:44:01 +01:00
drmortalwombat 60ca42e759 Inner loop invariant optimization for non single block intermediate loops 2022-01-03 14:36:31 +01:00
drmortalwombat d621ab32cd Optimize space in linker when using aligned objects 2022-01-02 15:08:47 +01:00
drmortalwombat 272b7b08df Optimize more short multiplies in native code 2022-01-02 12:44:37 +01:00
drmortalwombat 66807c2374 Add samples to windows installer 2021-12-30 17:30:36 +01:00
drmortalwombat 7e66836e07 More samples 2021-12-30 15:41:06 +01:00
drmortalwombat 1fcc39acd5 Add sprite multiplexer 2021-12-29 20:07:13 +01:00
drmortalwombat 80fea25916 More samples 2021-12-28 13:13:05 +01:00
drmortalwombat 57c72b1788 Reduce y register pressure if x available 2021-12-27 10:49:18 +01:00
drmortalwombat 743510b54e Add verbose option -v to compiler 2021-12-26 11:31:04 +01:00
drmortalwombat f91bf21999 More samples 2021-12-25 20:55:15 +01:00
drmortalwombat e397e88cd3 Start sample projects 2021-12-25 14:49:15 +01:00
drmortalwombat 24cc6e20c8 Fix compiler getting stuck on optimizing infinite loop 2021-12-25 12:30:24 +01:00
drmortalwombat 9bd3d3391a Fix lost zero page register on y address shortcut 2021-12-24 16:54:03 +01:00
drmortalwombat 720e532d22 Added scanf and sscanf to stdio 2021-12-24 14:39:03 +01:00
drmortalwombat 0dd6a0655c Optimize call to 8 by16 mul 2021-12-23 20:27:45 +01:00
drmortalwombat 71c574478c More integer value range optimizations 2021-12-23 14:31:58 +01:00
drmortalwombat 6b7dc15d30 Optimize short float arrays 2021-12-22 15:36:12 +01:00
drmortalwombat 183864208f More integer value range optimizations 2021-12-22 12:58:17 +01:00
drmortalwombat 05a6c71698 Value range annotation for intermediate code 2021-12-22 07:46:06 +01:00
drmortalwombat b9c477976a Strength reduction for simple native code loops with y register 2021-12-20 20:44:10 +01:00
drmortalwombat 893b6f2294 Optimize long divide for short divisor 2021-12-19 22:18:05 +01:00
drmortalwombat 4a9c662cc9 Optimize float native code size 2021-12-19 16:53:12 +01:00
drmortalwombat 6d716b9478 Optimize 32bit shifts 2021-12-18 22:21:39 +01:00
drmortalwombat 178a5e23a8 Some optimizations for on the fly asm code generation 2021-12-14 14:31:18 +01:00
drmortalwombat 88c3764f69 Bump version number 2021-12-13 08:16:01 +01:00
drmortalwombat 4cf62a67ff Optimize jmp to rts 2021-12-12 20:34:33 +01:00
drmortalwombat fefa2e7d9a Optimize jump to rts and simple loop invariants in native code generator 2021-12-11 23:04:38 +01:00
drmortalwombat f7a5c94229 Optimize frame enter/leave code in native compiler 2021-12-11 12:52:35 +01:00
drmortalwombat 4d14cbe3a5 Fix function pointer call detection for fast call selection 2021-12-10 08:31:57 +01:00
drmortalwombat a1fda2b957 Fix float parameter and return values 2021-12-09 21:38:36 +01:00
drmortalwombat cf9f38d4dc Fix stacked fastcall invokation 2021-12-09 12:11:36 +01:00
drmortalwombat 1ac0c2f46a Fix duplicat check for loop head in native code generator 2021-12-08 14:04:32 +01:00
drmortalwombat 18ab7ce079 Fix broken left shift optimization due to branch in basic block 2021-12-06 22:56:03 +01:00
drmortalwombat 75ea2ee439 Add PETSCII string literals 2021-12-06 20:54:11 +01:00
drmortalwombat 695d4cf914 Minor byte code optimization for absolute arrays 2021-12-04 15:26:05 +01:00
drmortalwombat 973e13b776 Optimize absolute array addressing 2021-12-03 22:49:14 +01:00
drmortalwombat e4d24f1aa4 Some native code optimizations 2021-12-02 18:41:59 +01:00
drmortalwombat a66b3873cd Native code optimizations for global arrays 2021-12-01 23:00:57 +01:00
drmortalwombat 0b9163afbe Optimize native code branch placement 2021-12-01 20:26:28 +01:00