aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/spirv
AgeCommit message (Collapse)Author
2024-06-16spirv: add support for workItemId, workGroupId, workGroupSizeRobin Voetter
2024-06-10spirv: new vectorization helperRobin Voetter
The old vectorization helper (WipElementWise) was clunky and a bit annoying to use, and it wasn't really flexible enough. This introduces a new vectorization helper, which uses Temporary and Operation types to deduce a Vectorization to perform the operation in a reasonably efficient manner. It removes the outer loop required by WipElementWise so that implementations of AIR instructions are cleaner. This helps with sanity when we start to introduce support for composite integers. airShift, convertToDirect, convertToIndirect, and normalize are initially implemented using this new method.
2024-04-06spirv: yeet cacheRobin Voetter
2024-04-06spirv: remove cache usage from assemblerRobin Voetter
2024-04-06spirv: remove cache usage for typesRobin Voetter
2024-04-06spirv: remove cache usage for constantsRobin Voetter
2024-04-06spirv: id range helperRobin Voetter
This allows us to more sanely allocate a continuous range of result-ids, and avoids a bunch of nasty casting code in a few places. Its currently not used very often, but will be useful in the future.
2024-04-06spirv: implement `@mulWithOverflow`Ali Chraghi
2024-04-06spirv: OpExtInstImport in assemblerAli Chraghi
2024-04-06spirv: implement `@divFloor`, `@floor` and `@mod`Ali Chraghi
2024-03-18spirv: make generic globals invocation-localRobin Voetter
2024-03-18spirv: add zig-specific ext instRobin Voetter
This may be removed again in the future...
2024-03-18spirv: make IdResult an enumRobin Voetter
2024-03-18spirv: update assembler with new specRobin Voetter
2024-03-18spirv: update spec to SPIRV-Headers/8b246ffRobin Voetter
We need this "unstable" version to get the Zig identifiers.
2024-03-11std.builtin: make container layout fields lowercaseTristan Ross
2024-02-15spirv: add capability to compile with x86_64 backendAli Chraghi
2024-02-15spirv: use extended instructions whenever possibleAli Chraghi
2024-02-09spirv: make rusticl the primary testing implementationAli Chraghi
2024-02-05spirv: support enum integer values in AssemblerAli Chraghi
2024-02-05spirv: emit vectors whenever we canAli Chraghi
2024-02-05spirv: basic shader supportAli Chraghi
2023-11-24spirv: structured control flowRobin Voetter
2023-11-24spirv: always emit mask constants even if no bits are setRobin Voetter
A parameter like this is not always optional, even if that is usually implied. SPIR-V tools fail to parse a module with an OpLoopMerge instruction where the loop control parameter is left out.
2023-11-24spirv: fix memory leak in SpvModuleRobin Voetter
2023-10-23Revert "Revert "Merge pull request #17657 from Snektron/spirv-recursive-ptrs""Robin Voetter
This reverts commit 9f0359d78f9facc38418e32b0e8c1bf6f99f0d26 in an attempt to make the tests pass again. The CI failure from that merge should be unrelated to this commit.
2023-10-22Revert "Merge pull request #17657 from Snektron/spirv-recursive-ptrs"Andrew Kelley
This reverts commit b822e841cda0adabe3fec260ff51c18508f7ee32, reversing changes made to 0c99ba1eab63865592bb084feb271cd4e4b0357e. This caused a CI failure when it landed in master branch.
2023-10-21spirv: self-referential pointers via new fwd_ptr_typeRobin Voetter
Its a little ugly but it works.
2023-10-15spirv: work around OpSource parsing issue in llvm-spirvRobin Voetter
The Khronos SPIRV-LLVM translator does not parse OpSource correctly. This was causing tests to fail and other mysterious issues. These are resolved by only generating a single OpSource instruction for now, which does not have the source file locations also. See https://github.com/KhronosGroup/SPIRV-LLVM-Translator/issues/2188
2023-10-15spirv: air bitcast for non-numeric non-pointer typesRobin Voetter
2023-10-15spirv: use CacheString for source_file_names instead of []const u8Robin Voetter
2023-10-15spirv: get rid of SpvModule arenaRobin Voetter
2023-10-15spirv: opaque typesRobin Voetter
2023-09-23spirv: air dbg_var_val and dbg_var_ptrRobin Voetter
2023-09-23spirv: generate module initializerRobin Voetter
2023-09-23spirv: put global var initializers in functionsRobin Voetter
2023-06-24all: migrate code to new cast builtin syntaxmlugg
Most of this migration was performed automatically with `zig fmt`. There were a few exceptions which I had to manually fix: * `@alignCast` and `@addrSpaceCast` cannot be automatically rewritten * `@truncate`'s fixup is incorrect for vectors * Test cases are not formatted, and their error locations change
2023-06-19all: zig fmt and rename "@XToY" to "@YFromX"Eric Joldasov
Signed-off-by: Eric Joldasov <bratishkaerik@getgoogleoff.me>
2023-06-17std: replace builtin.Version with SemanticVersionr00ster91
2023-06-10stage2: move opaque types to InternPoolAndrew Kelley
2023-06-10stage2: move many Type encodings to InternPoolAndrew Kelley
Notably, `vector`. Additionally, all alternate encodings of `pointer`, `optional`, and `array`.
2023-05-30spirv: eliminate remaining uses of emitConstantRobin Voetter
2023-05-30spirv: rename TypeConstantCache -> CacheRobin Voetter
2023-05-30spirv: translate remaining typesRobin Voetter
2023-05-30spirv: translate remaining typesRobin Voetter
2023-05-30spirv: cache strings for debug namesRobin Voetter
2023-05-30spirv: translate structs to cache keyRobin Voetter
2023-05-30spirv: cache pointersRobin Voetter
2023-05-30spirv: cache function prototypesRobin Voetter
2023-05-30spirv: cache for intsRobin Voetter