; RUN: split-file %s %t ; RUN: opt -S --dxil-translate-metadata %t/only.ll | FileCheck %t/only.ll ; RUN: opt -S --dxil-translate-metadata %t/min.ll | FileCheck %t/min.ll ; RUN: opt -S --dxil-translate-metadata %t/max.ll | FileCheck %t/max.ll ; RUN: opt -S --dxil-translate-metadata %t/pref.ll | FileCheck %t/pref.ll ; RUN: llc --filetype=obj %t/only.ll -o - | obj2yaml | FileCheck %t/only.ll --check-prefix=OBJ ; RUN: llc --filetype=obj %t/min.ll -o - | obj2yaml | FileCheck %t/min.ll --check-prefix=OBJ ; RUN: llc --filetype=obj %t/max.ll -o - | obj2yaml | FileCheck %t/max.ll --check-prefix=OBJ ; RUN: llc --filetype=obj %t/pref.ll -o - | obj2yaml | FileCheck %t/pref.ll --check-prefix=OBJ ; Test that wave size/range metadata is correctly generated with the correct tag ;--- only.ll ; CHECK: !dx.entryPoints = !{![[#ENTRY:]]} ; CHECK: ![[#ENTRY]] = !{ptr @main, !"main", null, null, ![[#PROPS:]]} ; CHECK: ![[#PROPS]] = !{{{.*}}i32 11, ![[#WAVE_SIZE:]]{{.*}}} ; CHECK: ![[#WAVE_SIZE]] = !{i32 16} ; OBJ: - Name: PSV0 ; OBJ: PSVInfo: ; OBJ: MinimumWaveLaneCount: 16 ; OBJ: MaximumWaveLaneCount: 16 target triple = "dxil-unknown-shadermodel6.6-compute" define void @main() #0 { entry: ret void } attributes #0 = { "hlsl.wavesize"="16,0,0" "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" } ;--- min.ll ; CHECK: !dx.entryPoints = !{![[#ENTRY:]]} ; CHECK: ![[#ENTRY]] = !{ptr @main, !"main", null, null, ![[#PROPS:]]} ; CHECK: ![[#PROPS]] = !{{{.*}}i32 23, ![[#WAVE_SIZE:]]{{.*}}} ; CHECK: ![[#WAVE_SIZE]] = !{i32 16, i32 0, i32 0} ; OBJ: - Name: PSV0 ; OBJ: PSVInfo: ; OBJ: MinimumWaveLaneCount: 16 ; OBJ: MaximumWaveLaneCount: 16 target triple = "dxil-unknown-shadermodel6.8-compute" define void @main() #0 { entry: ret void } attributes #0 = { "hlsl.wavesize"="16,0,0" "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" } ;--- max.ll ; CHECK: !dx.entryPoints = !{![[#ENTRY:]]} ; CHECK: ![[#ENTRY]] = !{ptr @main, !"main", null, null, ![[#PROPS:]]} ; CHECK: ![[#PROPS]] = !{{{.*}}i32 23, ![[#WAVE_SIZE:]]{{.*}}} ; CHECK: ![[#WAVE_SIZE]] = !{i32 16, i32 32, i32 0} ; OBJ: - Name: PSV0 ; OBJ: PSVInfo: ; OBJ: MinimumWaveLaneCount: 16 ; OBJ: MaximumWaveLaneCount: 32 target triple = "dxil-unknown-shadermodel6.8-compute" define void @main() #0 { entry: ret void } attributes #0 = { "hlsl.wavesize"="16,32,0" "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" } ;--- pref.ll ; CHECK: !dx.entryPoints = !{![[#ENTRY:]]} ; CHECK: ![[#ENTRY]] = !{ptr @main, !"main", null, null, ![[#PROPS:]]} ; CHECK: ![[#PROPS]] = !{{{.*}}i32 23, ![[#WAVE_SIZE:]]{{.*}}} ; CHECK: ![[#WAVE_SIZE]] = !{i32 16, i32 64, i32 32} ; OBJ: - Name: PSV0 ; OBJ: PSVInfo: ; OBJ: MinimumWaveLaneCount: 16 ; OBJ: MaximumWaveLaneCount: 64 target triple = "dxil-unknown-shadermodel6.8-compute" define void @main() #0 { entry: ret void } attributes #0 = { "hlsl.wavesize"="16,64,32" "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }