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:
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]]
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
5352half 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
7068half2 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
8784half3 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
104100half4 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
119114float 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
134128float2 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
149142float3 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
164156float4 test_fmod_float4 (float4 p0, float4 p1) { return fmod (p0, p1); }
165157
0 commit comments