Stephen Heumann
d68e0b268f
Generate more efficient code for a single return at end of function.
...
When a function has a single return statement at the end and meets certain other constraints, we now generate a different intermediate code instruction to evaluate the return value as part of the return operation, rather than assigning it to (effectively) a variable and then reading that value again to return it.
This approach could actually be used for all returns in C code, but for now we only use it for a single return at the end. Directly applying it in other cases could increase the code size by duplicating the function epilogue code.
2022-12-19 18:52:46 -06:00
Stephen Heumann
0e8b485f8f
Improve debug printing of pcodes.
...
Some pcode instruction names were missing.
2022-06-08 20:49:16 -05:00
Stephen Heumann
c0727315e0
Recognize byte swapping and generate an xba instruction for it.
...
Specifically, this recognizes the pattern "(exp << 8) | (exp >> 8)", where exp has an unsigned 16-bit type and does not have side effects.
2021-03-05 22:00:13 -06:00
Stephen Heumann
05868667b2
Implement 64-bit division and remainder, signed and unsigned.
...
These operations rely on new library routines in ORCALib (~CDIV8 and ~UDIV8).
2021-02-05 12:42:48 -06:00
Stephen Heumann
08cf7a0181
Implement 64-bit multiplication support.
...
Signed multiplication uses the existing ~MUL8 routine in SysLib. Unsigned multiplication will use a new ~UMUL8 library routine.
2021-02-04 22:23:59 -06:00
Stephen Heumann
168a06b7bf
Add support for emitting 64-bit constants in statically-initialized data.
2021-02-04 02:17:10 -06:00
Stephen Heumann
2e44c36c59
Implement unary negation and bitwise complement for 64-bit types.
2021-01-30 13:49:06 -06:00
Stephen Heumann
abb0fa0fc1
Implement bitwise and/or/xor for 64-bit types.
...
This introduces three new intermediate codes for these operations.
2021-01-30 00:25:15 -06:00
Stephen Heumann
085cd7eb1b
Initial code to recognize 'long long' as a type.
2021-01-29 22:27:11 -06:00
Stephen Heumann
46b6aa389f
Change all text/source files to LF line endings.
2017-10-21 18:40:19 -05:00
mikew50
e72177985e
ORCA/C 2.1.0 source from the Opus ][ CD
2017-10-01 17:47:47 -06:00