4
4
//
5
5
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
6
6
// RUN: dxil-pc-shadermodel6.3-library %s -fnative-half-type \
7
- // RUN: -emit-llvm -o - | FileCheck %s -DFNATTRS="noundef nofpclass(nan inf)" \
8
- // RUN: -DTYPE=half --check-prefixes=DXCHECK,DXNATIVE_HALF
7
+ // RUN: -emit-llvm -o - | FileCheck %s \
8
+ // RUN: -DTYPE=half --check-prefixes=CHECK, DXCHECK,DXNATIVE_HALF
9
9
10
10
//
11
11
// ---------- No Native Half support test -----------
12
12
//
13
13
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
14
14
// RUN: dxil-pc-shadermodel6.3-library %s -emit-llvm \
15
- // RUN: -o - | FileCheck %s -DFNATTRS="noundef nofpclass(nan inf)" \
16
- // RUN: -DTYPE=float --check-prefixes=DXCHECK,DXNO_HALF
15
+ // RUN: -o - | FileCheck %s \
16
+ // RUN: -DTYPE=float --check-prefixes=CHECK, DXCHECK,DXNO_HALF
17
17
18
18
19
19
// Spirv target:
23
23
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
24
24
// RUN: spirv-unknown-vulkan-compute %s -fnative-half-type \
25
25
// RUN: -emit-llvm -o - | FileCheck %s \
26
- // RUN: -DFNATTRS="spir_func noundef nofpclass(nan inf)" -DTYPE=half
26
+ // RUN: -DTYPE=half --check-prefixes=CHECK,SPVCHECK
27
27
28
28
//
29
29
// ---------- No Native Half support test -----------
30
30
//
31
31
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
32
32
// RUN: spirv-unknown-vulkan-compute %s -emit-llvm \
33
33
// RUN: -o - | FileCheck %s \
34
- // RUN: -DFNATTRS="spir_func noundef nofpclass(nan inf)" -DTYPE=float
34
+ // RUN: -DTYPE=float --check-prefixes=CHECK,SPVCHECK
35
35
36
36
37
37
38
- // DXCHECK: define [[FNATTRS]] [[TYPE]] @
38
+ // CHECK-LABEL: test_fmod_half
39
39
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn [[TYPE]]
40
40
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn [[TYPE]]
41
41
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge [[TYPE]]
47
47
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1
48
48
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn [[TYPE]]
49
49
// DXCHECK: ret [[TYPE]] %mul.i
50
- // CHECK: define [[FNATTRS]] [[TYPE]] @
51
- // CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn [[TYPE]]
52
- // CHECK: ret [[TYPE]] %fmod.i
50
+ // SPVCHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn [[TYPE]]
51
+ // SPVCHECK: ret [[TYPE]] %fmod.i
53
52
half test_fmod_half (half p0, half p1) { return fmod (p0, p1); }
54
53
55
- // DXCHECK: define [[FNATTRS]] <2 x [[TYPE]]> @
54
+ // CHECK-LABEL: test_fmod_half2
56
55
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
57
56
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
58
57
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <2 x [[TYPE]]>
@@ -64,12 +63,11 @@ half test_fmod_half(half p0, half p1) { return fmod(p0, p1); }
64
63
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <2 x i1>
65
64
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
66
65
// DXCHECK: ret <2 x [[TYPE]]> %mul.i
67
- // CHECK: define [[FNATTRS]] <2 x [[TYPE]]> @
68
- // CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
69
- // CHECK: ret <2 x [[TYPE]]> %fmod.i
66
+ // SPVCHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
67
+ // SPVCHECK: ret <2 x [[TYPE]]> %fmod.i
70
68
half2 test_fmod_half2 (half2 p0, half2 p1) { return fmod (p0, p1); }
71
69
72
- // DXCHECK: define [[FNATTRS]] <3 x [[TYPE]]> @
70
+ // CHECK-LABEL: test_fmod_half3
73
71
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
74
72
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
75
73
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <3 x [[TYPE]]>
@@ -81,12 +79,11 @@ half2 test_fmod_half2(half2 p0, half2 p1) { return fmod(p0, p1); }
81
79
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <3 x i1>
82
80
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
83
81
// DXCHECK: ret <3 x [[TYPE]]> %mul.i
84
- // CHECK: define [[FNATTRS]] <3 x [[TYPE]]> @
85
- // CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
86
- // CHECK: ret <3 x [[TYPE]]> %fmod.i
82
+ // SPVCHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
83
+ // SPVCHECK: ret <3 x [[TYPE]]> %fmod.i
87
84
half3 test_fmod_half3 (half3 p0, half3 p1) { return fmod (p0, p1); }
88
85
89
- // DXCHECK: define [[FNATTRS]] <4 x [[TYPE]]> @
86
+ // CHECK-LABEL: test_fmod_half4
90
87
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
91
88
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
92
89
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <4 x [[TYPE]]>
@@ -98,12 +95,11 @@ half3 test_fmod_half3(half3 p0, half3 p1) { return fmod(p0, p1); }
98
95
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <4 x i1>
99
96
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
100
97
// DXCHECK: ret <4 x [[TYPE]]> %mul.i
101
- // CHECK: define [[FNATTRS]] <4 x [[TYPE]]> @
102
- // CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
103
- // CHECK: ret <4 x [[TYPE]]> %fmod.i
98
+ // SPVCHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
99
+ // SPVCHECK: ret <4 x [[TYPE]]> %fmod.i
104
100
half4 test_fmod_half4 (half4 p0, half4 p1) { return fmod (p0, p1); }
105
101
106
- // DXCHECK: define [[FNATTRS]] float @
102
+ // CHECK-LABEL: test_fmod_float
107
103
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn float
108
104
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn float
109
105
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge float
@@ -113,12 +109,11 @@ half4 test_fmod_half4(half4 p0, half4 p1) { return fmod(p0, p1); }
113
109
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1
114
110
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn float
115
111
// DXCHECK: ret float %mul.i
116
- // CHECK: define [[FNATTRS]] float @
117
- // CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn float
118
- // CHECK: ret float %fmod.i
112
+ // SPVCHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn float
113
+ // SPVCHECK: ret float %fmod.i
119
114
float test_fmod_float (float p0, float p1) { return fmod (p0, p1); }
120
115
121
- // DXCHECK: define [[FNATTRS]] <2 x float> @
116
+ // CHECK-LABEL: test_fmod_float2
122
117
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <2 x float>
123
118
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <2 x float>
124
119
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <2 x float>
@@ -128,12 +123,11 @@ float test_fmod_float(float p0, float p1) { return fmod(p0, p1); }
128
123
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <2 x i1>
129
124
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <2 x float>
130
125
// DXCHECK: ret <2 x float> %mul.i
131
- // CHECK: define [[FNATTRS]] <2 x float> @
132
- // CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <2 x float>
133
- // CHECK: ret <2 x float> %fmod.i
126
+ // SPVCHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <2 x float>
127
+ // SPVCHECK: ret <2 x float> %fmod.i
134
128
float2 test_fmod_float2 (float2 p0, float2 p1) { return fmod (p0, p1); }
135
129
136
- // DXCHECK: define [[FNATTRS]] <3 x float> @
130
+ // CHECK-LABEL: test_fmod_float3
137
131
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <3 x float>
138
132
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <3 x float>
139
133
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <3 x float>
@@ -143,12 +137,11 @@ float2 test_fmod_float2(float2 p0, float2 p1) { return fmod(p0, p1); }
143
137
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <3 x i1>
144
138
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <3 x float>
145
139
// DXCHECK: ret <3 x float> %mul.i
146
- // CHECK: define [[FNATTRS]] <3 x float> @
147
- // CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <3 x float>
148
- // CHECK: ret <3 x float> %fmod.i
140
+ // SPVCHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <3 x float>
141
+ // SPVCHECK: ret <3 x float> %fmod.i
149
142
float3 test_fmod_float3 (float3 p0, float3 p1) { return fmod (p0, p1); }
150
143
151
- // DXCHECK: define [[FNATTRS]] <4 x float> @
144
+ // CHECK-LABEL: test_fmod_float4
152
145
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <4 x float>
153
146
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <4 x float>
154
147
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <4 x float>
@@ -158,8 +151,7 @@ float3 test_fmod_float3(float3 p0, float3 p1) { return fmod(p0, p1); }
158
151
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <4 x i1>
159
152
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <4 x float>
160
153
// DXCHECK: ret <4 x float> %mul.i
161
- // CHECK: define [[FNATTRS]] <4 x float> @
162
- // CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <4 x float>
163
- // CHECK: ret <4 x float> %fmod.i
154
+ // SPVCHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <4 x float>
155
+ // SPVCHECK: ret <4 x float> %fmod.i
164
156
float4 test_fmod_float4 (float4 p0, float4 p1) { return fmod (p0, p1); }
165
157
0 commit comments