aboutsummaryrefslogtreecommitdiff
path: root/src/arch/x86_64/CodeGen.zig
AgeCommit message (Collapse)Author
2023-06-10stage2: start the InternPool transitionAndrew Kelley
Instead of doing everything at once which is a hopelessly large task, this introduces a piecemeal transition that can be done in small increments at a time. This is a minimal changeset that keeps the compiler compiling. It only uses the InternPool for a small set of types. Behavior tests are not passing. Air.Inst.Ref and Zir.Inst.Ref are separated into different enums but compile-time verified to have the same fields in the same order. The large set of changes is mainly to deal with the fact that most Type and Value methods now require a Module to be passed in, so that the InternPool object can be accessed.
2023-06-03Merge pull request #15579 from squeek502/mem-delimitersAndrew Kelley
Split `std.mem.split` and `tokenize` into `sequence`, `any`, and `scalar` versions
2023-05-29x86_64: hotfix for crash during in-memory coercion of large typeJacob Young
Unblocks #15768 Closes #15904
2023-05-26std.Target adjustmentsVeikka Tuominen
* move `ptrBitWidth` from Arch to Target since it needs to know about the abi * double isn't always 8 bits * AVR uses 1-byte alignment for everything in GCC
2023-05-23std.sort: add pdqsort and heapsortAli Chraghi
2023-05-18x86_64: fix `@bitCast` when the operand diesJacob Young
2023-05-18x86_64: implement saturating add/sub for weird typesJacob Young
2023-05-18x86_64: implement integer vector `@truncate`Jacob Young
2023-05-18x86_64: fix 128-bit atomics on non-linuxJacob Young
2023-05-18x86_64: delete some incorrect codeJacob Young
2023-05-18x86_64: fix multi-limb compareJacob Young
2023-05-18x86_64: initialize array sentinelsJacob Young
2023-05-18x86_64: rewrite castsJacob Young
2023-05-18x86_64: fix float min/max behaviorJacob Young
2023-05-15x86_64: implement integer vector min/maxJacob Young
2023-05-15x86_64: implement integer vector bitwise operationsJacob Young
2023-05-15x86_64: implement integer vector mulJacob Young
2023-05-15x86_64: implement integer vector add/subJacob Young
2023-05-15x86_64: fix `@clz` and `@ctz` of `u8`Jacob Young
2023-05-15x86_64: fix struct_field_val crashJacob Young
2023-05-15x86_64: enable integer vector registersJacob Young
2023-05-15x86_64: redo movement, float negation, and `@fabs`Jacob Young
2023-05-15x86_64: reimplement `@floatToInt`Jacob Young
2023-05-15x86_64: implement calling function referencesJacob Young
2023-05-15x86_64: implement global payload pointersJacob Young
2023-05-15x86_64: implement integer vector movementJacob Young
2023-05-15x86_64: implement stack probingJacob Young
2023-05-15x86_64: remove scratch data tagsJacob Young
2023-05-15x86_64: implement `@splat`Jacob Young
2023-05-15x86_64: fix field_ptr nonsenseJacob Young
2023-05-15x86_64: implement union_initJacob Young
2023-05-15x86_64: fix issues with getting float fieldsJacob Young
2023-05-15x86_64: fix crash with logging enabledJacob Young
2023-05-15x86_64: add missing multply of `f16`Jacob Young
2023-05-13Update all std.mem.tokenize calls to their appropriate functionRyan Liptak
Everywhere that can now use `tokenizeScalar` should get a nice little performance boost.
2023-05-08x86_64: finish optimizing mir tag usageJacob Young
Final tag count is 95.
2023-05-08x86_64: continue to optimize mir tag usageJacob Young
Migrate mnemonic literals to tuples that represent the compressed storage. 225 tags left in use, many tags left to compress.
2023-05-08x86_64: optimize mir tag usageJacob Young
This moves all pseudo-instructions to a single `Mir.Inst.Tag` tag and prepares to start coalescing similar mnemonics. 239 tags left in use.
2023-05-08x86_64: implement binary operations for `f16` and `f16` vectorsJacob Young
2023-05-08x86_64: implement `@floor`, `@ceil`, and `@trunc` for float vectorsJacob Young
2023-05-08x86_64: implement binary operations for float vectorsJacob Young
2023-05-08x86_64: implement `@sqrt` for `f16` scalars and vectorsJacob Young
2023-05-08x86_64: implement `@sqrt` for vectorsJacob Young
2023-05-08x86_64: implement float cast from `f16` to `f64`Jacob Young
2023-05-08x86_64: implement some float and float vector movementJacob Young
This allows actually storing value of these supported types in registers, and not restricting them to stack slots.
2023-05-08x86_64: implement `@mulAdd`Jacob Young
2023-05-08x86_64: implement packed floating point fieldsJacob Young
2023-05-08x86_64: fix unordered float equalityJacob Young
2023-05-08x86_64: implement f16 cmpJacob Young
2023-05-08x86_64: implement f16 conversions when supportedJacob Young