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 %}
6
3
7
4
; Make sure SPIRV operation function calls for smoothstep are lowered correctly.
8
5
12
9
; CHECK-DAG: %[[#float_32:]] = OpTypeFloat 32
13
10
; CHECK-DAG: %[[#vec4_float_32:]] = OpTypeVector %[[#float_32]] 4
14
11
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 ) {
16
13
entry:
17
14
; CHECK: %[[#]] = OpFunction %[[#float_16]] None %[[#]]
18
15
; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#float_16]]
23
20
ret half %spv.smoothstep
24
21
}
25
22
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 ) {
27
24
entry:
28
25
; CHECK: %[[#]] = OpFunction %[[#float_32]] None %[[#]]
29
26
; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#float_32]]
34
31
ret float %spv.smoothstep
35
32
}
36
33
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 ) {
38
35
entry:
39
36
; CHECK: %[[#]] = OpFunction %[[#vec4_float_16]] None %[[#]]
40
37
; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec4_float_16]]
45
42
ret <4 x half > %spv.smoothstep
46
43
}
47
44
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 ) {
49
46
entry:
50
47
; CHECK: %[[#]] = OpFunction %[[#vec4_float_32]] None %[[#]]
51
48
; CHECK: %[[#arg0:]] = OpFunctionParameter %[[#vec4_float_32]]
@@ -56,8 +53,16 @@ entry:
56
53
ret <4 x float > %spv.smoothstep
57
54
}
58
55
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
+
59
62
declare half @llvm.spv.smoothstep.f16 (half , half , half )
60
63
declare float @llvm.spv.smoothstep.f32 (float , float , float )
61
64
62
65
declare <4 x half > @llvm.spv.smoothstep.v4f16 (<4 x half >, <4 x half >, <4 x half >)
63
66
declare <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