aboutsummaryrefslogtreecommitdiffhomepage
path: root/amd64/isel.c
Commit message (Collapse)AuthorAgeFilesLines
* isel: fix bug where sub turned into add, but inplace didn't reflectlemon2025-12-121-2/+2
|
* rename arraylength macro -> countoflemon2025-12-111-1/+1
|
* amd64: use XORPS for floating point negationlemon2025-12-071-3/+6
| | | | | | | | | | Previously `neg x` was being turned into `sub 0, x`. But this gives the wrong result for zero/negative zero (-0.0 == -0.0 but 0.0 - 0.0 == 0.0), so it wasn't IEEE compliant or correct. Do what every other compiler does instead and flip the sign bit with an exclusive or. Should implement someway of deduplicating small data constants like the ones used here though.
* isel: fix flipped sub not being inplacelemon2025-12-051-0/+1
|
* isel: fix immediate of flipped sublemon2025-12-041-0/+1
|
* test/11-abilemon2025-12-021-6/+9
|
* amd64/isel: fix addressing index shift being possibly too large to encode (duh)lemon2025-11-291-1/+1
|
* isel: fix branch arglemon2025-11-271-0/+2
|
* abi/isel: aggregate args in stack wiplemon2025-11-271-6/+11
|
* fix regression w/ store instr + memory immediatelemon2025-11-241-11/+13
|
* isel: loadstoreaddr don't fuseaddr as muchlemon2025-11-241-3/+5
|
* implement float varargs, and some other fixeslemon2025-11-231-0/+6
|
* amd64/isel: indirect call arg must be memaddrlemon2025-11-221-2/+7
|
* make sure indirect function call pointer does not end up in clobber reglemon2025-11-221-0/+5
|
* ir: barebones IR passes checked contractslemon2025-11-211-0/+2
|
* remove umullemon2025-11-211-3/+2
|
* change op names to match 285063eba44lemon2025-11-211-13/+13
|
* rename IR classes to reflect bitsizelemon2025-11-211-11/+11
|
* isel: lower allocas a different way, such that stk address gets materialized ↵lemon2025-11-201-23/+58
| | | | when necesary
* ir: for easier debugging, keep ctype in dats, print as literal when possiblelemon2025-11-201-3/+7
|
* debug output to stdoutlemon2025-11-191-1/+1
|
* isel: don't incorrectly clamp constant lhs of shift operationlemon2025-11-151-4/+4
|
* isel: fold arithlemon2025-11-141-1/+21
|
* preeliminary va_list supportlemon2025-11-141-5/+23
|
* amd64/isel: fold Oext with immediateslemon2025-11-121-0/+8
|
* implement argument passing in stacklemon2025-11-121-6/+18
|
* fixup! amd64: get rid of xinc/xdec. handle those at emit stagelemon2025-11-091-1/+1
|
* amd64/isel: make `sub imm` work for address fusinglemon2025-11-091-2/+8
|
* amd64: get rid of xinc/xdec. handle those at emit stagelemon2025-11-091-18/+1
|
* amd64: fix aggregate abi stuff;; ir: fold, peephole optimizing constructorslemon2025-11-051-2/+1
|
* isel: fix 3-address add when used for flags in branchlemon2025-11-021-0/+3
|
* isel fixeslemon2025-10-301-3/+11
|
* isel: fix address sel for absolute int addrlemon2025-10-261-0/+7
|
* amd64 missing stufflemon2025-10-231-2/+10
|
* isel: fix -fpic factoring out non-symbolic address operandslemon2025-10-231-1/+1
|
* amd64: load/store from abs address constants; movabslemon2025-10-231-10/+19
|
* amd64: float conversion insntrslemon2025-10-181-0/+13
|
* small thignslemon2025-10-181-1/+1
|
* bugfixeslemon2025-10-101-0/+1
|
* initial implementation of run-time array/aggregate initializerslemon2025-10-081-0/+4
|
* fix some more codegen bugs for symbol constantslemon2025-09-161-2/+5
|
* codegen: float cmp, ior; frontend: fix cond expr buglemon2025-09-141-2/+5
|
* preliminary pie and piclemon2025-09-141-8/+25
|
* amd64: fix isel for numeric conversion opslemon2023-08-071-4/+4
|
* amd64 codegen fixeslemon2023-07-071-1/+1
|
* misc bugfixslemon2023-06-301-4/+2
|
* add initializers (only static for initialier list rn)lemon2023-06-291-7/+33
| | | | and other fixes
* fix some warningslemon2023-06-251-9/+1
|
* fix regalloc thinking some ins are dead by adding ins.keeplemon2023-06-241-1/+5
|
* amd64/emit: more float fixeslemon2023-06-241-21/+24
| | | | | optimize loading 0.0 in phis as well as regular copies and also don't use inc or addr for float addition