aboutsummaryrefslogtreecommitdiff
path: root/src/arch/x86_64/CodeGen.zig
AgeCommit message (Collapse)Author
2023-05-08x86_64: implement `@ctz` and `@clz` for `u128`Jacob Young
2023-05-08x86_64: implement `@floor`, `@ceil`, and `@trunc`Jacob Young
2023-05-03x86_64: implement movement of more typesJacob Young
* f16 * f128 * vector
2023-05-03x86_64: implement sqrtJacob Young
2023-05-03x86_64: optimize code size for double neg/absJacob Young
2023-05-03x86_64: fix feature confusionJacob Young
2023-05-03x86_64: implement fabsJacob Young
2023-05-03x86_64: fix todo message typoJacob Young
2023-05-03x86_64: implement fieldParentPtrJacob Young
2023-05-03x86_64: implement slice elem ptr for more MCValue tagsJacob Young
2023-05-02Implement multi-argument @min/@max and notice boundsmlugg
Resolves: #14039
2023-05-01x86_64: cleanup lazy symbolsJacob Young
In theory fixes updating lazy symbols during incremental compilation.
2023-05-01x86_64: fix switch multi-prongs and mul/div flags clobberJacob Young
2023-05-01link: fix accessing source atom's symbol index in codegenJakub Konka
Since the owner can either be a `Decl` or a `LazySymbol` we need to preserve this information at the codegen generate function level so that we can then correctly work out the corresponding `Atom` in the linker.
2023-05-01Revert "x86_64: workaround tagName linker issues"Jakub Konka
This reverts commit aac97b92532e7492b9145e1562e31c2e1fa66c15.
2023-05-01x86_64: workaround tagName linker issuesJacob Young
Pass extra pointer param with a linker ref when calling the lazy tagName function to workaround not being able to lower linker refs during codegen of a lazy func.
2023-05-01x86_64: implement tagNameJacob Young
2023-05-01x86_64: factor out lazy_symJacob Young
2023-05-01link: cleanup lazy alignmentJacob Young
This gets the alignment from the code that creates a lazy symbol instead of guessing it at every use.
2023-05-01x86_64: optimize wide mul with overflowJacob Young
2023-05-01x86_64: implement more forms of wide mul with overflowJacob Young
2023-05-01x86_64: fix large not and atomicrmwJacob Young
2023-05-01x86_64: fix 128-bit cmpxchgJacob Young
2023-05-01x86_64: fix stack realignmentJacob Young
2023-05-01x86_64: cleanup unneeded codeJacob Young
2023-05-01x86_64: implement a bunch of floating point stuffJacob Young
2023-05-01x86_64: use std.log for debug loggingJacob Young
2023-04-28update codebase to use `@memset` and `@memcpy`Andrew Kelley
2023-04-26x86_64: fix tlv referencesJacob Young
2023-04-26x86_64: fix rem/mod behavior and hazardsJacob Young
2023-04-26x86_64: fix some floating point encoding errorsJacob Young
2023-04-26x86_64: add frame indicesJacob Young
This allows abstract references to the stack frame which enables: * deferred frame layout until after the function has been processed * frame compaction (sorting by alignment) * being able to overalign the stack * references that change based on an overaligned stack * moving callee saved spills to the usual part (smaller code size) * shared call frame (avoids stack adjustments before and after calls)
2023-04-25stage2: introduce store_safe AIR instructionAndrew Kelley
store: The value to store may be undefined, in which case the destination memory region has undefined bytes after this instruction is evaluated. In such case ignoring this instruction is legal lowering. store_safe: Same as `store`, except if the value to store is undefined, the memory region should be filled with 0xaa bytes, and any other safety metadata such as Valgrind integrations should be notified of this memory region being undefined.
2023-04-25x86_64 backend: support `@memset` with slicesAndrew Kelley
2023-04-25x86_64 backend: implement `@memset` for element ABI size > 1Andrew Kelley
* make memset and memset_safe guarantee that if the length is comptime-known then it will be nonzero.
2023-04-25LLVM backend: support non-byte-sized memsetAndrew Kelley
Also introduce memset_safe AIR tag and support it in C backend and LLVM backend.
2023-04-25x86 backend: implement new memcpy/memset semanticsAndrew Kelley
2023-04-21macho: skip GOT for TLVs; handle them separately when loweringJakub Konka
2023-04-21elf: do not reserve a GOT slot for every AtomJakub Konka
2023-04-20x86_64: fix merge conflictJacob Young
2023-04-20x86_64: adapt to new isUnused liveness changeJacob Young
2023-04-20x86_64: use liveness block deathsJacob Young
2023-04-20x86_64: instruction tracking cleanupJacob Young
2023-04-20x86_64: add block death workaroundJacob Young
2023-04-20x86_64: rewrite inst trackingJacob Young
2023-04-20Begin integrating new liveness analysis into remaining backendsmlugg
2023-04-20Liveness: control flow analysismlugg
This is a partial rewrite of Liveness, so has some other notable changes: - A proper multi-pass system to prevent code duplication - Better logging - Minor bugfixes
2023-04-18Merge pull request #15302 from jacobly0/x86_64-non-livenessAndrew Kelley
x86_64: liveness independent fixes
2023-04-17x86_64: clean up formatting functions for Instruction and OperandJakub Konka
2023-04-16x86_64: implement packed load and storeJacob Young