diff options
author | Hans-Kristian Arntzen <post@arntzen-software.no> | 2021-03-08 16:09:32 +0300 |
---|---|---|
committer | Hans-Kristian Arntzen <post@arntzen-software.no> | 2021-03-08 16:15:27 +0300 |
commit | 4ca06c727836839d3b46fd92a06298f28cfafc06 (patch) | |
tree | 3df827eb25fd949ca6cadea4bb108c3b2b81b3d0 /shaders-msl-no-opt | |
parent | d57ab68a219831900fa2b8a3bd529413e01f3b9f (diff) |
Handle edge cases in OpCopyMemory.
Implement this by synthesizing an OpLoad/OpStore pair instead.
Diffstat (limited to 'shaders-msl-no-opt')
-rw-r--r-- | shaders-msl-no-opt/asm/tesc/copy-memory-control-point.asm.tesc | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/shaders-msl-no-opt/asm/tesc/copy-memory-control-point.asm.tesc b/shaders-msl-no-opt/asm/tesc/copy-memory-control-point.asm.tesc new file mode 100644 index 00000000..7c0a638f --- /dev/null +++ b/shaders-msl-no-opt/asm/tesc/copy-memory-control-point.asm.tesc @@ -0,0 +1,199 @@ +; SPIR-V +; Version: 1.0 +; Generator: Wine VKD3D Shader Compiler; 2 +; Bound: 126 +; Schema: 0 + OpCapability Tessellation + OpMemoryModel Logical GLSL450 + OpEntryPoint TessellationControl %1 "main" %4 %30 %80 %101 %103 %108 %110 %115 %117 + OpExecutionMode %1 OutputVertices 3 + OpExecutionMode %1 Triangles + OpExecutionMode %1 SpacingEqual + OpExecutionMode %1 VertexOrderCw + OpName %1 "main" + OpName %11 "opc" + OpName %14 "cb1_struct" + OpName %16 "cb0_0" + OpName %22 "vicp" + OpName %23 "fork0" + OpName %26 "vForkInstanceId" + OpName %34 "r0" + OpName %32 "fork0_epilogue" + OpName %75 "fork1" + OpName %81 "fork1_epilogue" + OpName %101 "v0" + OpName %103 "v1" + OpName %108 "vicp0" + OpName %110 "vocp0" + OpName %115 "vicp1" + OpName %117 "vocp1" + OpDecorate %4 BuiltIn InvocationId + OpDecorate %13 ArrayStride 16 + OpDecorate %14 Block + OpMemberDecorate %14 0 Offset 0 + OpDecorate %16 DescriptorSet 0 + OpDecorate %16 Binding 0 + OpDecorate %30 BuiltIn TessLevelOuter + OpDecorate %30 Patch + OpDecorate %30 Patch + OpDecorate %30 Patch + OpDecorate %30 Patch + OpDecorate %80 BuiltIn TessLevelInner + OpDecorate %80 Patch + OpDecorate %80 Patch + OpDecorate %101 Location 0 + OpDecorate %103 Location 1 + OpDecorate %108 Location 2 + OpDecorate %110 Location 3 + OpDecorate %115 Location 4 + OpDecorate %117 Location 5 + %2 = OpTypeInt 32 1 + %3 = OpTypePointer Input %2 + %4 = OpVariable %3 Input + %5 = OpTypeFloat 32 + %6 = OpTypeVector %5 4 + %7 = OpTypeInt 32 0 + %8 = OpConstant %7 4 + %9 = OpTypeArray %6 %8 + %10 = OpTypePointer Private %9 + %11 = OpVariable %10 Private + %12 = OpConstant %7 1 + %13 = OpTypeArray %6 %12 + %14 = OpTypeStruct %13 + %15 = OpTypePointer Uniform %14 + %16 = OpVariable %15 Uniform + %17 = OpConstant %7 3 + %18 = OpTypeArray %6 %17 + %19 = OpConstant %7 2 + %20 = OpTypeArray %18 %19 + %21 = OpTypePointer Private %20 + %22 = OpVariable %21 Private + %24 = OpTypeVoid + %25 = OpTypeFunction %24 %7 + %28 = OpTypeArray %5 %8 + %29 = OpTypePointer Output %28 + %30 = OpVariable %29 Output + %31 = OpConstant %7 0 + %33 = OpTypePointer Function %6 + %36 = OpTypePointer Function %5 + %38 = OpTypePointer Uniform %6 + %40 = OpTypePointer Uniform %5 + %46 = OpTypePointer Private %6 + %48 = OpTypePointer Private %5 + %52 = OpVariable %46 Private + %55 = OpVariable %46 Private + %58 = OpVariable %46 Private + %60 = OpTypeFunction %24 %46 %46 %46 + %69 = OpTypePointer Output %5 + %76 = OpTypeFunction %24 + %78 = OpTypeArray %5 %19 + %79 = OpTypePointer Output %78 + %80 = OpVariable %79 Output + %89 = OpVariable %46 Private + %91 = OpTypeFunction %24 %46 + %98 = OpTypePointer Private %18 + %100 = OpTypePointer Input %18 + %101 = OpVariable %100 Input + %103 = OpVariable %100 Input + %105 = OpTypeVector %5 3 + %106 = OpTypeArray %105 %17 + %107 = OpTypePointer Input %106 + %108 = OpVariable %107 Input + %109 = OpTypePointer Output %106 + %110 = OpVariable %109 Output + %111 = OpTypePointer Output %105 + %112 = OpTypePointer Input %105 + %115 = OpVariable %100 Input + %116 = OpTypePointer Output %18 + %117 = OpVariable %116 Output + %118 = OpTypePointer Output %6 + %119 = OpTypePointer Input %6 + %23 = OpFunction %24 None %25 + %26 = OpFunctionParameter %7 + %27 = OpLabel + %34 = OpVariable %33 Function + %35 = OpBitcast %5 %26 + %37 = OpInBoundsAccessChain %36 %34 %31 + OpStore %37 %35 + %39 = OpAccessChain %38 %16 %31 %31 + %41 = OpInBoundsAccessChain %40 %39 %31 + %42 = OpLoad %5 %41 + %43 = OpInBoundsAccessChain %36 %34 %31 + %44 = OpLoad %5 %43 + %45 = OpBitcast %2 %44 + %47 = OpAccessChain %46 %11 %45 + %49 = OpInBoundsAccessChain %48 %47 %31 + OpStore %49 %42 + %50 = OpAccessChain %46 %11 %31 + %51 = OpLoad %6 %50 + OpStore %52 %51 + %53 = OpAccessChain %46 %11 %12 + %54 = OpLoad %6 %53 + OpStore %55 %54 + %56 = OpAccessChain %46 %11 %19 + %57 = OpLoad %6 %56 + OpStore %58 %57 + %59 = OpFunctionCall %24 %32 %52 %55 %58 + OpReturn + OpFunctionEnd + %32 = OpFunction %24 None %60 + %61 = OpFunctionParameter %46 + %62 = OpFunctionParameter %46 + %63 = OpFunctionParameter %46 + %64 = OpLabel + %65 = OpLoad %6 %61 + %66 = OpLoad %6 %62 + %67 = OpLoad %6 %63 + %68 = OpCompositeExtract %5 %65 0 + %70 = OpAccessChain %69 %30 %31 + OpStore %70 %68 + %71 = OpCompositeExtract %5 %66 0 + %72 = OpAccessChain %69 %30 %12 + OpStore %72 %71 + %73 = OpCompositeExtract %5 %67 0 + %74 = OpAccessChain %69 %30 %19 + OpStore %74 %73 + OpReturn + OpFunctionEnd + %75 = OpFunction %24 None %76 + %77 = OpLabel + %82 = OpAccessChain %38 %16 %31 %31 + %83 = OpInBoundsAccessChain %40 %82 %31 + %84 = OpLoad %5 %83 + %85 = OpAccessChain %46 %11 %17 + %86 = OpInBoundsAccessChain %48 %85 %31 + OpStore %86 %84 + %87 = OpAccessChain %46 %11 %17 + %88 = OpLoad %6 %87 + OpStore %89 %88 + %90 = OpFunctionCall %24 %81 %89 + OpReturn + OpFunctionEnd + %81 = OpFunction %24 None %91 + %92 = OpFunctionParameter %46 + %93 = OpLabel + %94 = OpLoad %6 %92 + %95 = OpCompositeExtract %5 %94 0 + %96 = OpAccessChain %69 %80 %31 + OpStore %96 %95 + OpReturn + OpFunctionEnd + %1 = OpFunction %24 None %76 + %97 = OpLabel + %99 = OpInBoundsAccessChain %98 %22 %31 + OpCopyMemory %99 %101 + %102 = OpInBoundsAccessChain %98 %22 %12 + OpCopyMemory %102 %103 + %104 = OpLoad %2 %4 + %113 = OpAccessChain %111 %110 %104 + %114 = OpAccessChain %112 %108 %104 + OpCopyMemory %113 %114 + %120 = OpAccessChain %118 %117 %104 + %121 = OpAccessChain %119 %115 %104 + OpCopyMemory %120 %121 + %122 = OpFunctionCall %24 %23 %31 + %123 = OpFunctionCall %24 %23 %12 + %124 = OpFunctionCall %24 %23 %19 + %125 = OpFunctionCall %24 %75 + OpReturn + OpFunctionEnd |