ReinUsesLisp
84fab90024
Add OpFunctionParameter
2021-03-28 18:52:32 -03:00
ReinUsesLisp
0ef6e807ab
Add DemoteToHelperInvocation support
2021-03-19 18:46:11 -03:00
ReinUsesLisp
4b1ff612c4
Add support for sparse texture instructions
2021-03-08 18:31:00 -03:00
ReinUsesLisp
f6a7130486
Add support for self-referencing phi nodes
2021-02-24 18:30:10 -03:00
ReinUsesLisp
20d75babd0
Assert when an OpId has an invalid result type
2021-02-19 15:42:25 -03:00
ReinUsesLisp
200310e8fa
Assert operand's id is not zero
2021-02-15 23:00:12 -03:00
ReinUsesLisp
f819ade0ef
Add support for forward declarations
2021-02-14 22:45:31 -03:00
ReinUsesLisp
c374bfd9fd
Add Phi support
2021-02-12 21:08:46 -03:00
ReinUsesLisp
1f7b70730d
Fix global variables being added in code
2021-02-07 23:52:40 -03:00
comex
ab567491e1
Add support for OpGroupNonUniform{All,Any,AllEqual,Ballot}, and fix OpGroupNonUniformShuffleXor.
...
These Vulkan 1.1 operations can be used in place of
`OpSubgroup{All,Any,AllEqual,Ballot}KHR`, among other things.
For `OpGroupNonUniformShuffleXor`, which was already implemented, turns
out the scope argument needs to be encoded not as an immediate, but as
an id that points to a constant integer.
2020-11-26 17:20:01 -03:00
comex
c095705f59
Change count to string_words
...
Co-authored-by: Rodrigo Locatti <reinuseslisp@airmail.cc>
2020-11-26 17:18:44 -03:00
comex
63c5b548c5
Fix OpExtension.
...
There were two issues:
- The word0 was omitted entirely.
- The word count didn't account for the nul terminator.
2020-11-26 17:18:44 -03:00
comex
393fccea5b
Fix Reserve count for trinary ops.
2020-11-25 19:44:32 -03:00
ReinUsesLisp
634428758b
Fix build errors on gcc
2020-08-10 04:55:04 -03:00
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
c4ea8f4b76
Upgrade to C++20 and use std::span
2020-07-29 05:46:50 -03:00
ReinUsesLisp
eefca56afd
memory: Add OpImageTexelPointer
2020-06-02 02:13:37 -03:00
ReinUsesLisp
a62c5bbc10
barrier: Add OpControlBarrier
2020-05-15 02:54:06 -03:00
ReinUsesLisp
414fc4dbd2
arithmetic: Add IAddCarry
2020-04-25 21:54:10 -03:00
ReinUsesLisp
a712959f1e
atomic: Fix typo
2020-01-19 16:39:42 -03:00
ReinUsesLisp
15bacd3b1b
atomic: Add memory atomic instructions
2020-01-19 16:36:33 -03:00
ReinUsesLisp
9f4d057aa2
image: Remove assumed lod in image samples
...
This commits breaks the API. Depth image samples assumed a lod operand,
this made using Grad samples clumsy to use.
2019-12-15 18:23:59 -03:00
ReinUsesLisp
88d37bedf0
op: Silence -Wshadow warning
2019-12-11 23:58:06 -03:00
ReinUsesLisp
38e0d00cde
op: Fix implicit conversion from char* to bool warning
2019-12-11 23:57:46 -03:00
ReinUsesLisp
12f40a8032
Add OpMemoryBarrier
2019-12-09 21:44:36 -03:00
ReinUsesLisp
e1a6729df7
Enable -Wshadow and silence warnings
2019-11-27 05:46:03 -03:00
ReinUsesLisp
22cc6f6c1b
cmake: Always treat warnings as errors
...
Enable cast warnings in gcc and clang and always treat warnings as
errors.
GetWordCount now returns std::size_t for simplicity and the word count
is asserted and casted in WordCount (now called CalculateTotalWords.
Silence warnings.
2019-11-27 05:25:35 -03:00
ReinUsesLisp
71b53b855a
Add OpSubgroupBallotKHR and vote instructions
2019-11-10 21:15:45 -03:00
ReinUsesLisp
688d6d9799
Add OpSubgroupReadInvocationKHR
2019-11-03 00:32:35 -03:00
ReinUsesLisp
9b897c3541
Add OpGroupNonUniformShuffleXor
2019-11-02 19:39:41 -03:00
ReinUsesLisp
3067893923
Add EmitVertex and EndPrimitive
2019-11-01 17:28:32 -03:00
ReinUsesLisp
b4eeadfd9b
operand: Use pure virtual functions
2019-11-01 06:07:53 -03:00
ReinUsesLisp
4c2981eab5
operand: Move operand_type initialization to constructor
2019-11-01 05:52:49 -03:00
ReinUsesLisp
53d572ae7d
Drop usage of dynamic_cast in favour of static_cast
2019-11-01 05:44:27 -03:00
ReinUsesLisp
cff0a41416
literal_number: Drop usage of RTTI
2019-11-01 05:41:58 -03:00
ReinUsesLisp
de91660f3c
op: Replace owning star pointers with unique_ptr
2019-11-01 05:33:53 -03:00
ReinUsesLisp
ef47087d88
literal_number: Use static_cast instead of dynamic_cast
2019-11-01 05:12:54 -03:00
ReinUsesLisp
a1972e35f1
instructions/logical: Silence -Wpedantic
2019-10-24 03:08:42 -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
Lioncash
ab507033db
common_types: Include types within the Sirit namespace
...
Avoids dumping types into global scope.
2019-10-06 20:55:15 +00:00
ReinUsesLisp
6e14d37386
Add asserts against nullptr operands
2019-09-11 01:19:53 -03:00
ReinUsesLisp
d24685ebd3
Revert "operand: Implement operand hashing and use hashed set for declarations"
...
This reverts commit 1e665afa36 .
2019-09-09 16:48:05 -03:00
ReinUsesLisp
58c5406436
Revert "Fix declarations hashing"
...
This reverts commit bb6a3421d2 .
2019-09-09 16:47:58 -03:00
ReinUsesLisp
bb6a3421d2
Fix declarations hashing
2019-09-09 16:46:46 -03:00
ReinUsesLisp
ae7c664016
Add OpAny and OpAll
2019-09-09 16:46:36 -03:00
ReinUsesLisp
4a0c6e03e1
Add OpVectorExtractDynamic and OpVectorInsertDynamic
2019-09-09 15:42:47 -03:00
ReinUsesLisp
60a856d266
Relicense to The BSD 3-clause license
2019-07-14 18:50:44 -03:00
ReinUsesLisp
1e665afa36
operand: Implement operand hashing and use hashed set for declarations
...
Instead of manually searching each element in the declarations vector,
use an unordered_set to emplace new declarations avoiding repetition.
2019-06-08 05:23:15 -03:00
Lioncash
f7c4b07a7e
stream: Insert supplied string in one operation
...
Like the other overloads, we can insert the whole string within one
operation instead of doing a byte-by-byte append.
We only do byte-by-byte appending when padding is necessary.
2019-03-16 02:51:35 -03:00