aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorReinUsesLisp <[email protected]>2019-03-11 04:17:29 -0300
committerReinUsesLisp <[email protected]>2019-03-11 04:38:09 -0300
commit4b1c1d1e38f28492589bf4196843c13f6128942b (patch)
treed45bd6f2cc0844b8aa9a7cbcdee063adb15e1b19 /tests
parentee4ce61e628f3fc963a8b0e458330993a865ef7a (diff)
downloadsirit-4b1c1d1e38f28492589bf4196843c13f6128942b.tar.gz
sirit-4b1c1d1e38f28492589bf4196843c13f6128942b.zip
Add ellipsis overloads for instructions ending in vectors
Diffstat (limited to 'tests')
-rw-r--r--tests/main.cpp49
1 files changed, 28 insertions, 21 deletions
diff --git a/tests/main.cpp b/tests/main.cpp
index afa1514..e8c164f 100644
--- a/tests/main.cpp
+++ b/tests/main.cpp
@@ -4,9 +4,9 @@
* Lesser General Public License version 3 or any later version.
*/
-#include <sirit/sirit.h>
#include <cstdio>
#include <cstdlib>
+#include <sirit/sirit.h>
using u32 = uint32_t;
@@ -18,7 +18,7 @@ public:
void Generate() {
AddCapability(spv::Capability::Shader);
SetMemoryModel(spv::AddressingModel::Logical, spv::MemoryModel::GLSL450);
-
+
const auto t_void = Name(OpTypeVoid(), "void");
const auto t_uint = Name(OpTypeInt(32, false), "uint");
const auto t_float = Name(OpTypeFloat(32), "float");
@@ -26,45 +26,52 @@ public:
const auto float4 = Name(OpTypeVector(t_float, 4), "float4");
const auto in_float = Name(OpTypePointer(spv::StorageClass::Input, t_float), "in_float");
const auto in_float4 = Name(OpTypePointer(spv::StorageClass::Input, float4), "in_float4");
- const auto out_float4 = Name(OpTypePointer(spv::StorageClass::Output, float4), "out_float4");
+ const auto out_float4 =
+ Name(OpTypePointer(spv::StorageClass::Output, float4), "out_float4");
+
+ const auto gl_per_vertex = Name(OpTypeStruct(float4), "gl_PerVertex");
+ const auto gl_per_vertex_ptr =
+ Name(OpTypePointer(spv::StorageClass::Output, gl_per_vertex), "out_gl_PerVertex");
- const auto gl_per_vertex = Name(OpTypeStruct({float4}), "gl_PerVertex");
- const auto gl_per_vertex_ptr = Name(OpTypePointer(spv::StorageClass::Output, gl_per_vertex), "out_gl_PerVertex");
-
const auto in_pos = Name(OpVariable(in_float4, spv::StorageClass::Input), "in_pos");
- const auto per_vertex = Name(OpVariable(gl_per_vertex_ptr, spv::StorageClass::Output), "per_vertex");
+ const auto per_vertex =
+ Name(OpVariable(gl_per_vertex_ptr, spv::StorageClass::Output), "per_vertex");
- Decorate(in_pos, spv::Decoration::Location, {0});
+ Decorate(in_pos, spv::Decoration::Location, 0);
Decorate(gl_per_vertex, spv::Decoration::Block);
Decorate(gl_per_vertex, spv::Decoration::Block);
- MemberDecorate(gl_per_vertex, 0, spv::Decoration::BuiltIn, {static_cast<u32>(spv::BuiltIn::Position)});
-
+ MemberDecorate(gl_per_vertex, 0, spv::Decoration::BuiltIn,
+ static_cast<u32>(spv::BuiltIn::Position));
+
AddGlobalVariable(in_pos);
AddGlobalVariable(per_vertex);
- const auto main_func = Emit(Name(OpFunction(t_void, spv::FunctionControlMask::MaskNone, OpTypeFunction(t_void)), "main"));
+ const auto main_func = Emit(
+ Name(OpFunction(t_void, spv::FunctionControlMask::MaskNone, OpTypeFunction(t_void)),
+ "main"));
Emit(OpLabel());
- const auto ptr_pos_x = Emit(OpAccessChain(in_float, in_pos, {Constant(t_uint, 0u)}));
- const auto ptr_pos_y = Emit(OpAccessChain(in_float, in_pos, {Constant(t_uint, 1u)}));
+ const auto ptr_pos_x = Emit(OpAccessChain(in_float, in_pos, Constant(t_uint, 0u)));
+ const auto ptr_pos_y = Emit(OpAccessChain(in_float, in_pos, Constant(t_uint, 1u)));
const auto pos_x = Emit(OpLoad(t_float, ptr_pos_x));
const auto pos_y = Emit(OpLoad(t_float, ptr_pos_y));
auto tmp_position = Emit(OpUndef(float4));
- Decorate(tmp_position, spv::Decoration::FPRoundingMode, {static_cast<u32>(spv::FPRoundingMode::RTE)});
- tmp_position = Emit(OpCompositeInsert(float4, pos_x, tmp_position, {0}));
- tmp_position = Emit(OpCompositeInsert(float4, pos_y, tmp_position, {1}));
- tmp_position = Emit(OpCompositeInsert(float4, Constant(t_float, 0.f), tmp_position, {2}));
- tmp_position = Emit(OpCompositeInsert(float4, Constant(t_float, 1.f), tmp_position, {3}));
-
- const auto gl_position = Emit(OpAccessChain(out_float4, per_vertex, {Constant(t_uint, 0u)}));
+ Decorate(tmp_position, spv::Decoration::FPRoundingMode,
+ static_cast<u32>(spv::FPRoundingMode::RTE));
+ tmp_position = Emit(OpCompositeInsert(float4, pos_x, tmp_position, 0));
+ tmp_position = Emit(OpCompositeInsert(float4, pos_y, tmp_position, 1));
+ tmp_position = Emit(OpCompositeInsert(float4, Constant(t_float, 0.f), tmp_position, 2));
+ tmp_position = Emit(OpCompositeInsert(float4, Constant(t_float, 1.f), tmp_position, 3));
+
+ const auto gl_position = Emit(OpAccessChain(out_float4, per_vertex, Constant(t_uint, 0u)));
Emit(OpStore(gl_position, tmp_position));
Emit(OpReturn());
Emit(OpFunctionEnd());
- AddEntryPoint(spv::ExecutionModel::Vertex, main_func, "main", {in_pos, per_vertex});
+ AddEntryPoint(spv::ExecutionModel::Vertex, main_func, "main", in_pos, per_vertex);
}
};