Commit graph

28 commits

Author SHA1 Message Date
ReinUsesLisp 0b9ee36247 Stream SPIR-V instructions directly to a binary
Before this commit sirit generated a stream of tokens that would then be
inserted to the final SPIR-V binary. This design was carried from the
initial design of manually inserting opcodes into the code. Now that
all instructions but labels are inserted when their respective function
is called, the old design can be dropped in favor of generating a valid
stream of SPIR-V opcodes.

The API for variables is broken, but adopting the new one is trivial.
Instead of calling OpVariable and then adding a global or local
variable, OpVariable was removed and global or local variables are
generated when they are called.

Avoiding duplicates is now done with an std::unordered_set instead of
using a linear search jumping through vtables.
2020-08-01 01:50:01 -03:00
ReinUsesLisp f254b6a394 tests/main: Test assembled binary
Previously the test couldn't fail unless it crashed. Now that sirit does
not do work "behind the scenes" that can change between versions (like
declaring capabilities), we can have this checking.
2019-10-24 03:20:05 -03:00
ReinUsesLisp 42248408a9 Remove Emit entry in favor of auto-emitting code
All instructions but OpVariable and OpLabel are automatically emitted.
These functions have to call AddLocalVariable/AddGlobalVariable or
AddLabel respectively.
2019-10-18 04:27:52 -03:00
ReinUsesLisp 8cf3d225db Assemble uint32_t instead of uint8_t
Vulkan receives SPIR-V modules with a uint32_t alignment. Returning
uint8_t forced users to invoke undefined behaviour (reinterpret_cast)
or copy.
2019-10-18 03:46:47 -03:00
ReinUsesLisp 60a856d266 Relicense to The BSD 3-clause license 2019-07-14 18:50:44 -03:00
ReinUsesLisp 1869de6d75 tests: Fix build error 2019-03-14 04:33:54 -03:00
ReinUsesLisp 4b1c1d1e38 Add ellipsis overloads for instructions ending in vectors 2019-03-11 04:38:09 -03:00
ReinUsesLisp f5944d61a6 Upgrade from LGPLv2.1 to LGPLv3 2018-11-16 04:10:10 -03:00
ReinUsesLisp fe67a427ff Fixup tests 2018-11-16 03:50:21 -03:00
ReinUsesLisp 91e0769db5 Fixup build issues 2018-11-01 05:13:30 -03:00
ReinUsesLisp a08aeec982 Add Op* prefix to instructions that have to be emited 2018-10-31 21:23:27 -03:00
ReinUsesLisp ba3a3a74d7 Update test 2018-10-31 05:05:23 -03:00
ReinUsesLisp 45555c0e57 OpName returns its target 2018-08-31 04:55:01 -03:00
ReinUsesLisp acea9030c5 Add OpName and debug symbols 2018-08-31 04:40:15 -03:00
ReinUsesLisp abcc20748c Test branches 2018-08-31 04:25:59 -03:00
ReinUsesLisp 2bafba1a17 Rename Assembly -> Assemble 2018-08-31 03:41:30 -03:00
ReinUsesLisp a582641b99 Add OpConstantNull 2018-08-28 04:46:18 -03:00
ReinUsesLisp 42c456f24f Add OpConstantSampler 2018-08-28 04:41:42 -03:00
ReinUsesLisp 765c8833c4 Add OpConstantComposite 2018-08-27 00:38:25 -03:00
ReinUsesLisp 48cbe695f0 Add OpConstant 2018-08-27 00:29:40 -03:00
ReinUsesLisp f68dbb20fc Fixup License header 2 -> 2.1 2018-08-26 23:28:39 -03:00
ReinUsesLisp c0d61d32d4 Fixup License 2018-08-26 22:27:33 -03:00
ReinUsesLisp bf52ad2d9f Add boolean constants 2018-08-26 19:35:48 -03:00
ReinUsesLisp 3adb45138b Add more types 2018-08-26 15:48:10 -03:00
ReinUsesLisp 131dbd053c Add some types 2018-08-26 14:25:59 -03:00
ReinUsesLisp 1de01c95ae Rename Ref -> Op 2018-08-25 20:34:06 -03:00
ReinUsesLisp 34d215d3d8 Implement stuff 2018-08-25 20:16:37 -03:00
ReinUsesLisp 5cfa8aa6ab aloha 2018-08-23 04:59:57 -03:00