Fix nonsemantic debuginfo line attribution for cooperative matrix
* Generate debuginfo for coopmat types, treating them as an opaque composite. Restore the debug source location after calling convertGlslangToSpvType, fixes the line info in this unit test * Add a cooperative matrix test case, based on the shader from https://github.com/jeffbolznv/vk_cooperative_matrix_perf/blob/master/shaders/shmem.comp
This commit is contained in:
parent
46ef757e04
commit
ca04c2a16a
9 changed files with 797 additions and 18 deletions
|
|
@ -2858,9 +2858,16 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
|
|||
// SPIR-V, for an out parameter
|
||||
std::vector<spv::Id> temporaryLvalues; // temporaries to pass, as proxies for complexLValues
|
||||
|
||||
auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ?
|
||||
invertedType :
|
||||
convertGlslangToSpvType(node->getType()); };
|
||||
auto resultType = [&invertedType, &node, this](){
|
||||
if (invertedType != spv::NoType) {
|
||||
return invertedType;
|
||||
} else {
|
||||
auto ret = convertGlslangToSpvType(node->getType());
|
||||
// convertGlslangToSpvType may clobber the debug location, reset it
|
||||
builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename());
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
// try texturing
|
||||
result = createImageTextureFunctionCall(node);
|
||||
|
|
|
|||
|
|
@ -439,6 +439,43 @@ Id Builder::makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id col
|
|||
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
|
||||
module.mapInstruction(type);
|
||||
|
||||
if (emitNonSemanticShaderDebugInfo)
|
||||
{
|
||||
// Find a name for one of the parameters. It can either come from debuginfo for another
|
||||
// type, or an OpName from a constant.
|
||||
auto const findName = [&](Id id) {
|
||||
Id id2 = debugId[id];
|
||||
for (auto &t : groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic]) {
|
||||
if (t->getResultId() == id2) {
|
||||
for (auto &s : strings) {
|
||||
if (s->getResultId() == t->getIdOperand(2)) {
|
||||
return s->getNameString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (auto &t : names) {
|
||||
if (t->getIdOperand(0) == id) {
|
||||
return t->getNameString();
|
||||
}
|
||||
}
|
||||
return "unknown";
|
||||
};
|
||||
std::string debugName = "coopmat<";
|
||||
debugName += std::string(findName(component)) + ", ";
|
||||
if (isConstantScalar(scope)) {
|
||||
debugName += std::string("gl_Scope") + std::string(spv::ScopeToString((spv::Scope)getConstantScalar(scope))) + ", ";
|
||||
} else {
|
||||
debugName += std::string(findName(scope)) + ", ";
|
||||
}
|
||||
debugName += std::string(findName(rows)) + ", ";
|
||||
debugName += std::string(findName(cols)) + ">";
|
||||
// There's no nonsemantic debug info instruction for cooperative matrix types,
|
||||
// use opaque composite instead.
|
||||
auto const debugResultId = makeCompositeDebugType({}, debugName.c_str(), NonSemanticShaderDebugInfo100Structure, true);
|
||||
debugId[type->getResultId()] = debugResultId;
|
||||
}
|
||||
|
||||
return type->getResultId();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@
|
|||
#define SpvBuilder_H
|
||||
|
||||
#include "Logger.h"
|
||||
#define SPV_ENABLE_UTILITY_CODE
|
||||
#include "spirv.hpp"
|
||||
#include "spvIR.h"
|
||||
namespace spv {
|
||||
|
|
|
|||
|
|
@ -2772,6 +2772,20 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
|||
case OpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break;
|
||||
}
|
||||
}
|
||||
|
||||
inline const char* ScopeToString(Scope value) {
|
||||
switch (value) {
|
||||
case ScopeCrossDevice: return "CrossDevice";
|
||||
case ScopeDevice: return "Device";
|
||||
case ScopeWorkgroup: return "Workgroup";
|
||||
case ScopeSubgroup: return "Subgroup";
|
||||
case ScopeInvocation: return "Invocation";
|
||||
case ScopeQueueFamily: return "QueueFamily";
|
||||
case ScopeShaderCallKHR: return "ShaderCallKHR";
|
||||
default: return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* SPV_ENABLE_UTILITY_CODE */
|
||||
|
||||
// Overload bitwise operators for mask bit combining
|
||||
|
|
|
|||
|
|
@ -189,6 +189,15 @@ public:
|
|||
out.push_back(operands[op]);
|
||||
}
|
||||
|
||||
const char *getNameString() const {
|
||||
if (opCode == OpString) {
|
||||
return (const char *)&operands[0];
|
||||
} else {
|
||||
assert(opCode == OpName);
|
||||
return (const char *)&operands[1];
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
Instruction(const Instruction&);
|
||||
Id resultId;
|
||||
|
|
|
|||
623
Test/baseResults/spv.debuginfo.coopmatKHR.comp.out
Normal file
623
Test/baseResults/spv.debuginfo.coopmatKHR.comp.out
Normal file
|
|
@ -0,0 +1,623 @@
|
|||
spv.debuginfo.coopmatKHR.comp
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 8000b
|
||||
// Id's are bound by 380
|
||||
|
||||
Capability Shader
|
||||
Capability Float16
|
||||
Capability StorageUniformBufferBlock16
|
||||
Capability VulkanMemoryModelKHR
|
||||
Capability CooperativeMatrixKHR
|
||||
Extension "SPV_KHR_16bit_storage"
|
||||
Extension "SPV_KHR_cooperative_matrix"
|
||||
Extension "SPV_KHR_non_semantic_info"
|
||||
Extension "SPV_KHR_storage_buffer_storage_class"
|
||||
Extension "SPV_KHR_vulkan_memory_model"
|
||||
1: ExtInstImport "NonSemantic.Shader.DebugInfo.100"
|
||||
3: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical VulkanKHR
|
||||
EntryPoint GLCompute 14 "main"
|
||||
ExecutionMode 14 LocalSize 1 1 1
|
||||
2: String "spv.debuginfo.coopmatKHR.comp"
|
||||
8: String "uint"
|
||||
16: String "main"
|
||||
19: String "// OpModuleProcessed auto-map-locations
|
||||
// OpModuleProcessed auto-map-bindings
|
||||
// OpModuleProcessed client vulkan100
|
||||
// OpModuleProcessed target-env vulkan1.0
|
||||
// OpModuleProcessed keep-uncalled
|
||||
// OpModuleProcessed entry-point main
|
||||
// OpModuleProcessed use-vulkan-memory-model
|
||||
// OpModuleProcessed use-vulkan-memory-model
|
||||
// OpModuleProcessed use-vulkan-memory-model
|
||||
// OpModuleProcessed use-vulkan-memory-model
|
||||
#line 1
|
||||
/*
|
||||
* Copyright (c) 2019-2024, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
#version 450 core
|
||||
#pragma use_vulkan_memory_model
|
||||
#extension GL_EXT_scalar_block_layout : enable
|
||||
#extension GL_KHR_memory_scope_semantics : enable
|
||||
#extension GL_KHR_cooperative_matrix : enable
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types_int32 : enable
|
||||
#extension GL_EXT_buffer_reference : enable
|
||||
#extension GL_EXT_control_flow_attributes : enable
|
||||
|
||||
layout(constant_id = 0) const uint lM = 1;
|
||||
layout(constant_id = 1) const uint lN = 1;
|
||||
layout(constant_id = 2) const uint lK = 1;
|
||||
layout(constant_id = 3) const uint TILE_M = 1;
|
||||
layout(constant_id = 4) const uint TILE_N = 1;
|
||||
layout(constant_id = 5) const uint TILE_K = 1;
|
||||
layout(constant_id = 6) const uint K = 1;
|
||||
|
||||
#define A_BITS 16
|
||||
#define A_TYPE float16_t
|
||||
#define C_BITS 16
|
||||
#define C_TYPE float16_t
|
||||
|
||||
buffer Output { C_TYPE x[]; } outputO;
|
||||
|
||||
shared uvec4 Ash[128];
|
||||
shared uvec4 Bsh[128];
|
||||
|
||||
const uint C_ROWS = 2;
|
||||
const uint C_COLS = 2;
|
||||
coopmat<C_TYPE, gl_ScopeSubgroup, lM, lN, gl_MatrixUseAccumulator> result[C_ROWS][C_COLS];
|
||||
|
||||
void main()
|
||||
{
|
||||
[[unroll]] for (uint i = 0; i < C_ROWS; ++i) {
|
||||
[[unroll]] for (uint j = 0; j < C_COLS; ++j) {
|
||||
result[i][j] = coopmat<C_TYPE, gl_ScopeSubgroup, lM, lN, gl_MatrixUseAccumulator>(0.0);
|
||||
}
|
||||
}
|
||||
|
||||
for (uint chunkK = 0; chunkK < K; chunkK += TILE_K) {
|
||||
[[unroll]] for (uint k = 0; k < TILE_K / lK; ++k)
|
||||
{
|
||||
coopmat<A_TYPE, gl_ScopeSubgroup, lM, lK, gl_MatrixUseA> matA[C_ROWS];
|
||||
[[unroll]] for (uint i = 0; i < C_ROWS; ++i) {
|
||||
coopMatLoad(matA[i], Ash, 0, 0, gl_CooperativeMatrixLayoutRowMajor);
|
||||
}
|
||||
|
||||
coopmat<A_TYPE, gl_ScopeSubgroup, lK, lN, gl_MatrixUseB> matB;
|
||||
[[unroll]] for (uint j = 0; j < C_COLS; ++j) {
|
||||
coopMatLoad(matB, Bsh, 0, 0, gl_CooperativeMatrixLayoutRowMajor);
|
||||
|
||||
[[unroll]] for (uint i = 0; i < C_ROWS; ++i) {
|
||||
result[i][j] = coopMatMulAdd(matA[i], matB, result[i][j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[[unroll]] for (uint i = 0; i < C_ROWS; ++i) {
|
||||
[[unroll]] for (uint j = 0; j < C_COLS; ++j) {
|
||||
coopMatStore(result[i][j], outputO.x, 0, 0, gl_CooperativeMatrixLayoutRowMajor);
|
||||
}
|
||||
}
|
||||
}
|
||||
"
|
||||
33: String "i"
|
||||
49: String "bool"
|
||||
54: String "j"
|
||||
71: String "float16_t"
|
||||
78: String "coopmat<float16_t, gl_ScopeSubgroup, lM, lN>"
|
||||
80: String "@coopmat<float16_t, gl_ScopeSubgroup, lM, lN>"
|
||||
90: String "result"
|
||||
106: String "int"
|
||||
116: String "chunkK"
|
||||
135: String "k"
|
||||
173: String "coopmat<float16_t, gl_ScopeSubgroup, lM, lK>"
|
||||
175: String "@coopmat<float16_t, gl_ScopeSubgroup, lM, lK>"
|
||||
180: String "tempArg"
|
||||
193: String "Ash"
|
||||
207: String "matA"
|
||||
237: String "coopmat<float16_t, gl_ScopeSubgroup, lK, lN>"
|
||||
239: String "@coopmat<float16_t, gl_ScopeSubgroup, lK, lN>"
|
||||
249: String "Bsh"
|
||||
256: String "matB"
|
||||
353: String "x"
|
||||
357: String "Output"
|
||||
363: String "outputO"
|
||||
SourceExtension "GL_EXT_buffer_reference"
|
||||
SourceExtension "GL_EXT_control_flow_attributes"
|
||||
SourceExtension "GL_EXT_scalar_block_layout"
|
||||
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16"
|
||||
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int32"
|
||||
SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8"
|
||||
SourceExtension "GL_KHR_cooperative_matrix"
|
||||
SourceExtension "GL_KHR_memory_scope_semantics"
|
||||
Name 14 "main"
|
||||
Name 31 "i"
|
||||
Name 52 "j"
|
||||
Name 74 "lM"
|
||||
Name 75 "lN"
|
||||
Name 88 "result"
|
||||
Name 114 "chunkK"
|
||||
Name 131 "K"
|
||||
Name 133 "k"
|
||||
Name 150 "TILE_K"
|
||||
Name 151 "lK"
|
||||
Name 154 "i"
|
||||
Name 178 "tempArg"
|
||||
Name 191 "Ash"
|
||||
Name 205 "matA"
|
||||
Name 218 "j"
|
||||
Name 242 "tempArg"
|
||||
Name 247 "Bsh"
|
||||
Name 254 "matB"
|
||||
Name 261 "i"
|
||||
Name 308 "i"
|
||||
Name 325 "j"
|
||||
Name 351 "Output"
|
||||
MemberName 351(Output) 0 "x"
|
||||
Name 361 "outputO"
|
||||
Name 378 "TILE_M"
|
||||
Name 379 "TILE_N"
|
||||
Decorate 74(lM) SpecId 0
|
||||
Decorate 75(lN) SpecId 1
|
||||
Decorate 131(K) SpecId 6
|
||||
Decorate 150(TILE_K) SpecId 5
|
||||
Decorate 151(lK) SpecId 2
|
||||
Decorate 349 ArrayStride 2
|
||||
Decorate 351(Output) Block
|
||||
MemberDecorate 351(Output) 0 Offset 0
|
||||
Decorate 361(outputO) Binding 0
|
||||
Decorate 361(outputO) DescriptorSet 0
|
||||
Decorate 378(TILE_M) SpecId 3
|
||||
Decorate 379(TILE_N) SpecId 4
|
||||
4: TypeVoid
|
||||
5: TypeFunction 4
|
||||
7: TypeInt 32 0
|
||||
10: 7(int) Constant 32
|
||||
11: 7(int) Constant 6
|
||||
12: 7(int) Constant 0
|
||||
9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12
|
||||
13: 7(int) Constant 3
|
||||
6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4
|
||||
18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19
|
||||
20: 7(int) Constant 55
|
||||
22: 7(int) Constant 1
|
||||
23: 7(int) Constant 4
|
||||
24: 7(int) Constant 2
|
||||
21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24
|
||||
17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20
|
||||
28: TypePointer Function 7(int)
|
||||
29: 7(int) Constant 7
|
||||
30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 29 12
|
||||
34: 7(int) Constant 57
|
||||
32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 33 9 18 34 12 17 23
|
||||
36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression)
|
||||
48: TypeBool
|
||||
50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 10 24 12
|
||||
55: 7(int) Constant 58
|
||||
53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 54 9 18 55 12 17 23
|
||||
70: TypeFloat 16
|
||||
73: 7(int) Constant 16
|
||||
72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 71 73 13 12
|
||||
74(lM): 7(int) SpecConstant 1
|
||||
75(lN): 7(int) SpecConstant 1
|
||||
76: TypeCooperativeMatrixKHR 70(float16_t) 13 74(lM) 75(lN) 24
|
||||
79: 7(int) Constant 53
|
||||
81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone)
|
||||
77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 78 22 18 79 12 21 80 81 13
|
||||
82: TypeArray 76 24
|
||||
83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 77 24
|
||||
84: TypeArray 82 24
|
||||
85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 83 24
|
||||
86: TypePointer Private 84
|
||||
87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 85 11 12
|
||||
88(result): 86(ptr) Variable Private
|
||||
91: 7(int) Constant 8
|
||||
89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 90 85 18 79 12 21 90 88(result) 91
|
||||
95: 7(int) Constant 59
|
||||
97:70(float16_t) Constant 0
|
||||
98: 76 ConstantComposite 97
|
||||
99: TypePointer Private 76
|
||||
100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 77 11 12
|
||||
105: TypeInt 32 1
|
||||
107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 106 10 23 12
|
||||
108: 105(int) Constant 1
|
||||
117: 7(int) Constant 63
|
||||
115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 116 9 18 117 12 17 23
|
||||
131(K): 7(int) SpecConstant 1
|
||||
136: 7(int) Constant 64
|
||||
134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 135 9 18 136 12 17 23
|
||||
150(TILE_K): 7(int) SpecConstant 1
|
||||
151(lK): 7(int) SpecConstant 1
|
||||
152: 7(int) SpecConstantOp 134 150(TILE_K) 151(lK)
|
||||
156: 7(int) Constant 67
|
||||
155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 33 9 18 156 12 17 23
|
||||
171: TypeCooperativeMatrixKHR 70(float16_t) 13 74(lM) 151(lK) 12
|
||||
174: 7(int) Constant 66
|
||||
172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 173 22 18 174 12 21 175 81 13
|
||||
176: TypePointer Function 171
|
||||
177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 172 29 12
|
||||
179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 180 172 18 174 12 17 23
|
||||
184: TypeVector 7(int) 4
|
||||
185: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 23
|
||||
186: 7(int) Constant 128
|
||||
187: TypeArray 184(ivec4) 186
|
||||
188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 185 186
|
||||
189: TypePointer Workgroup 187
|
||||
190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 188 23 12
|
||||
191(Ash): 189(ptr) Variable Workgroup
|
||||
194: 7(int) Constant 68
|
||||
192: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 193 188 18 194 12 21 193 191(Ash) 91
|
||||
195: TypePointer Workgroup 184(ivec4)
|
||||
196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 185 23 12
|
||||
199: 105(int) Constant 0
|
||||
201: TypeArray 171 24
|
||||
202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 172 24
|
||||
203: TypePointer Function 201
|
||||
204: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 202 29 12
|
||||
206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 207 202 18 174 12 17 23
|
||||
220: 7(int) Constant 72
|
||||
219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 54 9 18 220 12 17 23
|
||||
235: TypeCooperativeMatrixKHR 70(float16_t) 13 151(lK) 75(lN) 22
|
||||
238: 7(int) Constant 71
|
||||
236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 237 22 18 238 12 21 239 81 13
|
||||
240: TypePointer Function 235
|
||||
241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 236 29 12
|
||||
243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 180 236 18 238 12 17 23
|
||||
247(Bsh): 189(ptr) Variable Workgroup
|
||||
250: 7(int) Constant 73
|
||||
248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 249 188 18 250 12 21 249 247(Bsh) 91
|
||||
255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 256 236 18 238 12 17 23
|
||||
263: 7(int) Constant 75
|
||||
262: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 33 9 18 263 12 17 23
|
||||
280: 7(int) Constant 76
|
||||
310: 7(int) Constant 82
|
||||
309: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 33 9 18 310 12 17 23
|
||||
327: 7(int) Constant 83
|
||||
326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 54 9 18 327 12 17 23
|
||||
345: 7(int) Constant 84
|
||||
349: TypeRuntimeArray 70(float16_t)
|
||||
350: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 72 12
|
||||
351(Output): TypeStruct 349
|
||||
354: 7(int) Constant 46
|
||||
355: 7(int) Constant 24
|
||||
352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 353 350 18 354 355 12 12 13
|
||||
356: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 357 22 18 345 12 21 357 12 13 352
|
||||
358: TypePointer StorageBuffer 351(Output)
|
||||
359: 7(int) Constant 12
|
||||
360: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 356 359 12
|
||||
361(outputO): 358(ptr) Variable StorageBuffer
|
||||
362: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 363 356 18 345 12 21 363 361(outputO) 91
|
||||
364: TypePointer StorageBuffer 70(float16_t)
|
||||
365: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 359 12
|
||||
377: 7(int) Constant 87
|
||||
378(TILE_M): 7(int) SpecConstant 1
|
||||
379(TILE_N): 7(int) SpecConstant 1
|
||||
14(main): 4 Function None 5
|
||||
15: Label
|
||||
31(i): 28(ptr) Variable Function
|
||||
52(j): 28(ptr) Variable Function
|
||||
114(chunkK): 28(ptr) Variable Function
|
||||
133(k): 28(ptr) Variable Function
|
||||
154(i): 28(ptr) Variable Function
|
||||
178(tempArg): 176(ptr) Variable Function
|
||||
205(matA): 203(ptr) Variable Function
|
||||
218(j): 28(ptr) Variable Function
|
||||
242(tempArg): 240(ptr) Variable Function
|
||||
254(matB): 240(ptr) Variable Function
|
||||
261(i): 28(ptr) Variable Function
|
||||
308(i): 28(ptr) Variable Function
|
||||
325(j): 28(ptr) Variable Function
|
||||
26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12
|
||||
25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main)
|
||||
37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 34 34 12 12
|
||||
35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 32 31(i) 36
|
||||
Store 31(i) 12
|
||||
Branch 38
|
||||
38: Label
|
||||
42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 34 34 12 12
|
||||
LoopMerge 40 41 Unroll
|
||||
Branch 44
|
||||
44: Label
|
||||
46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 34 34 12 12
|
||||
45: 7(int) Load 31(i)
|
||||
51: 48(bool) ULessThan 45 24
|
||||
BranchConditional 51 39 40
|
||||
39: Label
|
||||
57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 55 55 12 12
|
||||
56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 53 52(j) 36
|
||||
Store 52(j) 12
|
||||
Branch 59
|
||||
59: Label
|
||||
63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 55 55 12 12
|
||||
LoopMerge 61 62 Unroll
|
||||
Branch 65
|
||||
65: Label
|
||||
67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 55 55 12 12
|
||||
66: 7(int) Load 52(j)
|
||||
69: 48(bool) ULessThan 66 24
|
||||
BranchConditional 69 60 61
|
||||
60: Label
|
||||
93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 95 95 12 12
|
||||
92: 7(int) Load 31(i)
|
||||
96: 7(int) Load 52(j)
|
||||
101: 99(ptr) AccessChain 88(result) 92 96
|
||||
Store 101 98
|
||||
Branch 62
|
||||
62: Label
|
||||
103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 55 55 12 12
|
||||
102: 7(int) Load 52(j)
|
||||
109: 7(int) IAdd 102 108
|
||||
Store 52(j) 109
|
||||
Branch 59
|
||||
61: Label
|
||||
Branch 41
|
||||
41: Label
|
||||
111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 34 34 12 12
|
||||
110: 7(int) Load 31(i)
|
||||
113: 7(int) IAdd 110 108
|
||||
Store 31(i) 113
|
||||
Branch 38
|
||||
40: Label
|
||||
119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 117 117 12 12
|
||||
118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 115 114(chunkK) 36
|
||||
Store 114(chunkK) 12
|
||||
Branch 121
|
||||
121: Label
|
||||
125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 117 117 12 12
|
||||
LoopMerge 123 124 None
|
||||
Branch 127
|
||||
127: Label
|
||||
129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 117 117 12 12
|
||||
128: 7(int) Load 114(chunkK)
|
||||
132: 48(bool) ULessThan 128 131(K)
|
||||
BranchConditional 132 122 123
|
||||
122: Label
|
||||
138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 136 136 12 12
|
||||
137: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 134 133(k) 36
|
||||
Store 133(k) 12
|
||||
Branch 140
|
||||
140: Label
|
||||
144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 136 136 12 12
|
||||
LoopMerge 142 143 Unroll
|
||||
Branch 146
|
||||
146: Label
|
||||
148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 136 136 12 12
|
||||
147: 7(int) Load 133(k)
|
||||
153: 48(bool) ULessThan 147 152
|
||||
BranchConditional 153 141 142
|
||||
141: Label
|
||||
158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12
|
||||
157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 155 154(i) 36
|
||||
Store 154(i) 12
|
||||
Branch 160
|
||||
160: Label
|
||||
164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12
|
||||
LoopMerge 162 163 Unroll
|
||||
Branch 166
|
||||
166: Label
|
||||
168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12
|
||||
167: 7(int) Load 154(i)
|
||||
170: 48(bool) ULessThan 167 24
|
||||
BranchConditional 170 161 162
|
||||
161: Label
|
||||
182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 174 174 12 12
|
||||
181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 179 178(tempArg) 36
|
||||
198: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 194 194 12 12
|
||||
197: 195(ptr) AccessChain 191(Ash) 12
|
||||
200: 171 CooperativeMatrixLoadKHR 197 199 12 MakePointerVisibleKHR NonPrivatePointerKHR 24
|
||||
Store 178(tempArg) 200
|
||||
209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 174 174 12 12
|
||||
208: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 206 205(matA) 36
|
||||
211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 194 194 12 12
|
||||
210: 7(int) Load 154(i)
|
||||
212: 171 Load 178(tempArg)
|
||||
213: 176(ptr) AccessChain 205(matA) 210
|
||||
Store 213 212
|
||||
Branch 163
|
||||
163: Label
|
||||
215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12
|
||||
214: 7(int) Load 154(i)
|
||||
217: 7(int) IAdd 214 108
|
||||
Store 154(i) 217
|
||||
Branch 160
|
||||
162: Label
|
||||
222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 220 220 12 12
|
||||
221: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 219 218(j) 36
|
||||
Store 218(j) 12
|
||||
Branch 224
|
||||
224: Label
|
||||
228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 220 220 12 12
|
||||
LoopMerge 226 227 Unroll
|
||||
Branch 230
|
||||
230: Label
|
||||
232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 220 220 12 12
|
||||
231: 7(int) Load 218(j)
|
||||
234: 48(bool) ULessThan 231 24
|
||||
BranchConditional 234 225 226
|
||||
225: Label
|
||||
245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 238 238 12 12
|
||||
244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(tempArg) 36
|
||||
252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 250 250 12 12
|
||||
251: 195(ptr) AccessChain 247(Bsh) 12
|
||||
253: 235 CooperativeMatrixLoadKHR 251 199 12 MakePointerVisibleKHR NonPrivatePointerKHR 24
|
||||
Store 242(tempArg) 253
|
||||
258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 238 238 12 12
|
||||
257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 255 254(matB) 36
|
||||
260: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 250 250 12 12
|
||||
259: 235 Load 242(tempArg)
|
||||
Store 254(matB) 259
|
||||
265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 263 263 12 12
|
||||
264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 262 261(i) 36
|
||||
Store 261(i) 12
|
||||
Branch 266
|
||||
266: Label
|
||||
270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 263 263 12 12
|
||||
LoopMerge 268 269 Unroll
|
||||
Branch 272
|
||||
272: Label
|
||||
274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 263 263 12 12
|
||||
273: 7(int) Load 261(i)
|
||||
276: 48(bool) ULessThan 273 24
|
||||
BranchConditional 276 267 268
|
||||
267: Label
|
||||
278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
279: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 280 280 12 12
|
||||
277: 7(int) Load 261(i)
|
||||
281: 7(int) Load 218(j)
|
||||
282: 7(int) Load 261(i)
|
||||
283: 176(ptr) AccessChain 205(matA) 282
|
||||
284: 171 Load 283
|
||||
285: 235 Load 254(matB)
|
||||
286: 7(int) Load 261(i)
|
||||
287: 7(int) Load 218(j)
|
||||
288: 99(ptr) AccessChain 88(result) 286 287
|
||||
289: 76 Load 288
|
||||
290: 76 CooperativeMatrixMulAddKHR 284 285 289
|
||||
291: 99(ptr) AccessChain 88(result) 277 281
|
||||
Store 291 290
|
||||
Branch 269
|
||||
269: Label
|
||||
293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
294: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 263 263 12 12
|
||||
292: 7(int) Load 261(i)
|
||||
295: 7(int) IAdd 292 108
|
||||
Store 261(i) 295
|
||||
Branch 266
|
||||
268: Label
|
||||
Branch 227
|
||||
227: Label
|
||||
297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
298: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 220 220 12 12
|
||||
296: 7(int) Load 218(j)
|
||||
299: 7(int) IAdd 296 108
|
||||
Store 218(j) 299
|
||||
Branch 224
|
||||
226: Label
|
||||
Branch 143
|
||||
143: Label
|
||||
301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
302: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 136 136 12 12
|
||||
300: 7(int) Load 133(k)
|
||||
303: 7(int) IAdd 300 108
|
||||
Store 133(k) 303
|
||||
Branch 140
|
||||
142: Label
|
||||
Branch 124
|
||||
124: Label
|
||||
305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 117 117 12 12
|
||||
304: 7(int) Load 114(chunkK)
|
||||
307: 7(int) IAdd 304 150(TILE_K)
|
||||
Store 114(chunkK) 307
|
||||
Branch 121
|
||||
123: Label
|
||||
312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
313: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 310 310 12 12
|
||||
311: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 309 308(i) 36
|
||||
Store 308(i) 12
|
||||
Branch 314
|
||||
314: Label
|
||||
318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 310 310 12 12
|
||||
LoopMerge 316 317 Unroll
|
||||
Branch 320
|
||||
320: Label
|
||||
322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 310 310 12 12
|
||||
321: 7(int) Load 308(i)
|
||||
324: 48(bool) ULessThan 321 24
|
||||
BranchConditional 324 315 316
|
||||
315: Label
|
||||
329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 327 327 12 12
|
||||
328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 326 325(j) 36
|
||||
Store 325(j) 12
|
||||
Branch 331
|
||||
331: Label
|
||||
335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
336: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 327 327 12 12
|
||||
LoopMerge 333 334 Unroll
|
||||
Branch 337
|
||||
337: Label
|
||||
339: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 327 327 12 12
|
||||
338: 7(int) Load 325(j)
|
||||
341: 48(bool) ULessThan 338 24
|
||||
BranchConditional 341 332 333
|
||||
332: Label
|
||||
343: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
344: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 345 345 12 12
|
||||
342: 7(int) Load 308(i)
|
||||
346: 7(int) Load 325(j)
|
||||
347: 99(ptr) AccessChain 88(result) 342 346
|
||||
348: 76 Load 347
|
||||
366: 364(ptr) AccessChain 361(outputO) 199 12
|
||||
CooperativeMatrixStoreKHR 366 348 199 12 None
|
||||
Branch 334
|
||||
334: Label
|
||||
368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 327 327 12 12
|
||||
367: 7(int) Load 325(j)
|
||||
370: 7(int) IAdd 367 108
|
||||
Store 325(j) 370
|
||||
Branch 331
|
||||
333: Label
|
||||
Branch 317
|
||||
317: Label
|
||||
372: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 310 310 12 12
|
||||
371: 7(int) Load 308(i)
|
||||
374: 7(int) IAdd 371 108
|
||||
Store 308(i) 374
|
||||
Branch 314
|
||||
316: Label
|
||||
375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17
|
||||
376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 377 377 12 12
|
||||
Return
|
||||
FunctionEnd
|
||||
|
|
@ -438,12 +438,12 @@ spv.debuginfo.hlsl.vert
|
|||
202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 203 203 16 16
|
||||
201: 8(float) Load 128(s)
|
||||
204: 8(float) Load 176(c)
|
||||
207: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 195 195 16 16
|
||||
206: 18(fvec3) CompositeConstruct 198 200 97
|
||||
207: 18(fvec3) CompositeConstruct 201 204 97
|
||||
208: 18(fvec3) CompositeConstruct 97 97 205
|
||||
209: 188 CompositeConstruct 206 207 208
|
||||
210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 195 195 16 16
|
||||
Store 192(mx) 209
|
||||
208: 18(fvec3) CompositeConstruct 201 204 97
|
||||
209: 18(fvec3) CompositeConstruct 97 97 205
|
||||
210: 188 CompositeConstruct 206 208 209
|
||||
Store 192(mx) 210
|
||||
212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 213 213 16 16
|
||||
211: 126(ptr) AccessChain 77(input) 134 52
|
||||
214: 8(float) Load 211
|
||||
|
|
@ -468,12 +468,12 @@ spv.debuginfo.hlsl.vert
|
|||
237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 238 238 16 16
|
||||
236: 8(float) Load 128(s)
|
||||
239: 8(float) Load 176(c)
|
||||
241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 230 230 16 16
|
||||
240: 18(fvec3) CompositeConstruct 233 97 235
|
||||
241: 18(fvec3) CompositeConstruct 97 205 97
|
||||
242: 18(fvec3) CompositeConstruct 236 97 239
|
||||
243: 188 CompositeConstruct 240 241 242
|
||||
244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 230 230 16 16
|
||||
Store 227(my) 243
|
||||
242: 18(fvec3) CompositeConstruct 97 205 97
|
||||
243: 18(fvec3) CompositeConstruct 236 97 239
|
||||
244: 188 CompositeConstruct 240 242 243
|
||||
Store 227(my) 244
|
||||
246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 247 247 16 16
|
||||
245: 126(ptr) AccessChain 77(input) 134 21
|
||||
248: 8(float) Load 245
|
||||
|
|
@ -499,12 +499,12 @@ spv.debuginfo.hlsl.vert
|
|||
273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 274 274 16 16
|
||||
272: 8(float) Load 128(s)
|
||||
275: 8(float) Load 176(c)
|
||||
277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 264 264 16 16
|
||||
276: 18(fvec3) CompositeConstruct 205 97 97
|
||||
277: 18(fvec3) CompositeConstruct 97 267 271
|
||||
278: 18(fvec3) CompositeConstruct 97 272 275
|
||||
279: 188 CompositeConstruct 276 277 278
|
||||
280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 264 264 16 16
|
||||
Store 261(mz) 279
|
||||
278: 18(fvec3) CompositeConstruct 97 267 271
|
||||
279: 18(fvec3) CompositeConstruct 97 272 275
|
||||
280: 188 CompositeConstruct 276 278 279
|
||||
Store 261(mz) 280
|
||||
286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 284 284 16 16
|
||||
285: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 282 281(rotMat) 85
|
||||
287: 188 Load 192(mx)
|
||||
|
|
|
|||
87
Test/spv.debuginfo.coopmatKHR.comp
Normal file
87
Test/spv.debuginfo.coopmatKHR.comp
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
* Copyright (c) 2019-2024, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
#version 450 core
|
||||
#pragma use_vulkan_memory_model
|
||||
#extension GL_EXT_scalar_block_layout : enable
|
||||
#extension GL_KHR_memory_scope_semantics : enable
|
||||
#extension GL_KHR_cooperative_matrix : enable
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types_int8 : enable
|
||||
#extension GL_EXT_shader_explicit_arithmetic_types_int32 : enable
|
||||
#extension GL_EXT_buffer_reference : enable
|
||||
#extension GL_EXT_control_flow_attributes : enable
|
||||
|
||||
layout(constant_id = 0) const uint lM = 1;
|
||||
layout(constant_id = 1) const uint lN = 1;
|
||||
layout(constant_id = 2) const uint lK = 1;
|
||||
layout(constant_id = 3) const uint TILE_M = 1;
|
||||
layout(constant_id = 4) const uint TILE_N = 1;
|
||||
layout(constant_id = 5) const uint TILE_K = 1;
|
||||
layout(constant_id = 6) const uint K = 1;
|
||||
|
||||
#define A_BITS 16
|
||||
#define A_TYPE float16_t
|
||||
#define C_BITS 16
|
||||
#define C_TYPE float16_t
|
||||
|
||||
buffer Output { C_TYPE x[]; } outputO;
|
||||
|
||||
shared uvec4 Ash[128];
|
||||
shared uvec4 Bsh[128];
|
||||
|
||||
const uint C_ROWS = 2;
|
||||
const uint C_COLS = 2;
|
||||
coopmat<C_TYPE, gl_ScopeSubgroup, lM, lN, gl_MatrixUseAccumulator> result[C_ROWS][C_COLS];
|
||||
|
||||
void main()
|
||||
{
|
||||
[[unroll]] for (uint i = 0; i < C_ROWS; ++i) {
|
||||
[[unroll]] for (uint j = 0; j < C_COLS; ++j) {
|
||||
result[i][j] = coopmat<C_TYPE, gl_ScopeSubgroup, lM, lN, gl_MatrixUseAccumulator>(0.0);
|
||||
}
|
||||
}
|
||||
|
||||
for (uint chunkK = 0; chunkK < K; chunkK += TILE_K) {
|
||||
[[unroll]] for (uint k = 0; k < TILE_K / lK; ++k)
|
||||
{
|
||||
coopmat<A_TYPE, gl_ScopeSubgroup, lM, lK, gl_MatrixUseA> matA[C_ROWS];
|
||||
[[unroll]] for (uint i = 0; i < C_ROWS; ++i) {
|
||||
coopMatLoad(matA[i], Ash, 0, 0, gl_CooperativeMatrixLayoutRowMajor);
|
||||
}
|
||||
|
||||
coopmat<A_TYPE, gl_ScopeSubgroup, lK, lN, gl_MatrixUseB> matB;
|
||||
[[unroll]] for (uint j = 0; j < C_COLS; ++j) {
|
||||
coopMatLoad(matB, Bsh, 0, 0, gl_CooperativeMatrixLayoutRowMajor);
|
||||
|
||||
[[unroll]] for (uint i = 0; i < C_ROWS; ++i) {
|
||||
result[i][j] = coopMatMulAdd(matA[i], matB, result[i][j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[[unroll]] for (uint i = 0; i < C_ROWS; ++i) {
|
||||
[[unroll]] for (uint j = 0; j < C_COLS; ++j) {
|
||||
coopMatStore(result[i][j], outputO.x, 0, 0, gl_CooperativeMatrixLayoutRowMajor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -959,6 +959,7 @@ INSTANTIATE_TEST_SUITE_P(
|
|||
"spv.debuginfo.include.glsl.frag",
|
||||
"spv.debuginfo.multiline.glsl.frag",
|
||||
"spv.debuginfo.implicit_br.glsl.frag",
|
||||
"spv.debuginfo.coopmatKHR.comp",
|
||||
})),
|
||||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue