Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2020-07-29 14:02:52 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2020-07-29 14:02:52 +0300
commit8a1843ab203b3eeae3a5116c9da517a4e9c78e62 (patch)
treedbb02af89f8ddc9068528319872a0666688badfd /shaders-hlsl-no-opt
parenteb580d665620f90a44fb38527ebdb93fb1c63cb5 (diff)
Add some test cases for complex type aliasing scenario.
Diffstat (limited to 'shaders-hlsl-no-opt')
-rw-r--r--shaders-hlsl-no-opt/asm/vert/complex-link-by-name.asm.vert119
1 files changed, 119 insertions, 0 deletions
diff --git a/shaders-hlsl-no-opt/asm/vert/complex-link-by-name.asm.vert b/shaders-hlsl-no-opt/asm/vert/complex-link-by-name.asm.vert
new file mode 100644
index 00000000..94a883c1
--- /dev/null
+++ b/shaders-hlsl-no-opt/asm/vert/complex-link-by-name.asm.vert
@@ -0,0 +1,119 @@
+; SPIR-V
+; Version: 1.0
+; Generator: Khronos Glslang Reference Front End; 10
+; Bound: 59
+; Schema: 0
+ OpCapability Shader
+ %1 = OpExtInstImport "GLSL.std.450"
+ OpMemoryModel Logical GLSL450
+ OpEntryPoint Vertex %main "main" %_ %output_location_0 %output_location_2 %output_location_3
+ OpSource GLSL 450
+ OpName %main "main"
+ OpName %Foo "Struct_vec4"
+ OpMemberName %Foo 0 "m0"
+ OpName %c "c"
+ OpName %Foo_0 "Struct_vec4"
+ OpMemberName %Foo_0 0 "m0"
+ OpName %Bar "Struct_vec4"
+ OpMemberName %Bar 0 "m0"
+ OpName %UBO "UBO"
+ OpMemberName %UBO 0 "m0"
+ OpMemberName %UBO 1 "m1"
+ OpName %ubo_binding_0 "ubo_binding_0"
+ OpName %Bar_0 "Struct_vec4"
+ OpMemberName %Bar_0 0 "m0"
+ OpName %b "b"
+ OpName %gl_PerVertex "gl_PerVertex"
+ OpMemberName %gl_PerVertex 0 "gl_Position"
+ OpMemberName %gl_PerVertex 1 "gl_PointSize"
+ OpMemberName %gl_PerVertex 2 "gl_ClipDistance"
+ OpMemberName %gl_PerVertex 3 "gl_CullDistance"
+ OpName %_ ""
+ OpName %VertexOut "VertexOut"
+ OpMemberName %VertexOut 0 "m0"
+ OpMemberName %VertexOut 1 "m1"
+ OpName %output_location_0 "output_location_0"
+ OpName %output_location_2 "output_location_2"
+ OpName %output_location_3 "output_location_3"
+ OpMemberDecorate %Foo_0 0 Offset 0
+ OpMemberDecorate %Bar 0 Offset 0
+ OpMemberDecorate %UBO 0 Offset 0
+ OpMemberDecorate %UBO 1 Offset 16
+ OpDecorate %UBO Block
+ OpDecorate %ubo_binding_0 DescriptorSet 0
+ OpDecorate %ubo_binding_0 Binding 0
+ OpMemberDecorate %gl_PerVertex 0 BuiltIn Position
+ OpMemberDecorate %gl_PerVertex 1 BuiltIn PointSize
+ OpMemberDecorate %gl_PerVertex 2 BuiltIn ClipDistance
+ OpMemberDecorate %gl_PerVertex 3 BuiltIn CullDistance
+ OpDecorate %gl_PerVertex Block
+ OpDecorate %VertexOut Block
+ OpDecorate %output_location_0 Location 0
+ OpDecorate %output_location_2 Location 2
+ OpDecorate %output_location_3 Location 3
+ %void = OpTypeVoid
+ %3 = OpTypeFunction %void
+ %float = OpTypeFloat 32
+ %v4float = OpTypeVector %float 4
+ %Foo = OpTypeStruct %v4float
+%_ptr_Function_Foo = OpTypePointer Function %Foo
+ %Foo_0 = OpTypeStruct %v4float
+ %Bar = OpTypeStruct %v4float
+ %UBO = OpTypeStruct %Foo_0 %Bar
+%_ptr_Uniform_UBO = OpTypePointer Uniform %UBO
+%ubo_binding_0 = OpVariable %_ptr_Uniform_UBO Uniform
+ %int = OpTypeInt 32 1
+ %int_0 = OpConstant %int 0
+%_ptr_Uniform_Foo_0 = OpTypePointer Uniform %Foo_0
+%_ptr_Function_v4float = OpTypePointer Function %v4float
+ %Bar_0 = OpTypeStruct %v4float
+%_ptr_Function_Bar_0 = OpTypePointer Function %Bar_0
+ %int_1 = OpConstant %int 1
+%_ptr_Uniform_Bar = OpTypePointer Uniform %Bar
+ %uint = OpTypeInt 32 0
+ %uint_1 = OpConstant %uint 1
+%_arr_float_uint_1 = OpTypeArray %float %uint_1
+%gl_PerVertex = OpTypeStruct %v4float %float %_arr_float_uint_1 %_arr_float_uint_1
+%_ptr_Output_gl_PerVertex = OpTypePointer Output %gl_PerVertex
+ %_ = OpVariable %_ptr_Output_gl_PerVertex Output
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+ %VertexOut = OpTypeStruct %Foo %Bar_0
+%_ptr_Output_VertexOut = OpTypePointer Output %VertexOut
+%output_location_0 = OpVariable %_ptr_Output_VertexOut Output
+%_ptr_Output_Foo = OpTypePointer Output %Foo
+%_ptr_Output_Bar_0 = OpTypePointer Output %Bar_0
+%output_location_2 = OpVariable %_ptr_Output_Foo Output
+%output_location_3 = OpVariable %_ptr_Output_Bar_0 Output
+ %main = OpFunction %void None %3
+ %5 = OpLabel
+ %c = OpVariable %_ptr_Function_Foo Function
+ %b = OpVariable %_ptr_Function_Bar_0 Function
+ %19 = OpAccessChain %_ptr_Uniform_Foo_0 %ubo_binding_0 %int_0
+ %20 = OpLoad %Foo_0 %19
+ %21 = OpCompositeExtract %v4float %20 0
+ %23 = OpAccessChain %_ptr_Function_v4float %c %int_0
+ OpStore %23 %21
+ %29 = OpAccessChain %_ptr_Uniform_Bar %ubo_binding_0 %int_1
+ %30 = OpLoad %Bar %29
+ %31 = OpCompositeExtract %v4float %30 0
+ %32 = OpAccessChain %_ptr_Function_v4float %b %int_0
+ OpStore %32 %31
+ %39 = OpAccessChain %_ptr_Function_v4float %c %int_0
+ %40 = OpLoad %v4float %39
+ %41 = OpAccessChain %_ptr_Function_v4float %b %int_0
+ %42 = OpLoad %v4float %41
+ %43 = OpFAdd %v4float %40 %42
+ %45 = OpAccessChain %_ptr_Output_v4float %_ %int_0
+ OpStore %45 %43
+ %49 = OpLoad %Foo %c
+ %51 = OpAccessChain %_ptr_Output_Foo %output_location_0 %int_0
+ OpStore %51 %49
+ %52 = OpLoad %Bar_0 %b
+ %54 = OpAccessChain %_ptr_Output_Bar_0 %output_location_0 %int_1
+ OpStore %54 %52
+ %56 = OpLoad %Foo %c
+ OpStore %output_location_2 %56
+ %58 = OpLoad %Bar_0 %b
+ OpStore %output_location_3 %58
+ OpReturn
+ OpFunctionEnd