Skip to content

Commit d91e322

Browse files
committed
Merge fmod-directx.hlsl tests back into fmod.hlsl
1 parent 0bdc993 commit d91e322

File tree

2 files changed

+106
-106
lines changed

2 files changed

+106
-106
lines changed

clang/test/CodeGenHLSL/builtins/fmod-directx.hlsl

Lines changed: 0 additions & 106 deletions
This file was deleted.

clang/test/CodeGenHLSL/builtins/fmod.hlsl

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
// DirectX target:
2+
//
3+
// ---------- Native Half support test -----------
4+
//
5+
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
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
9+
10+
//
11+
// ---------- No Native Half support test -----------
12+
//
13+
// RUN: %clang_cc1 -finclude-default-header -x hlsl -triple \
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
17+
18+
119
// Spirv target:
220
//
321
// ---------- Native Half support test -----------
@@ -17,41 +35,129 @@
1735

1836

1937

38+
// DXCHECK: define [[FNATTRS]] [[TYPE]] @
39+
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn [[TYPE]]
40+
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn [[TYPE]]
41+
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge [[TYPE]]
42+
// DXNATIVE_HALF: %elt.abs.i = call reassoc nnan ninf nsz arcp afn [[TYPE]] @llvm.fabs.f16([[TYPE]]
43+
// DXNO_HALF: %elt.abs.i = call reassoc nnan ninf nsz arcp afn [[TYPE]] @llvm.fabs.f32([[TYPE]]
44+
// DXNATIVE_HALF: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn [[TYPE]] @llvm.dx.frac.f16([[TYPE]]
45+
// DXNO_HALF: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn [[TYPE]] @llvm.dx.frac.f32([[TYPE]]
46+
// DXCHECK: %fneg2.i = fneg reassoc nnan ninf nsz arcp afn [[TYPE]]
47+
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1
48+
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn [[TYPE]]
49+
// DXCHECK: ret [[TYPE]] %mul.i
2050
// CHECK: define [[FNATTRS]] [[TYPE]] @
2151
// CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn [[TYPE]]
2252
// CHECK: ret [[TYPE]] %fmod.i
2353
half test_fmod_half(half p0, half p1) { return fmod(p0, p1); }
2454

55+
// DXCHECK: define [[FNATTRS]] <2 x [[TYPE]]> @
56+
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
57+
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
58+
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <2 x [[TYPE]]>
59+
// DXNATIVE_HALF: %elt.abs.i = call reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]> @llvm.fabs.v2f16(<2 x [[TYPE]]>
60+
// DXNO_HALF: %elt.abs.i = call reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]> @llvm.fabs.v2f32(<2 x [[TYPE]]>
61+
// DXNATIVE_HALF: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]> @llvm.dx.frac.v2f16(<2 x [[TYPE]]>
62+
// DXNO_HALF: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]> @llvm.dx.frac.v2f32(<2 x [[TYPE]]>
63+
// DXCHECK: %fneg2.i = fneg reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
64+
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <2 x i1>
65+
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
66+
// DXCHECK: ret <2 x [[TYPE]]> %mul.i
2567
// CHECK: define [[FNATTRS]] <2 x [[TYPE]]> @
2668
// CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]>
2769
// CHECK: ret <2 x [[TYPE]]> %fmod.i
2870
half2 test_fmod_half2(half2 p0, half2 p1) { return fmod(p0, p1); }
2971

72+
// DXCHECK: define [[FNATTRS]] <3 x [[TYPE]]> @
73+
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
74+
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
75+
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <3 x [[TYPE]]>
76+
// DXNATIVE_HALF: %elt.abs.i = call reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]> @llvm.fabs.v3f16(<3 x [[TYPE]]>
77+
// DXNO_HALF: %elt.abs.i = call reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]> @llvm.fabs.v3f32(<3 x [[TYPE]]>
78+
// DXNATIVE_HALF: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]> @llvm.dx.frac.v3f16(<3 x [[TYPE]]>
79+
// DXNO_HALF: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]> @llvm.dx.frac.v3f32(<3 x [[TYPE]]>
80+
// DXCHECK: %fneg2.i = fneg reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
81+
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <3 x i1>
82+
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
83+
// DXCHECK: ret <3 x [[TYPE]]> %mul.i
3084
// CHECK: define [[FNATTRS]] <3 x [[TYPE]]> @
3185
// CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]>
3286
// CHECK: ret <3 x [[TYPE]]> %fmod.i
3387
half3 test_fmod_half3(half3 p0, half3 p1) { return fmod(p0, p1); }
3488

89+
// DXCHECK: define [[FNATTRS]] <4 x [[TYPE]]> @
90+
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
91+
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
92+
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <4 x [[TYPE]]>
93+
// DXNATIVE_HALF: %elt.abs.i = call reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]> @llvm.fabs.v4f16(<4 x [[TYPE]]>
94+
// DXNO_HALF: %elt.abs.i = call reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]> @llvm.fabs.v4f32(<4 x [[TYPE]]>
95+
// DXNATIVE_HALF: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]> @llvm.dx.frac.v4f16(<4 x [[TYPE]]>
96+
// DXNO_HALF: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]> @llvm.dx.frac.v4f32(<4 x [[TYPE]]>
97+
// DXCHECK: %fneg2.i = fneg reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
98+
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <4 x i1>
99+
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
100+
// DXCHECK: ret <4 x [[TYPE]]> %mul.i
35101
// CHECK: define [[FNATTRS]] <4 x [[TYPE]]> @
36102
// CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]>
37103
// CHECK: ret <4 x [[TYPE]]> %fmod.i
38104
half4 test_fmod_half4(half4 p0, half4 p1) { return fmod(p0, p1); }
39105

106+
// DXCHECK: define [[FNATTRS]] float @
107+
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn float
108+
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn float
109+
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge float
110+
// DXCHECK: %elt.abs.i = call reassoc nnan ninf nsz arcp afn float @llvm.fabs.f32(float
111+
// DXCHECK: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn float @llvm.dx.frac.f32(float
112+
// DXCHECK: %fneg2.i = fneg reassoc nnan ninf nsz arcp afn float
113+
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1
114+
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn float
115+
// DXCHECK: ret float %mul.i
40116
// CHECK: define [[FNATTRS]] float @
41117
// CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn float
42118
// CHECK: ret float %fmod.i
43119
float test_fmod_float(float p0, float p1) { return fmod(p0, p1); }
44120

121+
// DXCHECK: define [[FNATTRS]] <2 x float> @
122+
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <2 x float>
123+
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <2 x float>
124+
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <2 x float>
125+
// DXCHECK: %elt.abs.i = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.fabs.v2f32(<2 x float>
126+
// DXCHECK: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn <2 x float> @llvm.dx.frac.v2f32(<2 x float>
127+
// DXCHECK: %fneg2.i = fneg reassoc nnan ninf nsz arcp afn <2 x float>
128+
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <2 x i1>
129+
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <2 x float>
130+
// DXCHECK: ret <2 x float> %mul.i
45131
// CHECK: define [[FNATTRS]] <2 x float> @
46132
// CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <2 x float>
47133
// CHECK: ret <2 x float> %fmod.i
48134
float2 test_fmod_float2(float2 p0, float2 p1) { return fmod(p0, p1); }
49135

136+
// DXCHECK: define [[FNATTRS]] <3 x float> @
137+
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <3 x float>
138+
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <3 x float>
139+
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <3 x float>
140+
// DXCHECK: %elt.abs.i = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.fabs.v3f32(<3 x float>
141+
// DXCHECK: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn <3 x float> @llvm.dx.frac.v3f32(<3 x float>
142+
// DXCHECK: %fneg2.i = fneg reassoc nnan ninf nsz arcp afn <3 x float>
143+
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <3 x i1>
144+
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <3 x float>
145+
// DXCHECK: ret <3 x float> %mul.i
50146
// CHECK: define [[FNATTRS]] <3 x float> @
51147
// CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <3 x float>
52148
// CHECK: ret <3 x float> %fmod.i
53149
float3 test_fmod_float3(float3 p0, float3 p1) { return fmod(p0, p1); }
54150

151+
// DXCHECK: define [[FNATTRS]] <4 x float> @
152+
// DXCHECK: %div1.i = fdiv reassoc nnan ninf nsz arcp afn <4 x float>
153+
// DXCHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <4 x float>
154+
// DXCHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn oge <4 x float>
155+
// DXCHECK: %elt.abs.i = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.fabs.v4f32(<4 x float>
156+
// DXCHECK: %hlsl.frac.i = call reassoc nnan ninf nsz arcp afn <4 x float> @llvm.dx.frac.v4f32(<4 x float>
157+
// DXCHECK: %fneg2.i = fneg reassoc nnan ninf nsz arcp afn <4 x float>
158+
// DXCHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn <4 x i1>
159+
// DXCHECK: %mul.i = fmul reassoc nnan ninf nsz arcp afn <4 x float>
160+
// DXCHECK: ret <4 x float> %mul.i
55161
// CHECK: define [[FNATTRS]] <4 x float> @
56162
// CHECK: %fmod.i = frem reassoc nnan ninf nsz arcp afn <4 x float>
57163
// CHECK: ret <4 x float> %fmod.i

0 commit comments

Comments
 (0)