11// RUN: %clang_cc1 -finclude-default-header -triple \
22// RUN: dxil-pc-shadermodel6.3-library %s -fnative-half-type -fnative-int16-type \
3- // RUN: -emit-llvm -o - | FileCheck %s
3+ // RUN: -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,DXCHECK
44// RUN: %clang_cc1 -finclude-default-header -triple \
55// RUN: spirv-unknown-vulkan-compute %s -fnative-half-type -fnative-int16-type \
6- // RUN: -emit-llvm -o - | FileCheck %s --check-prefix= SPVCHECK
6+ // RUN: -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK, SPVCHECK
77
88// CHECK-LABEL: test_faceforward_half
99// CHECK: %hlsl.dot.i = fmul reassoc nnan ninf nsz arcp afn half %{{.*}}, %{{.*}}
1010// CHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn olt half %hlsl.dot.i, 0xH0000
1111// CHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn half %{{.*}}
1212// CHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1 %cmp.i, half %{{.*}}, half %fneg.i
1313// CHECK: ret half %hlsl.select.i
14- // SPVCHECK-LABEL: test_faceforward_half
15- // SPVCHECK: %spv.faceforward.i = call reassoc nnan ninf nsz arcp afn noundef half @llvm.spv.faceforward.f16(half %{{.*}}, half %{{.*}}, half %{{.*}})
16- // SPVCHECK: ret half %spv.faceforward.i
1714half test_faceforward_half (half N, half I, half Ng) { return faceforward (N, I, Ng); }
1815
1916// CHECK-LABEL: test_faceforward_half2
20- // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn half @llvm.dx.fdot.v2f16(<2 x half> %{{.*}}, <2 x half> %{{.*}})
17+ // DXCHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn half @llvm.[[ICF:dx]].fdot.v2f16(<2 x half> %{{.*}}, <2 x half> %{{.*}})
18+ // SPVCHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn half @llvm.[[ICF:spv]].fdot.v2f16(<2 x half> %{{.*}}, <2 x half> %{{.*}})
2119// CHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn olt half %hlsl.dot.i, 0xH0000
2220// CHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <2 x half> %{{.*}}
2321// CHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1 %cmp.i, <2 x half> %{{.*}}, <2 x half> %fneg.i
2422// CHECK: ret <2 x half> %hlsl.select.i
25- // SPVCHECK-LABEL: test_faceforward_half2
26- // SPVCHECK: %spv.faceforward.i = call reassoc nnan ninf nsz arcp afn noundef <2 x half> @llvm.spv.faceforward.v2f16(<2 x half> %{{.*}}, <2 x half> %{{.*}}, <2 x half> %{{.*}})
27- // SPVCHECK: ret <2 x half> %spv.faceforward.i
2823half2 test_faceforward_half2 (half2 N, half2 I, half2 Ng) { return faceforward (N, I, Ng); }
2924
3025// CHECK-LABEL: test_faceforward_half3
31- // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn half @llvm.dx .fdot.v3f16(<3 x half> %{{.*}}, <3 x half> %{{.*}})
26+ // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn half @llvm.[[ICF]] .fdot.v3f16(<3 x half> %{{.*}}, <3 x half> %{{.*}})
3227// CHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn olt half %hlsl.dot.i, 0xH0000
3328// CHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <3 x half> %{{.*}}
3429// CHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1 %cmp.i, <3 x half> %{{.*}}, <3 x half> %fneg.i
3530// CHECK: ret <3 x half> %hlsl.select.i
36- // SPVCHECK-LABEL: test_faceforward_half3
37- // SPVCHECK: %spv.faceforward.i = call reassoc nnan ninf nsz arcp afn noundef <3 x half> @llvm.spv.faceforward.v3f16(<3 x half> %{{.*}}, <3 x half> %{{.*}}, <3 x half> %{{.*}})
38- // SPVCHECK: ret <3 x half> %spv.faceforward.i
3931half3 test_faceforward_half3 (half3 N, half3 I, half3 Ng) { return faceforward (N, I, Ng); }
4032
4133// CHECK-LABEL: test_faceforward_half4
42- // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn half @llvm.dx .fdot.v4f16(<4 x half> %{{.*}}, <4 x half> %{{.*}})
34+ // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn half @llvm.[[ICF]] .fdot.v4f16(<4 x half> %{{.*}}, <4 x half> %{{.*}})
4335// CHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn olt half %hlsl.dot.i, 0xH0000
4436// CHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <4 x half> %{{.*}}
4537// CHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1 %cmp.i, <4 x half> %{{.*}}, <4 x half> %fneg.i
4638// CHECK: ret <4 x half> %hlsl.select.i
47- // SPVCHECK-LABEL: test_faceforward_half4
48- // SPVCHECK: %spv.faceforward.i = call reassoc nnan ninf nsz arcp afn noundef <4 x half> @llvm.spv.faceforward.v4f16(<4 x half> %{{.*}}, <4 x half> %{{.*}}, <4 x half> %{{.*}})
49- // SPVCHECK: ret <4 x half> %spv.faceforward.i
5039half4 test_faceforward_half4 (half4 N, half4 I, half4 Ng) { return faceforward (N, I, Ng); }
5140
5241// CHECK-LABEL: test_faceforward_float
@@ -55,40 +44,28 @@ half4 test_faceforward_half4(half4 N, half4 I, half4 Ng) { return faceforward(N,
5544// CHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn float %{{.*}}
5645// CHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1 %cmp.i, float %{{.*}}, float %fneg.i
5746// CHECK: ret float %hlsl.select.i
58- // SPVCHECK-LABEL: test_faceforward_float
59- // SPVCHECK: %spv.faceforward.i = call reassoc nnan ninf nsz arcp afn noundef float @llvm.spv.faceforward.f32(float %{{.*}}, float %{{.*}}, float %{{.*}})
60- // SPVCHECK: ret float %spv.faceforward.i
6147float test_faceforward_float (float N, float I, float Ng) { return faceforward (N, I, Ng); }
6248
6349// CHECK-LABEL: test_faceforward_float2
64- // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn float @llvm.dx .fdot.v2f32(<2 x float> %{{.*}}, <2 x float> %{{.*}})
50+ // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn float @llvm.[[ICF]] .fdot.v2f32(<2 x float> %{{.*}}, <2 x float> %{{.*}})
6551// CHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn olt float %hlsl.dot.i, 0.000000e+00
6652// CHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <2 x float> %{{.*}}
6753// CHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1 %cmp.i, <2 x float> %{{.*}}, <2 x float> %fneg.i
6854// CHECK: ret <2 x float> %hlsl.select.i
69- // SPVCHECK-LABEL: test_faceforward_float2
70- // SPVCHECK: %spv.faceforward.i = call reassoc nnan ninf nsz arcp afn noundef <2 x float> @llvm.spv.faceforward.v2f32(<2 x float> %{{.*}}, <2 x float> %{{.*}}, <2 x float> %{{.*}})
71- // SPVCHECK: ret <2 x float> %spv.faceforward.i
7255float2 test_faceforward_float2 (float2 N, float2 I, float2 Ng) { return faceforward (N, I, Ng); }
7356
7457// CHECK-LABEL: test_faceforward_float3
75- // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn float @llvm.dx .fdot.v3f32(<3 x float> %{{.*}}, <3 x float> %{{.*}})
58+ // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn float @llvm.[[ICF]] .fdot.v3f32(<3 x float> %{{.*}}, <3 x float> %{{.*}})
7659// CHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn olt float %hlsl.dot.i, 0.000000e+00
7760// CHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <3 x float> %{{.*}}
7861// CHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1 %cmp.i, <3 x float> %{{.*}}, <3 x float> %fneg.i
7962// CHECK: ret <3 x float> %hlsl.select.i
80- // SPVCHECK-LABEL: test_faceforward_float3
81- // SPVCHECK: %spv.faceforward.i = call reassoc nnan ninf nsz arcp afn noundef <3 x float> @llvm.spv.faceforward.v3f32(<3 x float> %{{.*}}, <3 x float> %{{.*}}, <3 x float> %{{.*}})
82- // SPVCHECK: ret <3 x float> %spv.faceforward.i
8363float3 test_faceforward_float3 (float3 N, float3 I, float3 Ng) { return faceforward (N, I, Ng); }
8464
8565// CHECK-LABEL: test_faceforward_float4
86- // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn float @llvm.dx .fdot.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}})
66+ // CHECK: %hlsl.dot.i = call reassoc nnan ninf nsz arcp afn float @llvm.[[ICF]] .fdot.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}})
8767// CHECK: %cmp.i = fcmp reassoc nnan ninf nsz arcp afn olt float %hlsl.dot.i, 0.000000e+00
8868// CHECK: %fneg.i = fneg reassoc nnan ninf nsz arcp afn <4 x float> %{{.*}}
8969// CHECK: %hlsl.select.i = select reassoc nnan ninf nsz arcp afn i1 %cmp.i, <4 x float> %{{.*}}, <4 x float> %fneg.i
9070// CHECK: ret <4 x float> %hlsl.select.i
91- // SPVCHECK-LABEL: test_faceforward_float4
92- // SPVCHECK: %spv.faceforward.i = call reassoc nnan ninf nsz arcp afn noundef <4 x float> @llvm.spv.faceforward.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})
93- // SPVCHECK: ret <4 x float> %spv.faceforward.i
9471float4 test_faceforward_float4 (float4 N, float4 I, float4 Ng) { return faceforward (N, I, Ng); }
0 commit comments