Skip to content

Commit 4dc0370

Browse files
authored
[DirectX] Add DXIL_MODULE_FLAG for ShaderFlags. (#83217)
Add DXIL module flag bit offset for SHADER_FEATURE_FLAG. Added DXIL_MODULE_FLAG for DXIL module flag which does not have feature flag. Use DXILModuleFlags for ComputedShaderFlags instead of ShaderFeatureFlags. ComputedShaderFlags::getFeatureFlags() was added to get FeatureFlags. Rename DXContainerGlobals::getShaderFlags to DXContainerGlobals::getFeatureFlags. Fixes #57925
1 parent 01d8e1c commit 4dc0370

File tree

11 files changed

+109
-66
lines changed

11 files changed

+109
-66
lines changed

llvm/include/llvm/BinaryFormat/DXContainer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ enum class PartType {
141141
#include "DXContainerConstants.def"
142142
};
143143

144-
#define SHADER_FEATURE_FLAG(Num, Val, Str) Val = 1ull << Num,
144+
#define SHADER_FEATURE_FLAG(Num, DxilModuleNum, Val, Str) Val = 1ull << Num,
145145
enum class FeatureFlags : uint64_t {
146146
#include "DXContainerConstants.def"
147147
};

llvm/include/llvm/BinaryFormat/DXContainerConstants.def

Lines changed: 57 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,46 +9,63 @@ CONTAINER_PART(OSG1)
99
CONTAINER_PART(PSG1)
1010

1111
#undef CONTAINER_PART
12-
#endif
12+
#endif // CONTAINER_PART
1313

1414
#ifdef SHADER_FEATURE_FLAG
1515

16-
SHADER_FEATURE_FLAG(0, Doubles, "Double-precision floating point")
17-
SHADER_FEATURE_FLAG(1, ComputeShadersPlusRawAndStructuredBuffers, "Raw and Structured buffers")
18-
SHADER_FEATURE_FLAG(2, UAVsAtEveryStage, "UAVs at every shader stage")
19-
SHADER_FEATURE_FLAG(3, Max64UAVs, "64 UAV slots")
20-
SHADER_FEATURE_FLAG(4, MinimumPrecision, "Minimum-precision data types")
21-
SHADER_FEATURE_FLAG(5, DX11_1_DoubleExtensions, "Double-precision extensions for 11.1")
22-
SHADER_FEATURE_FLAG(6, DX11_1_ShaderExtensions, "Shader extensions for 11.1")
23-
SHADER_FEATURE_FLAG(7, LEVEL9ComparisonFiltering, "Comparison filtering for feature level 9")
24-
SHADER_FEATURE_FLAG(8, TiledResources, "Tiled resources")
25-
SHADER_FEATURE_FLAG(9, StencilRef, "PS Output Stencil Ref")
26-
SHADER_FEATURE_FLAG(10, InnerCoverage, "PS Inner Coverage")
27-
SHADER_FEATURE_FLAG(11, TypedUAVLoadAdditionalFormats, "Typed UAV Load Additional Formats")
28-
SHADER_FEATURE_FLAG(12, ROVs, "Raster Ordered UAVs")
29-
SHADER_FEATURE_FLAG(13, ViewportAndRTArrayIndexFromAnyShaderFeedingRasterizer, "SV_RenderTargetArrayIndex or SV_ViewportArrayIndex from any shader feeding rasterizer")
30-
SHADER_FEATURE_FLAG(14, WaveOps, "Wave level operations")
31-
SHADER_FEATURE_FLAG(15, Int64Ops, "64-Bit integer")
32-
SHADER_FEATURE_FLAG(16, ViewID, "View Instancing")
33-
SHADER_FEATURE_FLAG(17, Barycentrics, "Barycentrics")
34-
SHADER_FEATURE_FLAG(18, NativeLowPrecision, "Use native low precision")
35-
SHADER_FEATURE_FLAG(19, ShadingRate, "Shading Rate")
36-
SHADER_FEATURE_FLAG(20, Raytracing_Tier_1_1, "Raytracing tier 1.1 features")
37-
SHADER_FEATURE_FLAG(21, SamplerFeedback, "Sampler feedback")
38-
SHADER_FEATURE_FLAG(22, AtomicInt64OnTypedResource, "64-bit Atomics on Typed Resources")
39-
SHADER_FEATURE_FLAG(23, AtomicInt64OnGroupShared, "64-bit Atomics on Group Shared")
40-
SHADER_FEATURE_FLAG(24, DerivativesInMeshAndAmpShaders, "Derivatives in mesh and amplification shaders")
41-
SHADER_FEATURE_FLAG(25, ResourceDescriptorHeapIndexing, "Resource descriptor heap indexing")
42-
SHADER_FEATURE_FLAG(26, SamplerDescriptorHeapIndexing, "Sampler descriptor heap indexing")
43-
SHADER_FEATURE_FLAG(27, RESERVED, "<RESERVED>")
44-
SHADER_FEATURE_FLAG(28, AtomicInt64OnHeapResource, "64-bit Atomics on Heap Resources")
45-
SHADER_FEATURE_FLAG(29, AdvancedTextureOps, "Advanced Texture Ops")
46-
SHADER_FEATURE_FLAG(30, WriteableMSAATextures, "Writeable MSAA Textures")
47-
48-
SHADER_FEATURE_FLAG(31, NextUnusedBit, "Next reserved shader flag bit (not a flag)")
16+
// SHADER_FEATURE_FLAG(bit offset for the shader info flag, bit offset for DXIL module flag, name, description.
17+
18+
SHADER_FEATURE_FLAG(0, 2, Doubles, "Double-precision floating point")
19+
SHADER_FEATURE_FLAG(1, 17, ComputeShadersPlusRawAndStructuredBuffers, "Raw and Structured buffers")
20+
SHADER_FEATURE_FLAG(2, 16, UAVsAtEveryStage, "UAVs at every shader stage")
21+
SHADER_FEATURE_FLAG(3, 15, Max64UAVs, "64 UAV slots")
22+
SHADER_FEATURE_FLAG(4, -1, MinimumPrecision, "Minimum-precision data types")
23+
SHADER_FEATURE_FLAG(5, 6, DX11_1_DoubleExtensions, "Double-precision extensions for 11.1")
24+
SHADER_FEATURE_FLAG(6, 7, DX11_1_ShaderExtensions, "Shader extensions for 11.1")
25+
SHADER_FEATURE_FLAG(7, 14, LEVEL9ComparisonFiltering, "Comparison filtering for feature level 9")
26+
SHADER_FEATURE_FLAG(8, 12, TiledResources, "Tiled resources")
27+
SHADER_FEATURE_FLAG(9, 11, StencilRef, "PS Output Stencil Ref")
28+
SHADER_FEATURE_FLAG(10, 10, InnerCoverage, "PS Inner Coverage")
29+
SHADER_FEATURE_FLAG(11, 13, TypedUAVLoadAdditionalFormats, "Typed UAV Load Additional Formats")
30+
SHADER_FEATURE_FLAG(12, 18, ROVs, "Raster Ordered UAVs")
31+
SHADER_FEATURE_FLAG(13, 9, ViewportAndRTArrayIndexFromAnyShaderFeedingRasterizer, "SV_RenderTargetArrayIndex or SV_ViewportArrayIndex from any shader feeding rasterizer")
32+
SHADER_FEATURE_FLAG(14, 19, WaveOps, "Wave level operations")
33+
SHADER_FEATURE_FLAG(15, 20, Int64Ops, "64-Bit integer")
34+
SHADER_FEATURE_FLAG(16, 21, ViewID, "View Instancing")
35+
SHADER_FEATURE_FLAG(17, 22, Barycentrics, "Barycentrics")
36+
SHADER_FEATURE_FLAG(18, -1, NativeLowPrecision, "Use native low precision")
37+
SHADER_FEATURE_FLAG(19, 24, ShadingRate, "Shading Rate")
38+
SHADER_FEATURE_FLAG(20, 25, Raytracing_Tier_1_1, "Raytracing tier 1.1 features")
39+
SHADER_FEATURE_FLAG(21, 26, SamplerFeedback, "Sampler feedback")
40+
SHADER_FEATURE_FLAG(22, 27, AtomicInt64OnTypedResource, "64-bit Atomics on Typed Resources")
41+
SHADER_FEATURE_FLAG(23, 28, AtomicInt64OnGroupShared, "64-bit Atomics on Group Shared")
42+
SHADER_FEATURE_FLAG(24, 29, DerivativesInMeshAndAmpShaders, "Derivatives in mesh and amplification shaders")
43+
SHADER_FEATURE_FLAG(25, 30, ResourceDescriptorHeapIndexing, "Resource descriptor heap indexing")
44+
SHADER_FEATURE_FLAG(26, 31, SamplerDescriptorHeapIndexing, "Sampler descriptor heap indexing")
45+
SHADER_FEATURE_FLAG(27, 63, RESERVED, "<RESERVED>")
46+
SHADER_FEATURE_FLAG(28, 32, AtomicInt64OnHeapResource, "64-bit Atomics on Heap Resources")
47+
SHADER_FEATURE_FLAG(29, 34, AdvancedTextureOps, "Advanced Texture Ops")
48+
SHADER_FEATURE_FLAG(30, 35, WriteableMSAATextures, "Writeable MSAA Textures")
49+
50+
SHADER_FEATURE_FLAG(31, 36, NextUnusedBit, "Next reserved shader flag bit (not a flag)")
4951

5052
#undef SHADER_FEATURE_FLAG
51-
#endif
53+
#endif // SHADER_FEATURE_FLAG
54+
55+
#ifdef DXIL_MODULE_FLAG
56+
57+
// Only save DXIL module flags which not map to feature flags here.
58+
DXIL_MODULE_FLAG( 0, DisableOptimizations, "D3D11_1_SB_GLOBAL_FLAG_SKIP_OPTIMIZATION")
59+
DXIL_MODULE_FLAG( 1, DisableMathRefactoring, "D3D10_SB_GLOBAL_FLAG_REFACTORING_ALLOWED")
60+
DXIL_MODULE_FLAG( 3, ForceEarlyDepthStencil, "D3D11_SB_GLOBAL_FLAG_FORCE_EARLY_DEPTH_STENCIL")
61+
DXIL_MODULE_FLAG( 4, EnableRawAndStructuredBuffers, "D3D11_SB_GLOBAL_FLAG_ENABLE_RAW_AND_STRUCTURED_BUFFERS")
62+
DXIL_MODULE_FLAG( 5, LowPrecisionPresent, "D3D11_1_SB_GLOBAL_FLAG_ENABLE_MINIMUM_PRECISION")
63+
DXIL_MODULE_FLAG( 8, AllResourcesBound, "D3D12_SB_GLOBAL_FLAG_ALL_RESOURCES_BOUND")
64+
DXIL_MODULE_FLAG(23, UseNativeLowPrecision, "Native 16bit types enabled")
65+
DXIL_MODULE_FLAG(33, ResMayNotAlias, "Any UAV may not alias any other UAV")
66+
67+
#undef DXIL_MODULE_FLAG
68+
#endif // DXIL_MODULE_FLAG
5269

5370
#ifdef SEMANTIC_KIND
5471

@@ -86,7 +103,7 @@ SEMANTIC_KIND(30, CullPrimitive)
86103
SEMANTIC_KIND(30, Invalid)
87104

88105
#undef SEMANTIC_KIND
89-
#endif
106+
#endif // SEMANTIC_KIND
90107

91108
#ifdef COMPONENT_TYPE
92109

@@ -102,7 +119,7 @@ COMPONENT_TYPE(8, SInt64)
102119
COMPONENT_TYPE(9, Float64)
103120

104121
#undef COMPONENT_TYPE
105-
#endif
122+
#endif // COMPONENT_TYPE
106123

107124
#ifdef COMPONENT_PRECISION
108125

@@ -116,7 +133,7 @@ COMPONENT_PRECISION(0xf0, Any16)
116133
COMPONENT_PRECISION(0xf1, Any10)
117134

118135
#undef COMPONENT_PRECISION
119-
#endif
136+
#endif // COMPONENT_PRECISION
120137

121138
#ifdef INTERPOLATION_MODE
122139

@@ -131,7 +148,7 @@ INTERPOLATION_MODE(7, LinearNoperspectiveSample)
131148
INTERPOLATION_MODE(8, Invalid)
132149

133150
#undef INTERPOLATION_MODE
134-
#endif
151+
#endif // INTERPOLATION_MODE
135152

136153
#ifdef D3D_SYSTEM_VALUE
137154

@@ -165,4 +182,4 @@ D3D_SYSTEM_VALUE(70, InnerCoverage)
165182

166183
#undef D3D_SYSTEM_VALUE
167184

168-
#endif
185+
#endif // D3D_SYSTEM_VALUE

llvm/include/llvm/ObjectYAML/DXContainerYAML.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ struct DXILProgram {
5656
std::optional<std::vector<llvm::yaml::Hex8>> DXIL;
5757
};
5858

59-
#define SHADER_FEATURE_FLAG(Num, Val, Str) bool Val = false;
59+
#define SHADER_FEATURE_FLAG(Num, DxilModuleNum, Val, Str) bool Val = false;
6060
struct ShaderFeatureFlags {
6161
ShaderFeatureFlags() = default;
6262
ShaderFeatureFlags(uint64_t FlagData);

llvm/lib/ObjectYAML/DXContainerYAML.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ static_assert((uint64_t)dxbc::FeatureFlags::NextUnusedBit <= 1ull << 63,
2424
"Shader flag bits exceed enum size.");
2525

2626
DXContainerYAML::ShaderFeatureFlags::ShaderFeatureFlags(uint64_t FlagData) {
27-
#define SHADER_FEATURE_FLAG(Num, Val, Str) \
27+
#define SHADER_FEATURE_FLAG(Num, DxilModuleNum, Val, Str) \
2828
Val = (FlagData & (uint64_t)dxbc::FeatureFlags::Val) > 0;
2929
#include "llvm/BinaryFormat/DXContainerConstants.def"
3030
}
3131

3232
uint64_t DXContainerYAML::ShaderFeatureFlags::getEncodedFlags() {
3333
uint64_t Flag = 0;
34-
#define SHADER_FEATURE_FLAG(Num, Val, Str) \
34+
#define SHADER_FEATURE_FLAG(Num, DxilModuleNum, Val, Str) \
3535
if (Val) \
3636
Flag |= (uint64_t)dxbc::FeatureFlags::Val;
3737
#include "llvm/BinaryFormat/DXContainerConstants.def"
@@ -105,7 +105,8 @@ void MappingTraits<DXContainerYAML::DXILProgram>::mapping(
105105

106106
void MappingTraits<DXContainerYAML::ShaderFeatureFlags>::mapping(
107107
IO &IO, DXContainerYAML::ShaderFeatureFlags &Flags) {
108-
#define SHADER_FEATURE_FLAG(Num, Val, Str) IO.mapRequired(#Val, Flags.Val);
108+
#define SHADER_FEATURE_FLAG(Num, DxilModuleNum, Val, Str) \
109+
IO.mapRequired(#Val, Flags.Val);
109110
#include "llvm/BinaryFormat/DXContainerConstants.def"
110111
}
111112

llvm/lib/Target/DirectX/DXContainerGlobals.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ using namespace llvm::dxil;
2828
namespace {
2929
class DXContainerGlobals : public llvm::ModulePass {
3030

31-
GlobalVariable *getShaderFlags(Module &M);
31+
GlobalVariable *getFeatureFlags(Module &M);
3232
GlobalVariable *computeShaderHash(Module &M);
3333

3434
public:
@@ -53,21 +53,24 @@ class DXContainerGlobals : public llvm::ModulePass {
5353

5454
bool DXContainerGlobals::runOnModule(Module &M) {
5555
llvm::SmallVector<GlobalValue *> Globals;
56-
Globals.push_back(getShaderFlags(M));
56+
Globals.push_back(getFeatureFlags(M));
5757
Globals.push_back(computeShaderHash(M));
5858

5959
appendToCompilerUsed(M, Globals);
6060
return true;
6161
}
6262

63-
GlobalVariable *DXContainerGlobals::getShaderFlags(Module &M) {
64-
const uint64_t Flags =
65-
(uint64_t)(getAnalysis<ShaderFlagsAnalysisWrapper>().getShaderFlags());
63+
GlobalVariable *DXContainerGlobals::getFeatureFlags(Module &M) {
64+
const uint64_t FeatureFlags =
65+
static_cast<uint64_t>(getAnalysis<ShaderFlagsAnalysisWrapper>()
66+
.getShaderFlags()
67+
.getFeatureFlags());
6668

67-
Constant *FlagsConstant = ConstantInt::get(M.getContext(), APInt(64, Flags));
68-
auto *GV = new llvm::GlobalVariable(M, FlagsConstant->getType(), true,
69+
Constant *FeatureFlagsConstant =
70+
ConstantInt::get(M.getContext(), APInt(64, FeatureFlags));
71+
auto *GV = new llvm::GlobalVariable(M, FeatureFlagsConstant->getType(), true,
6972
GlobalValue::PrivateLinkage,
70-
FlagsConstant, "dx.sfi0");
73+
FeatureFlagsConstant, "dx.sfi0");
7174
GV->setSection("SFI0");
7275
GV->setAlignment(Align(4));
7376
return GV;

llvm/lib/Target/DirectX/DXILShaderFlags.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,14 @@ void ComputedShaderFlags::print(raw_ostream &OS) const {
5151
if (FlagVal == 0)
5252
return;
5353
OS << "; Note: shader requires additional functionality:\n";
54-
#define SHADER_FEATURE_FLAG(bit, FlagName, Str) \
54+
#define SHADER_FEATURE_FLAG(FeatureBit, DxilModuleNum, FlagName, Str) \
5555
if (FlagName) \
56-
OS << "; " Str "\n";
56+
(OS << ";").indent(7) << Str << "\n";
57+
#include "llvm/BinaryFormat/DXContainerConstants.def"
58+
OS << "; Note: extra DXIL module flags:\n";
59+
#define DXIL_MODULE_FLAG(DxilModuleBit, FlagName, Str) \
60+
if (FlagName) \
61+
(OS << ";").indent(7) << Str << "\n";
5762
#include "llvm/BinaryFormat/DXContainerConstants.def"
5863
OS << ";\n";
5964
}

llvm/lib/Target/DirectX/DXILShaderFlags.h

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#ifndef LLVM_TARGET_DIRECTX_DXILSHADERFLAGS_H
1515
#define LLVM_TARGET_DIRECTX_DXILSHADERFLAGS_H
1616

17-
#include "llvm/BinaryFormat/DXContainer.h"
1817
#include "llvm/IR/PassManager.h"
1918
#include "llvm/Pass.h"
2019
#include "llvm/Support/Compiler.h"
@@ -29,22 +28,37 @@ class GlobalVariable;
2928
namespace dxil {
3029

3130
struct ComputedShaderFlags {
32-
#define SHADER_FEATURE_FLAG(bit, FlagName, Str) bool FlagName : 1;
31+
#define SHADER_FEATURE_FLAG(FeatureBit, DxilModuleBit, FlagName, Str) \
32+
bool FlagName : 1;
33+
#define DXIL_MODULE_FLAG(DxilModuleBit, FlagName, Str) bool FlagName : 1;
3334
#include "llvm/BinaryFormat/DXContainerConstants.def"
3435

35-
#define SHADER_FEATURE_FLAG(bit, FlagName, Str) FlagName = false;
36+
#define SHADER_FEATURE_FLAG(FeatureBit, DxilModuleBit, FlagName, Str) \
37+
FlagName = false;
38+
#define DXIL_MODULE_FLAG(DxilModuleBit, FlagName, Str) FlagName = false;
3639
ComputedShaderFlags() {
3740
#include "llvm/BinaryFormat/DXContainerConstants.def"
3841
}
3942

43+
constexpr uint64_t getMask(int Bit) const {
44+
return Bit != -1 ? 1ull << Bit : 0;
45+
}
4046
operator uint64_t() const {
4147
uint64_t FlagValue = 0;
42-
#define SHADER_FEATURE_FLAG(bit, FlagName, Str) \
43-
FlagValue |= \
44-
FlagName ? static_cast<uint64_t>(dxbc::FeatureFlags::FlagName) : 0ull;
48+
#define SHADER_FEATURE_FLAG(FeatureBit, DxilModuleBit, FlagName, Str) \
49+
FlagValue |= FlagName ? getMask(DxilModuleBit) : 0ull;
50+
#define DXIL_MODULE_FLAG(DxilModuleBit, FlagName, Str) \
51+
FlagValue |= FlagName ? getMask(DxilModuleBit) : 0ull;
4552
#include "llvm/BinaryFormat/DXContainerConstants.def"
4653
return FlagValue;
4754
}
55+
uint64_t getFeatureFlags() const {
56+
uint64_t FeatureFlags = 0;
57+
#define SHADER_FEATURE_FLAG(FeatureBit, DxilModuleBit, FlagName, Str) \
58+
FeatureFlags |= FlagName ? getMask(FeatureBit) : 0ull;
59+
#include "llvm/BinaryFormat/DXContainerConstants.def"
60+
return FeatureFlags;
61+
}
4862

4963
static ComputedShaderFlags computeFlags(Module &M);
5064
void print(raw_ostream &OS = dbgs()) const;

llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ bool DXILTranslateMetadata::runOnModule(Module &M) {
5353
getAnalysis<DXILResourceWrapper>().getDXILResource();
5454
Res.write(M);
5555

56-
const uint64_t Flags =
57-
(uint64_t)(getAnalysis<ShaderFlagsAnalysisWrapper>().getShaderFlags());
56+
const uint64_t Flags = static_cast<uint64_t>(
57+
getAnalysis<ShaderFlagsAnalysisWrapper>().getShaderFlags());
5858
dxil::createEntryMD(M, Flags);
5959

6060
return false;

llvm/test/CodeGen/DirectX/ShaderFlags/double-extensions.ll

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33

44
target triple = "dxil-pc-shadermodel6.7-library"
55

6-
; CHECK: ; Shader Flags Value: 0x00000021
6+
; CHECK: ; Shader Flags Value: 0x00000044
77
; CHECK: ; Note: shader requires additional functionality:
88
; CHECK-NEXT: ; Double-precision floating point
99
; CHECK-NEXT: ; Double-precision extensions for 11.1
10+
; CHECK-NEXT: ; Note: extra DXIL module flags:
1011
; CHECK-NEXT: {{^;$}}
1112
define double @div(double %a, double %b) {
1213
%res = fdiv double %a, %b

llvm/test/CodeGen/DirectX/ShaderFlags/doubles.ll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33

44
target triple = "dxil-pc-shadermodel6.7-library"
55

6-
; CHECK: ; Shader Flags Value: 0x00000001
6+
; CHECK: ; Shader Flags Value: 0x00000004
77
; CHECK: ; Note: shader requires additional functionality:
88
; CHECK-NEXT: ; Double-precision floating point
9+
; CHECK-NEXT: ; Note: extra DXIL module flags:
910
; CHECK-NEXT: {{^;$}}
11+
1012
define double @add(double %a, double %b) {
1113
%sum = fadd double %a, %b
1214
ret double %sum

llvm/test/CodeGen/DirectX/lib_entry.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ target triple = "dxil-unknown-shadermodel6.7-library"
77
; Make sure generate empty entry for lib profile.
88
;CHECK:![[empty_entry]] = !{null, !"", null, null, ![[shader_flags:[0-9]+]]}
99
; Make sure double is marked for shader flags.
10-
;CHECK:![[shader_flags]] = !{i32 0, i64 1}
10+
;CHECK:![[shader_flags]] = !{i32 0, i64 4}
1111
;CHECK:![[entry]] = !{ptr @entry, !"entry", null, null, ![[extra:[0-9]+]]}
1212
;CHECK:![[extra]] = !{i32 8, i32 5, i32 4, ![[numthreads:[0-9]+]]}
1313
;CHECK:![[numthreads]] = !{i32 1, i32 2, i32 1}

0 commit comments

Comments
 (0)