Skip to content

Commit c3ac81c

Browse files
committed
update corresponding PSVInfo
1 parent ff1838e commit c3ac81c

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

llvm/lib/Target/DirectX/DXContainerGlobals.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,13 @@ void DXContainerGlobals::addPipelineStateValidationInfo(
284284
PSV.BaseData.NumThreadsX = MMI.EntryPropertyVec[0].NumThreadsX;
285285
PSV.BaseData.NumThreadsY = MMI.EntryPropertyVec[0].NumThreadsY;
286286
PSV.BaseData.NumThreadsZ = MMI.EntryPropertyVec[0].NumThreadsZ;
287+
if (MMI.EntryPropertyVec[0].WaveSizeMin) {
288+
PSV.BaseData.MinimumWaveLaneCount = MMI.EntryPropertyVec[0].WaveSizeMin;
289+
PSV.BaseData.MaximumWaveLaneCount =
290+
MMI.EntryPropertyVec[0].WaveSizeMax
291+
? MMI.EntryPropertyVec[0].WaveSizeMax
292+
: MMI.EntryPropertyVec[0].WaveSizeMin;
293+
}
287294
break;
288295
default:
289296
break;

llvm/test/CodeGen/DirectX/wavesize-md-valid.ll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
; RUN: opt -S --dxil-translate-metadata %t/max.ll | FileCheck %t/max.ll
55
; RUN: opt -S --dxil-translate-metadata %t/pref.ll | FileCheck %t/pref.ll
66

7+
; RUN: llc --filetype=obj %t/only.ll -o - | obj2yaml | FileCheck %t/only.ll --check-prefix=OBJ
8+
; RUN: llc --filetype=obj %t/min.ll -o - | obj2yaml | FileCheck %t/min.ll --check-prefix=OBJ
9+
; RUN: llc --filetype=obj %t/max.ll -o - | obj2yaml | FileCheck %t/max.ll --check-prefix=OBJ
10+
; RUN: llc --filetype=obj %t/pref.ll -o - | obj2yaml | FileCheck %t/pref.ll --check-prefix=OBJ
11+
712
; Test that wave size/range metadata is correctly generated with the correct tag
813

914
;--- only.ll
@@ -13,6 +18,11 @@
1318
; CHECK: ![[#PROPS]] = !{{{.*}}i32 11, ![[#WAVE_SIZE:]]{{.*}}}
1419
; CHECK: ![[#WAVE_SIZE]] = !{i32 16}
1520

21+
; OBJ: - Name: PSV0
22+
; OBJ: PSVInfo:
23+
; OBJ: MinimumWaveLaneCount: 16
24+
; OBJ: MaximumWaveLaneCount: 16
25+
1626
target triple = "dxil-unknown-shadermodel6.6-compute"
1727

1828
define void @main() #0 {
@@ -29,6 +39,11 @@ attributes #0 = { "hlsl.wavesize"="16,0,0" "hlsl.numthreads"="1,1,1" "hlsl.shade
2939
; CHECK: ![[#PROPS]] = !{{{.*}}i32 23, ![[#WAVE_SIZE:]]{{.*}}}
3040
; CHECK: ![[#WAVE_SIZE]] = !{i32 16, i32 0, i32 0}
3141

42+
; OBJ: - Name: PSV0
43+
; OBJ: PSVInfo:
44+
; OBJ: MinimumWaveLaneCount: 16
45+
; OBJ: MaximumWaveLaneCount: 16
46+
3247
target triple = "dxil-unknown-shadermodel6.8-compute"
3348

3449
define void @main() #0 {
@@ -45,6 +60,11 @@ attributes #0 = { "hlsl.wavesize"="16,0,0" "hlsl.numthreads"="1,1,1" "hlsl.shade
4560
; CHECK: ![[#PROPS]] = !{{{.*}}i32 23, ![[#WAVE_SIZE:]]{{.*}}}
4661
; CHECK: ![[#WAVE_SIZE]] = !{i32 16, i32 32, i32 0}
4762

63+
; OBJ: - Name: PSV0
64+
; OBJ: PSVInfo:
65+
; OBJ: MinimumWaveLaneCount: 16
66+
; OBJ: MaximumWaveLaneCount: 32
67+
4868
target triple = "dxil-unknown-shadermodel6.8-compute"
4969

5070
define void @main() #0 {
@@ -61,6 +81,11 @@ attributes #0 = { "hlsl.wavesize"="16,32,0" "hlsl.numthreads"="1,1,1" "hlsl.shad
6181
; CHECK: ![[#PROPS]] = !{{{.*}}i32 23, ![[#WAVE_SIZE:]]{{.*}}}
6282
; CHECK: ![[#WAVE_SIZE]] = !{i32 16, i32 64, i32 32}
6383

84+
; OBJ: - Name: PSV0
85+
; OBJ: PSVInfo:
86+
; OBJ: MinimumWaveLaneCount: 16
87+
; OBJ: MaximumWaveLaneCount: 64
88+
6489
target triple = "dxil-unknown-shadermodel6.8-compute"
6590

6691
define void @main() #0 {

0 commit comments

Comments
 (0)