1- ; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s
2- ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-unknown %s -o - -filetype=obj | spirv-val --target-env vulkan1.3 %}
3-
4- ; TODO(#136344): This test currently fails when --target-env vulkan1.3 is specified.
5- ; XFAIL: spirv-tools
1+ ; RUN: llc -O0 -verify-machineinstrs -mtriple=spirv-vulkan1.3-unknown %s -o - | FileCheck %s
2+ ; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-vulkan1.3-unknown %s -o - -filetype=obj | spirv-val --target-env vulkan1.3 %}
63
74; Make sure SPIRV operation function calls for smoothstep are lowered correctly.
85
129; CHECK-DAG: %[[#float_32:]] = OpTypeFloat 32
1310; CHECK-DAG: %[[#vec4_float_32:]] = OpTypeVector %[[#float_32]] 4
1411
15- define noundef half @smoothstep_half (half noundef %a , half noundef %b , half noundef %c ) {
12+ define internal noundef half @smoothstep_half (half noundef %a , half noundef %b , half noundef %c ) {
1613entry:
1714 ; CHECK: %[[#]] = OpFunction %[[#float_16]] None %[[#]]
1815 ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#float_16]]
2320 ret half %spv.smoothstep
2421}
2522
26- define noundef float @smoothstep_float (float noundef %a , float noundef %b , float noundef %c ) {
23+ define internal noundef float @smoothstep_float (float noundef %a , float noundef %b , float noundef %c ) {
2724entry:
2825 ; CHECK: %[[#]] = OpFunction %[[#float_32]] None %[[#]]
2926 ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#float_32]]
3431 ret float %spv.smoothstep
3532}
3633
37- define noundef <4 x half > @smoothstep_half4 (<4 x half > noundef %a , <4 x half > noundef %b , <4 x half > noundef %c ) {
34+ define internal noundef <4 x half > @smoothstep_half4 (<4 x half > noundef %a , <4 x half > noundef %b , <4 x half > noundef %c ) {
3835entry:
3936 ; CHECK: %[[#]] = OpFunction %[[#vec4_float_16]] None %[[#]]
4037 ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec4_float_16]]
4542 ret <4 x half > %spv.smoothstep
4643}
4744
48- define noundef <4 x float > @smoothstep_float4 (<4 x float > noundef %a , <4 x float > noundef %b , <4 x float > noundef %c ) {
45+ define internal noundef <4 x float > @smoothstep_float4 (<4 x float > noundef %a , <4 x float > noundef %b , <4 x float > noundef %c ) {
4946entry:
5047 ; CHECK: %[[#]] = OpFunction %[[#vec4_float_32]] None %[[#]]
5148 ; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec4_float_32]]
@@ -56,8 +53,16 @@ entry:
5653 ret <4 x float > %spv.smoothstep
5754}
5855
56+ ; The other fucntions are the test, but a entry point is required to have a valid SPIR-V module.
57+ define void @main () #1 {
58+ entry:
59+ ret void
60+ }
61+
5962declare half @llvm.spv.smoothstep.f16 (half , half , half )
6063declare float @llvm.spv.smoothstep.f32 (float , float , float )
6164
6265declare <4 x half > @llvm.spv.smoothstep.v4f16 (<4 x half >, <4 x half >, <4 x half >)
6366declare <4 x float > @llvm.spv.smoothstep.v4f32 (<4 x float >, <4 x float >, <4 x float >)
67+
68+ attributes #1 = { convergent noinline norecurse "hlsl.numthreads" ="1,1,1" "hlsl.shader" ="compute" "no-trapping-math" ="true" "stack-protector-buffer-size" ="8" }
0 commit comments