From 297754cfe87b8e543f658608c641fea85db05fb3 Mon Sep 17 00:00:00 2001 From: steve-lunarg Date: Fri, 9 Dec 2016 11:13:23 -0700 Subject: [PATCH] Remapper: remove debug info for IDs stripped in other passes If some DCE is performed such as removing dead functions, then even if we are NOT stripping debug info, we still must remove the debug opcodes that refer to the now-dead IDs. Also, this adds a small change to perform no ID remapping if none is requested, making spirv-remap properly be a no-op if no options are given. --- SPIRV/SPVRemapper.cpp | 68 +++++++--- SPIRV/SPVRemapper.h | 4 +- Test/baseResults/remap.basic.dcefunc.frag.out | 29 ++--- Test/baseResults/remap.basic.none.frag.out | 24 ++-- Test/baseResults/remap.basic.strip.frag.out | 20 +-- .../remap.hlsl.sample.basic.none.frag.out | 22 ++-- .../remap.hlsl.sample.basic.strip.frag.out | 10 +- .../remap.hlsl.templatetypes.none.frag.out | 12 +- .../remap.similar_1a.none.frag.out | 116 ++++++++--------- .../remap.similar_1b.none.frag.out | 120 +++++++++--------- Test/baseResults/remap.switch.none.frag.out | 40 +++--- 11 files changed, 246 insertions(+), 219 deletions(-) diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index 5c551fb8..f30963b1 100755 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -327,12 +327,10 @@ namespace spv { bound(maxBound); // reset header ID bound to as big as it now needs to be } + // Mark debug instructions for stripping void spirvbin_t::stripDebug() { - if ((options & STRIP) == 0) - return; - - // build local Id and name maps + // Strip instructions in the stripOp set: debug info. process( [&](spv::Op opCode, unsigned start) { // remember opcodes we want to strip later @@ -343,6 +341,32 @@ namespace spv { op_fn_nop); } + // Mark instructions that refer to now-removed IDs for stripping + void spirvbin_t::stripDeadRefs() + { + process( + [&](spv::Op opCode, unsigned start) { + // strip opcodes pointing to removed data + switch (opCode) { + case spv::OpName: + case spv::OpMemberName: + case spv::OpDecorate: + case spv::OpMemberDecorate: + if (idPosR.find(asId(start+1)) == idPosR.end()) + stripInst(start); + break; + default: + break; // leave it alone + } + + return true; + }, + op_fn_nop); + + strip(); + } + + // Update local maps of ID, type, etc positions void spirvbin_t::buildLocalMaps() { msg(2, 2, std::string("build local maps: ")); @@ -351,7 +375,6 @@ namespace spv { idMapL.clear(); // preserve nameMap, so we don't clear that. fnPos.clear(); - fnPosDCE.clear(); fnCalls.clear(); typeConstPos.clear(); idPosR.clear(); @@ -366,10 +389,6 @@ namespace spv { // build local Id and name maps process( [&](spv::Op opCode, unsigned start) { - // remember opcodes we want to strip later - if ((options & STRIP) && isStripOp(opCode)) - stripInst(start); - unsigned word = start+1; spv::Id typeId = spv::NoResult; @@ -957,7 +976,6 @@ namespace spv { if (call_it == fnCalls.end() || call_it->second == 0) { changed = true; stripRange.push_back(fn->second); - fnPosDCE.insert(*fn); // decrease counts of called functions process( @@ -1011,11 +1029,15 @@ namespace spv { // Remove single-use function variables + associated decorations and names process( [&](spv::Op opCode, unsigned start) { - if ((opCode == spv::OpVariable && varUseCount[asId(start+2)] == 1) || - (opCode == spv::OpDecorate && varUseCount[asId(start+1)] == 1) || - (opCode == spv::OpName && varUseCount[asId(start+1)] == 1)) { - stripInst(start); - } + spv::Id id = spv::NoResult; + if (opCode == spv::OpVariable) + id = asId(start+2); + if (opCode == spv::OpDecorate || opCode == spv::OpName) + id = asId(start+1); + + if (id != spv::NoResult && varUseCount[id] == 1) + stripInst(start); + return true; }, op_fn_nop); @@ -1276,25 +1298,31 @@ namespace spv { // Set up opcode tables from SpvDoc spv::Parameterize(); - validate(); // validate header - buildLocalMaps(); + validate(); // validate header + buildLocalMaps(); // build ID maps msg(3, 4, std::string("ID bound: ") + std::to_string(bound())); + if (options & STRIP) stripDebug(); strip(); // strip out data we decided to eliminate if (options & OPT_LOADSTORE) optLoadStore(); if (options & OPT_FWD_LS) forwardLoadStores(); if (options & DCE_FUNCS) dceFuncs(); if (options & DCE_VARS) dceVars(); if (options & DCE_TYPES) dceTypes(); - strip(); // strip out data we decided to eliminate + + strip(); // strip out data we decided to eliminate + stripDeadRefs(); // remove references to things we DCEed + // after the last strip, we must clean any debug info referring to now-deleted data if (options & MAP_TYPES) mapTypeConst(); if (options & MAP_NAMES) mapNames(); if (options & MAP_FUNCS) mapFnBodies(); - mapRemainder(); // map any unmapped IDs - applyMap(); // Now remap each shader to the new IDs we've come up with + if (options & MAP_ALL) { + mapRemainder(); // map any unmapped IDs + applyMap(); // Now remap each shader to the new IDs we've come up with + } } // remap from a memory image diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h index b3c686aa..77c96582 100755 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -239,7 +239,8 @@ private: void applyMap(); // remap per local name map void mapRemainder(); // map any IDs we haven't touched yet - void stripDebug(); // strip debug info + void stripDebug(); // strip all debug info + void stripDeadRefs(); // strips debug info for now-dead references after DCE void strip(); // remove debug symbols std::vector spv; // SPIR words @@ -264,7 +265,6 @@ private: // Function start and end. use unordered_map because we'll have // many fewer functions than IDs. std::unordered_map fnPos; - std::unordered_map fnPosDCE; // deleted functions // Which functions are called, anywhere in the module, with a call count std::unordered_map fnCalls; diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out index 99b4d551..c28d90a3 100644 --- a/Test/baseResults/remap.basic.dcefunc.frag.out +++ b/Test/baseResults/remap.basic.dcefunc.frag.out @@ -3,34 +3,33 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 19 +// Id's are bound by 22 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 14 16 + EntryPoint Fragment 4 "main" 17 19 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" - Name 9 "dead_fn(" - Name 14 "outf4" - Name 16 "inf" + Name 17 "outf4" + Name 19 "inf" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 3 8: TypeFunction 7(fvec3) - 10: 6(float) Constant 0 - 11: 7(fvec3) ConstantComposite 10 10 10 - 12: TypeVector 6(float) 4 - 13: TypePointer Output 12(fvec4) - 14(outf4): 13(ptr) Variable Output - 15: TypePointer Input 6(float) - 16(inf): 15(ptr) Variable Input + 11: 6(float) Constant 0 + 12: 7(fvec3) ConstantComposite 11 11 11 + 15: TypeVector 6(float) 4 + 16: TypePointer Output 15(fvec4) + 17(outf4): 16(ptr) Variable Output + 18: TypePointer Input 6(float) + 19(inf): 18(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 17: 6(float) Load 16(inf) - 18: 12(fvec4) CompositeConstruct 17 17 17 17 - Store 14(outf4) 18 + 20: 6(float) Load 19(inf) + 21: 15(fvec4) CompositeConstruct 20 20 20 20 + Store 17(outf4) 21 Return FunctionEnd diff --git a/Test/baseResults/remap.basic.none.frag.out b/Test/baseResults/remap.basic.none.frag.out index 39e56b2e..44f5747b 100644 --- a/Test/baseResults/remap.basic.none.frag.out +++ b/Test/baseResults/remap.basic.none.frag.out @@ -3,18 +3,18 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 20 +// Id's are bound by 22 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 15 17 + EntryPoint Fragment 4 "main" 17 19 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" Name 9 "dead_fn(" - Name 15 "outf4" - Name 17 "inf" + Name 17 "outf4" + Name 19 "inf" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -22,16 +22,16 @@ Warning, version 450 is not yet complete; most version-specific features are pre 8: TypeFunction 7(fvec3) 11: 6(float) Constant 0 12: 7(fvec3) ConstantComposite 11 11 11 - 13: TypeVector 6(float) 4 - 14: TypePointer Output 13(fvec4) - 15(outf4): 14(ptr) Variable Output - 16: TypePointer Input 6(float) - 17(inf): 16(ptr) Variable Input + 15: TypeVector 6(float) 4 + 16: TypePointer Output 15(fvec4) + 17(outf4): 16(ptr) Variable Output + 18: TypePointer Input 6(float) + 19(inf): 18(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 18: 6(float) Load 17(inf) - 19: 13(fvec4) CompositeConstruct 18 18 18 18 - Store 15(outf4) 19 + 20: 6(float) Load 19(inf) + 21: 15(fvec4) CompositeConstruct 20 20 20 20 + Store 17(outf4) 21 Return FunctionEnd 9(dead_fn(): 7(fvec3) Function None 8 diff --git a/Test/baseResults/remap.basic.strip.frag.out b/Test/baseResults/remap.basic.strip.frag.out index 27c0874b..ab1a003a 100644 --- a/Test/baseResults/remap.basic.strip.frag.out +++ b/Test/baseResults/remap.basic.strip.frag.out @@ -3,12 +3,12 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 20 +// Id's are bound by 22 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 15 17 + EntryPoint Fragment 4 "main" 17 19 ExecutionMode 4 OriginUpperLeft 2: TypeVoid 3: TypeFunction 2 @@ -17,16 +17,16 @@ Warning, version 450 is not yet complete; most version-specific features are pre 8: TypeFunction 7(fvec3) 11: 6(float) Constant 0 12: 7(fvec3) ConstantComposite 11 11 11 - 13: TypeVector 6(float) 4 - 14: TypePointer Output 13(fvec4) - 15: 14(ptr) Variable Output - 16: TypePointer Input 6(float) - 17: 16(ptr) Variable Input + 15: TypeVector 6(float) 4 + 16: TypePointer Output 15(fvec4) + 17: 16(ptr) Variable Output + 18: TypePointer Input 6(float) + 19: 18(ptr) Variable Input 4: 2 Function None 3 5: Label - 18: 6(float) Load 17 - 19: 13(fvec4) CompositeConstruct 18 18 18 18 - Store 15 19 + 20: 6(float) Load 19 + 21: 15(fvec4) CompositeConstruct 20 20 20 20 + Store 17 21 Return FunctionEnd 9: 7(fvec3) Function None 8 diff --git a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out index 28c384ce..51ad1a8b 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out @@ -3,7 +3,7 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 190 +// Id's are bound by 191 Capability Shader Capability Sampled1D @@ -57,9 +57,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented Name 173 "psout" Name 180 "Color" Name 184 "Depth" - Name 187 "g_sSamp2d" - Name 188 "g_sSamp2D_b" - Name 189 "g_tTex1df4a" + Name 188 "g_sSamp2d" + Name 189 "g_sSamp2D_b" + Name 190 "g_tTex1df4a" Decorate 41(g_tTex1df4) DescriptorSet 0 Decorate 41(g_tTex1df4) Binding 0 Decorate 45(g_sSamp) DescriptorSet 0 @@ -77,10 +77,10 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented Decorate 165(g_tTexcdu4) DescriptorSet 0 Decorate 180(Color) Location 0 Decorate 184(Depth) BuiltIn FragDepth - Decorate 187(g_sSamp2d) DescriptorSet 0 - Decorate 188(g_sSamp2D_b) DescriptorSet 0 - Decorate 189(g_tTex1df4a) DescriptorSet 0 - Decorate 189(g_tTex1df4a) Binding 1 + Decorate 188(g_sSamp2d) DescriptorSet 0 + Decorate 189(g_sSamp2D_b) DescriptorSet 0 + Decorate 190(g_tTex1df4a) DescriptorSet 0 + Decorate 190(g_tTex1df4a) Binding 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -184,9 +184,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented 180(Color): 179(ptr) Variable Output 183: TypePointer Output 35(float) 184(Depth): 183(ptr) Variable Output - 187(g_sSamp2d): 44(ptr) Variable UniformConstant -188(g_sSamp2D_b): 44(ptr) Variable UniformConstant -189(g_tTex1df4a): 40(ptr) Variable UniformConstant + 188(g_sSamp2d): 44(ptr) Variable UniformConstant +189(g_sSamp2D_b): 44(ptr) Variable UniformConstant +190(g_tTex1df4a): 40(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(mtest): 8(ptr) Variable Function diff --git a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out index 10a8938d..f95d7eff 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out @@ -3,7 +3,7 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 190 +// Id's are bound by 191 Capability Shader Capability Sampled1D @@ -28,10 +28,10 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented Decorate 165 DescriptorSet 0 Decorate 180 Location 0 Decorate 184 BuiltIn FragDepth - Decorate 187 DescriptorSet 0 Decorate 188 DescriptorSet 0 Decorate 189 DescriptorSet 0 - Decorate 189 Binding 1 + Decorate 190 DescriptorSet 0 + Decorate 190 Binding 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -135,9 +135,9 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented 180: 179(ptr) Variable Output 183: TypePointer Output 35(float) 184: 183(ptr) Variable Output - 187: 44(ptr) Variable UniformConstant 188: 44(ptr) Variable UniformConstant - 189: 40(ptr) Variable UniformConstant + 189: 44(ptr) Variable UniformConstant + 190: 40(ptr) Variable UniformConstant 4: 2 Function None 3 5: Label 9: 8(ptr) Variable Function diff --git a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out index c3fab1a2..027f0207 100644 --- a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out +++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out @@ -1,13 +1,13 @@ remap.hlsl.templatetypes.none.frag // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 149 +// Id's are bound by 150 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 146 148 + EntryPoint Fragment 4 "main" 146 149 ExecutionMode 4 OriginUpperLeft Name 4 "main" Name 9 "r00" @@ -39,9 +39,9 @@ remap.hlsl.templatetypes.none.frag Name 136 "r65" Name 141 "r66" Name 146 "@entryPointOutput" - Name 148 "input" + Name 149 "input" Decorate 146(@entryPointOutput) Location 0 - Decorate 148(input) Location 0 + Decorate 149(input) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -157,8 +157,8 @@ remap.hlsl.templatetypes.none.frag 144: 139 ConstantComposite 72 126 142 143 145: TypePointer Output 6(float) 146(@entryPointOutput): 145(ptr) Variable Output - 147: TypePointer Input 7(fvec4) - 148(input): 147(ptr) Variable Input + 148: TypePointer Input 7(fvec4) + 149(input): 148(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(r00): 8(ptr) Variable Function diff --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out index ad1273ae..910ef424 100644 --- a/Test/baseResults/remap.similar_1a.none.frag.out +++ b/Test/baseResults/remap.similar_1a.none.frag.out @@ -3,12 +3,12 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 82 +// Id's are bound by 86 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 50 69 71 + EntryPoint Fragment 4 "main" 53 73 75 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" @@ -18,13 +18,13 @@ Warning, version 450 is not yet complete; most version-specific features are pre Name 13 "bound" Name 17 "r" Name 19 "x" - Name 42 "param" - Name 50 "ini4" - Name 69 "outf4" - Name 71 "inf" - Name 74 "param" + Name 44 "param" + Name 53 "ini4" + Name 73 "outf4" + Name 75 "inf" Name 78 "param" - Decorate 50(ini4) Flat + Name 82 "param" + Decorate 53(ini4) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -37,35 +37,35 @@ Warning, version 450 is not yet complete; most version-specific features are pre 28: TypeBool 30: 8(float) Constant 1056964608 34: 6(int) Constant 1 - 38: 6(int) Constant 2 - 48: TypeVector 6(int) 4 - 49: TypePointer Input 48(ivec4) - 50(ini4): 49(ptr) Variable Input - 51: TypeInt 32 0 - 52: 51(int) Constant 1 - 53: TypePointer Input 6(int) - 56: 51(int) Constant 2 - 61: 51(int) Constant 0 - 67: TypeVector 8(float) 4 - 68: TypePointer Output 67(fvec4) - 69(outf4): 68(ptr) Variable Output - 70: TypePointer Input 8(float) - 71(inf): 70(ptr) Variable Input + 40: 6(int) Constant 2 + 51: TypeVector 6(int) 4 + 52: TypePointer Input 51(ivec4) + 53(ini4): 52(ptr) Variable Input + 54: TypeInt 32 0 + 55: 54(int) Constant 1 + 56: TypePointer Input 6(int) + 59: 54(int) Constant 2 + 64: 54(int) Constant 0 + 71: TypeVector 8(float) 4 + 72: TypePointer Output 71(fvec4) + 73(outf4): 72(ptr) Variable Output + 74: TypePointer Input 8(float) + 75(inf): 74(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 74(param): 7(ptr) Variable Function 78(param): 7(ptr) Variable Function - 72: 8(float) Load 71(inf) - 73: 6(int) ConvertFToS 72 - Store 74(param) 73 - 75: 8(float) FunctionCall 11(Test1(i1;) 74(param) - 76: 8(float) Load 71(inf) + 82(param): 7(ptr) Variable Function + 76: 8(float) Load 75(inf) 77: 6(int) ConvertFToS 76 Store 78(param) 77 - 79: 8(float) FunctionCall 14(Test2(i1;) 78(param) - 80: 8(float) FAdd 75 79 - 81: 67(fvec4) CompositeConstruct 80 80 80 80 - Store 69(outf4) 81 + 79: 8(float) FunctionCall 11(Test1(i1;) 78(param) + 80: 8(float) Load 75(inf) + 81: 6(int) ConvertFToS 80 + Store 82(param) 81 + 83: 8(float) FunctionCall 14(Test2(i1;) 82(param) + 84: 8(float) FAdd 79 83 + 85: 71(fvec4) CompositeConstruct 84 84 84 84 + Store 73(outf4) 85 Return FunctionEnd 11(Test1(i1;): 8(float) Function None 9 @@ -101,31 +101,31 @@ Warning, version 450 is not yet complete; most version-specific features are pre 14(Test2(i1;): 8(float) Function None 9 13(bound): 7(ptr) FunctionParameter 15: Label - 42(param): 7(ptr) Variable Function - 37: 6(int) Load 13(bound) - 39: 28(bool) SGreaterThan 37 38 - SelectionMerge 41 None - BranchConditional 39 40 45 - 40: Label - 43: 6(int) Load 13(bound) - Store 42(param) 43 - 44: 8(float) FunctionCall 11(Test1(i1;) 42(param) - ReturnValue 44 - 45: Label - 46: 6(int) Load 13(bound) - 47: 6(int) IMul 46 38 - 54: 53(ptr) AccessChain 50(ini4) 52 - 55: 6(int) Load 54 - 57: 53(ptr) AccessChain 50(ini4) 56 + 44(param): 7(ptr) Variable Function + 39: 6(int) Load 13(bound) + 41: 28(bool) SGreaterThan 39 40 + SelectionMerge 43 None + BranchConditional 41 42 48 + 42: Label + 45: 6(int) Load 13(bound) + Store 44(param) 45 + 46: 8(float) FunctionCall 11(Test1(i1;) 44(param) + ReturnValue 46 + 48: Label + 49: 6(int) Load 13(bound) + 50: 6(int) IMul 49 40 + 57: 56(ptr) AccessChain 53(ini4) 55 58: 6(int) Load 57 - 59: 6(int) IMul 55 58 - 60: 6(int) IAdd 47 59 - 62: 53(ptr) AccessChain 50(ini4) 61 - 63: 6(int) Load 62 - 64: 6(int) IAdd 60 63 - 65: 8(float) ConvertSToF 64 - ReturnValue 65 - 41: Label - 66: 8(float) Undef - ReturnValue 66 + 60: 56(ptr) AccessChain 53(ini4) 59 + 61: 6(int) Load 60 + 62: 6(int) IMul 58 61 + 63: 6(int) IAdd 50 62 + 65: 56(ptr) AccessChain 53(ini4) 64 + 66: 6(int) Load 65 + 67: 6(int) IAdd 63 66 + 68: 8(float) ConvertSToF 67 + ReturnValue 68 + 43: Label + 70: 8(float) Undef + ReturnValue 70 FunctionEnd diff --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out index b86fd4b6..ce79e00b 100644 --- a/Test/baseResults/remap.similar_1b.none.frag.out +++ b/Test/baseResults/remap.similar_1b.none.frag.out @@ -3,12 +3,12 @@ Warning, version 450 is not yet complete; most version-specific features are pre // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 87 +// Id's are bound by 91 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 55 74 76 + EntryPoint Fragment 4 "main" 58 78 80 ExecutionMode 4 OriginUpperLeft Source GLSL 450 Name 4 "main" @@ -18,13 +18,13 @@ Warning, version 450 is not yet complete; most version-specific features are pre Name 13 "bound" Name 17 "r" Name 19 "x" - Name 47 "param" - Name 55 "ini4" - Name 74 "outf4" - Name 76 "inf" - Name 79 "param" + Name 49 "param" + Name 58 "ini4" + Name 78 "outf4" + Name 80 "inf" Name 83 "param" - Decorate 55(ini4) Flat + Name 87 "param" + Decorate 58(ini4) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -38,36 +38,36 @@ Warning, version 450 is not yet complete; most version-specific features are pre 30: 8(float) Constant 1056964608 34: 6(int) Constant 1 36: 8(float) Constant 1045220557 - 41: 6(int) Constant 2 - 51: 6(int) Constant 4 - 53: TypeVector 6(int) 4 - 54: TypePointer Input 53(ivec4) - 55(ini4): 54(ptr) Variable Input - 56: TypeInt 32 0 - 57: 56(int) Constant 1 - 58: TypePointer Input 6(int) - 61: 56(int) Constant 2 - 66: 56(int) Constant 0 - 72: TypeVector 8(float) 4 - 73: TypePointer Output 72(fvec4) - 74(outf4): 73(ptr) Variable Output - 75: TypePointer Input 8(float) - 76(inf): 75(ptr) Variable Input + 43: 6(int) Constant 2 + 54: 6(int) Constant 4 + 56: TypeVector 6(int) 4 + 57: TypePointer Input 56(ivec4) + 58(ini4): 57(ptr) Variable Input + 59: TypeInt 32 0 + 60: 59(int) Constant 1 + 61: TypePointer Input 6(int) + 64: 59(int) Constant 2 + 69: 59(int) Constant 0 + 76: TypeVector 8(float) 4 + 77: TypePointer Output 76(fvec4) + 78(outf4): 77(ptr) Variable Output + 79: TypePointer Input 8(float) + 80(inf): 79(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 79(param): 7(ptr) Variable Function 83(param): 7(ptr) Variable Function - 77: 8(float) Load 76(inf) - 78: 6(int) ConvertFToS 77 - Store 79(param) 78 - 80: 8(float) FunctionCall 11(Test1(i1;) 79(param) - 81: 8(float) Load 76(inf) + 87(param): 7(ptr) Variable Function + 81: 8(float) Load 80(inf) 82: 6(int) ConvertFToS 81 Store 83(param) 82 - 84: 8(float) FunctionCall 14(Test2(i1;) 83(param) - 85: 8(float) FAdd 80 84 - 86: 72(fvec4) CompositeConstruct 85 85 85 85 - Store 74(outf4) 86 + 84: 8(float) FunctionCall 11(Test1(i1;) 83(param) + 85: 8(float) Load 80(inf) + 86: 6(int) ConvertFToS 85 + Store 87(param) 86 + 88: 8(float) FunctionCall 14(Test2(i1;) 87(param) + 89: 8(float) FAdd 84 88 + 90: 76(fvec4) CompositeConstruct 89 89 89 89 + Store 78(outf4) 90 Return FunctionEnd 11(Test1(i1;): 8(float) Function None 9 @@ -106,32 +106,32 @@ Warning, version 450 is not yet complete; most version-specific features are pre 14(Test2(i1;): 8(float) Function None 9 13(bound): 7(ptr) FunctionParameter 15: Label - 47(param): 7(ptr) Variable Function - 40: 6(int) Load 13(bound) - 42: 28(bool) SGreaterThan 40 41 - SelectionMerge 44 None - BranchConditional 42 43 49 - 43: Label - 45: 6(int) Load 13(bound) - 46: 6(int) IMul 45 41 - Store 47(param) 46 - 48: 8(float) FunctionCall 11(Test1(i1;) 47(param) - ReturnValue 48 - 49: Label - 50: 6(int) Load 13(bound) - 52: 6(int) IMul 50 51 - 59: 58(ptr) AccessChain 55(ini4) 57 - 60: 6(int) Load 59 - 62: 58(ptr) AccessChain 55(ini4) 61 + 49(param): 7(ptr) Variable Function + 42: 6(int) Load 13(bound) + 44: 28(bool) SGreaterThan 42 43 + SelectionMerge 46 None + BranchConditional 44 45 52 + 45: Label + 47: 6(int) Load 13(bound) + 48: 6(int) IMul 47 43 + Store 49(param) 48 + 50: 8(float) FunctionCall 11(Test1(i1;) 49(param) + ReturnValue 50 + 52: Label + 53: 6(int) Load 13(bound) + 55: 6(int) IMul 53 54 + 62: 61(ptr) AccessChain 58(ini4) 60 63: 6(int) Load 62 - 64: 6(int) IMul 60 63 - 65: 6(int) IAdd 52 64 - 67: 58(ptr) AccessChain 55(ini4) 66 - 68: 6(int) Load 67 - 69: 6(int) IAdd 65 68 - 70: 8(float) ConvertSToF 69 - ReturnValue 70 - 44: Label - 71: 8(float) Undef - ReturnValue 71 + 65: 61(ptr) AccessChain 58(ini4) 64 + 66: 6(int) Load 65 + 67: 6(int) IMul 63 66 + 68: 6(int) IAdd 55 67 + 70: 61(ptr) AccessChain 58(ini4) 69 + 71: 6(int) Load 70 + 72: 6(int) IAdd 68 71 + 73: 8(float) ConvertSToF 72 + ReturnValue 73 + 46: Label + 75: 8(float) Undef + ReturnValue 75 FunctionEnd diff --git a/Test/baseResults/remap.switch.none.frag.out b/Test/baseResults/remap.switch.none.frag.out index 5d373ccf..68d075b2 100644 --- a/Test/baseResults/remap.switch.none.frag.out +++ b/Test/baseResults/remap.switch.none.frag.out @@ -5,7 +5,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to // Module Version 10000 // Generated by (magic number): 80001 -// Id's are bound by 44 +// Id's are bound by 48 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -20,8 +20,8 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to Decorate 23(FragColor) RelaxedPrecision Decorate 23(FragColor) Location 0 Decorate 29 RelaxedPrecision - Decorate 35 RelaxedPrecision - Decorate 41 RelaxedPrecision + Decorate 36 RelaxedPrecision + Decorate 43 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -36,12 +36,12 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to 23(FragColor): 22(ptr) Variable Output 24: 10(int) Constant 0 27: 6(float) Constant 0 - 30: 10(int) Constant 1 - 33: 6(float) Constant 1065353216 - 36: 10(int) Constant 2 - 39: 6(float) Constant 1073741824 - 42: 6(float) Constant 3212836864 - 43: 7(fvec4) ConstantComposite 42 42 42 42 + 31: 10(int) Constant 1 + 34: 6(float) Constant 1065353216 + 38: 10(int) Constant 2 + 41: 6(float) Constant 1073741824 + 45: 6(float) Constant 3212836864 + 46: 7(fvec4) ConstantComposite 45 45 45 45 4(main): 2 Function None 3 5: Label 13: 12(ptr) AccessChain 9(in0) 11 @@ -53,7 +53,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to case 1: 18 case 2: 19 20: Label - Store 23(FragColor) 43 + Store 23(FragColor) 46 Branch 21 17: Label 25: 12(ptr) AccessChain 9(in0) 24 @@ -63,18 +63,18 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to Store 23(FragColor) 29 Branch 21 18: Label - 31: 12(ptr) AccessChain 9(in0) 30 - 32: 6(float) Load 31 - 34: 6(float) FAdd 32 33 - 35: 7(fvec4) CompositeConstruct 34 34 34 34 - Store 23(FragColor) 35 + 32: 12(ptr) AccessChain 9(in0) 31 + 33: 6(float) Load 32 + 35: 6(float) FAdd 33 34 + 36: 7(fvec4) CompositeConstruct 35 35 35 35 + Store 23(FragColor) 36 Branch 21 19: Label - 37: 12(ptr) AccessChain 9(in0) 36 - 38: 6(float) Load 37 - 40: 6(float) FAdd 38 39 - 41: 7(fvec4) CompositeConstruct 40 40 40 40 - Store 23(FragColor) 41 + 39: 12(ptr) AccessChain 9(in0) 38 + 40: 6(float) Load 39 + 42: 6(float) FAdd 40 41 + 43: 7(fvec4) CompositeConstruct 42 42 42 42 + Store 23(FragColor) 43 Branch 21 21: Label Return