Skip to content

Commit 5e1e585

Browse files
committed
Added SPVCHECK prefix & changed function definition checks in fmod.hlsl tests, formatted files with clang-format
1 parent 9b0b5ee commit 5e1e585

File tree

3 files changed

+35
-47
lines changed

3 files changed

+35
-47
lines changed

clang/lib/Headers/hlsl/hlsl_detail.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ constexpr enable_if_t<is_same<float, T>::value || is_same<half, T>::value, T>
5050
fmod_impl(T X, T Y) {
5151
#if !defined(__DIRECTX__)
5252
return __builtin_elementwise_fmod(X, Y);
53-
#else
53+
#else
5454
T div = X / Y;
5555
bool ge = div >= -div;
5656
T frc = frac(abs(div));
@@ -62,10 +62,10 @@ template <typename T, int N>
6262
constexpr vector<T, N> fmod_vec_impl(vector<T, N> X, vector<T, N> Y) {
6363
#if !defined(__DIRECTX__)
6464
return __builtin_elementwise_fmod(X, Y);
65-
#else
65+
#else
6666
vector<T, N> div = X / Y;
6767
vector<bool, N> ge = div >= -div;
68-
vector<T, N> frc = frac(abs(div));
68+
vector<T, N> frc = frac(abs(div));
6969
return select<T>(ge, frc, -frc) * Y;
7070
#endif
7171
}

clang/lib/Headers/hlsl/hlsl_intrinsics.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,9 @@ const inline float distance(vector<float, N> X, vector<float, N> Y) {
122122
/// parameter.
123123

124124
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
125-
const inline half fmod(half X, half Y) {
126-
return __detail::fmod_impl(X, Y);
127-
}
125+
const inline half fmod(half X, half Y) { return __detail::fmod_impl(X, Y); }
128126

129-
const inline float fmod(float X, float Y) {
130-
return __detail::fmod_impl(X, Y);
131-
}
127+
const inline float fmod(float X, float Y) { return __detail::fmod_impl(X, Y); }
132128

133129
template <int N>
134130
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)

clang/test/CodeGenHLSL/builtins/fmod.hlsl

Lines changed: 30 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
//
55
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
66
// 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
99

1010
//
1111
// ---------- No Native Half support test -----------
1212
//
1313
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
1414
// 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
1717

1818

1919
// Spirv target:
@@ -23,19 +23,19 @@
2323
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
2424
// RUN: spirv-unknown-vulkan-compute %s -fnative-half-type \
2525
// 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
2727

2828
//
2929
// ---------- No Native Half support test -----------
3030
//
3131
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
3232
// RUN: spirv-unknown-vulkan-compute %s -emit-llvm \
3333
// RUN: -o - | FileCheck %s \
34-
// RUN: -DFNATTRS="spir_func noundef nofpclass(nan inf)" -DTYPE=float
34+
// RUN: -DTYPE=float --check-prefixes=CHECK,SPVCHECK
3535

3636

3737

38-
// DXCHECK: define [[FNATTRS]] [[TYPE]] @
38+
// CHECK-LABEL: test_fmod_half
3939
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn [[TYPE]]
4040
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn [[TYPE]]
4141
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge [[TYPE]]
@@ -47,12 +47,11 @@
4747
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1
4848
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn [[TYPE]]
4949
// 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
5352
half test_fmod_half(half p0, half p1) { return fmod(p0, p1); }
5453

55-
// DXCHECK: define [[FNATTRS]] <2 x [[TYPE]]> @
54+
// CHECK-LABEL: test_fmod_half2
5655
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
5756
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
5857
// 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); }
6463
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <2 x i1>
6564
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
6665
// 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
7068
half2 test_fmod_half2(half2 p0, half2 p1) { return fmod(p0, p1); }
7169

72-
// DXCHECK: define [[FNATTRS]] <3 x [[TYPE]]> @
70+
// CHECK-LABEL: test_fmod_half3
7371
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
7472
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
7573
// 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); }
8179
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <3 x i1>
8280
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
8381
// 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
8784
half3 test_fmod_half3(half3 p0, half3 p1) { return fmod(p0, p1); }
8885

89-
// DXCHECK: define [[FNATTRS]] <4 x [[TYPE]]> @
86+
// CHECK-LABEL: test_fmod_half4
9087
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
9188
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
9289
// 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); }
9895
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <4 x i1>
9996
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
10097
// 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
104100
half4 test_fmod_half4(half4 p0, half4 p1) { return fmod(p0, p1); }
105101

106-
// DXCHECK: define [[FNATTRS]] float @
102+
// CHECK-LABEL: test_fmod_float
107103
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn float
108104
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn float
109105
// 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); }
113109
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1
114110
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn float
115111
// 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
119114
float test_fmod_float(float p0, float p1) { return fmod(p0, p1); }
120115

121-
// DXCHECK: define [[FNATTRS]] <2 x float> @
116+
// CHECK-LABEL: test_fmod_float2
122117
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <2 x float>
123118
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <2 x float>
124119
// 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); }
128123
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <2 x i1>
129124
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <2 x float>
130125
// 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
134128
float2 test_fmod_float2(float2 p0, float2 p1) { return fmod(p0, p1); }
135129

136-
// DXCHECK: define [[FNATTRS]] <3 x float> @
130+
// CHECK-LABEL: test_fmod_float3
137131
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <3 x float>
138132
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <3 x float>
139133
// 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); }
143137
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <3 x i1>
144138
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <3 x float>
145139
// 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
149142
float3 test_fmod_float3(float3 p0, float3 p1) { return fmod(p0, p1); }
150143

151-
// DXCHECK: define [[FNATTRS]] <4 x float> @
144+
// CHECK-LABEL: test_fmod_float4
152145
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <4 x float>
153146
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <4 x float>
154147
// 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); }
158151
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <4 x i1>
159152
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <4 x float>
160153
// 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
164156
float4 test_fmod_float4(float4 p0, float4 p1) { return fmod(p0, p1); }
165157

0 commit comments

Comments
 (0)