|
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 -disable-llvm-passes -o - | FileCheck %s \ |
8 |
| -// RUN: -DFNATTRS="noundef nofpclass(nan inf)" -DTYPE=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 -disable-llvm-passes \ |
15 |
| -// RUN: -o - | FileCheck %s \ |
16 |
| -// RUN: -DFNATTRS="noundef nofpclass(nan inf)" -DTYPE=float |
17 |
| - |
18 |
| - |
19 | 1 | // Spirv target:
|
20 | 2 | //
|
21 | 3 | // ---------- Native Half support test -----------
|
|
36 | 18 |
|
37 | 19 |
|
38 | 20 | // CHECK: define [[FNATTRS]] [[TYPE]] @
|
39 |
| -// CHECK: call reassoc nnan ninf nsz arcp afn [[FNATTRS]] [[TYPE]] @{{.*}}([[TYPE]] noundef nofpclass(nan inf) %{{.*}}, [[TYPE]] noundef nofpclass(nan inf) %{{.*}}) #{{.*}} |
40 |
| -// CHECK: ret [[TYPE]] %call |
| 21 | +// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn [[TYPE]] |
| 22 | +// CHECK: ret [[TYPE]] %fmod |
41 | 23 | half test_fmod_half(half p0, half p1) { return fmod(p0, p1); }
|
42 | 24 |
|
43 | 25 | // CHECK: define [[FNATTRS]] <2 x [[TYPE]]> @
|
44 |
| -// CHECK: call reassoc nnan ninf nsz arcp afn [[FNATTRS]] [[TYPE]] @{{.*}}(<2 x [[TYPE]]> noundef nofpclass(nan inf) %{{.*}}, <2 x [[TYPE]]> noundef nofpclass(nan inf) %{{.*}}) #{{.*}} |
45 |
| -// CHECK: ret <2 x [[TYPE]]> %splat.splat |
| 26 | +// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <2 x [[TYPE]]> |
| 27 | +// CHECK: ret <2 x [[TYPE]]> %fmod |
46 | 28 | half2 test_fmod_half2(half2 p0, half2 p1) { return fmod(p0, p1); }
|
47 | 29 |
|
48 | 30 | // CHECK: define [[FNATTRS]] <3 x [[TYPE]]> @
|
49 |
| -// CHECK: call reassoc nnan ninf nsz arcp afn [[FNATTRS]] [[TYPE]] @{{.*}}(<3 x [[TYPE]]> noundef nofpclass(nan inf) %{{.*}}, <3 x [[TYPE]]> noundef nofpclass(nan inf) %{{.*}} #{{.*}} |
50 |
| -// CHECK: ret <3 x [[TYPE]]> %splat.splat |
| 31 | +// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <3 x [[TYPE]]> |
| 32 | +// CHECK: ret <3 x [[TYPE]]> %fmod |
51 | 33 | half3 test_fmod_half3(half3 p0, half3 p1) { return fmod(p0, p1); }
|
52 | 34 |
|
53 | 35 | // CHECK: define [[FNATTRS]] <4 x [[TYPE]]> @
|
54 |
| -// CHECK: call reassoc nnan ninf nsz arcp afn [[FNATTRS]] [[TYPE]] @{{.*}}(<4 x [[TYPE]]> noundef nofpclass(nan inf) %{{.*}}, <4 x [[TYPE]]> noundef nofpclass(nan inf) %{{.*}}) #{{.*}} |
55 |
| -// CHECK: ret <4 x [[TYPE]]> %splat.splat |
| 36 | +// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <4 x [[TYPE]]> |
| 37 | +// CHECK: ret <4 x [[TYPE]]> %fmod |
56 | 38 | half4 test_fmod_half4(half4 p0, half4 p1) { return fmod(p0, p1); }
|
57 | 39 |
|
58 | 40 | // CHECK: define [[FNATTRS]] float @
|
59 |
| -// CHECK: call reassoc nnan ninf nsz arcp afn [[FNATTRS]] float @{{.*}}(float noundef nofpclass(nan inf) %{{.*}}, float noundef nofpclass(nan inf) %{{.*}}) #{{.*}} |
60 |
| -// CHECK: ret float %call |
| 41 | +// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn float |
| 42 | +// CHECK: ret float %fmod |
61 | 43 | float test_fmod_float(float p0, float p1) { return fmod(p0, p1); }
|
62 | 44 |
|
63 | 45 | // CHECK: define [[FNATTRS]] <2 x float> @
|
64 |
| -// CHECK: call reassoc nnan ninf nsz arcp afn [[FNATTRS]] float @{{.*}}(<2 x float> noundef nofpclass(nan inf) %{{.*}}, <2 x float> noundef nofpclass(nan inf) %{{.*}}) #{{.*}} |
65 |
| -// CHECK: ret <2 x float> %splat.splat |
| 46 | +// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <2 x float> |
| 47 | +// CHECK: ret <2 x float> %fmod |
66 | 48 | float2 test_fmod_float2(float2 p0, float2 p1) { return fmod(p0, p1); }
|
67 | 49 |
|
68 | 50 | // CHECK: define [[FNATTRS]] <3 x float> @
|
69 |
| -// CHECK: call reassoc nnan ninf nsz arcp afn [[FNATTRS]] float @{{.*}}(<3 x float> noundef nofpclass(nan inf) %{{.*}}, <3 x float> noundef nofpclass(nan inf) %{{.*}}) #{{.*}} |
70 |
| -// CHECK: ret <3 x float> %splat.splat |
| 51 | +// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <3 x float> |
| 52 | +// CHECK: ret <3 x float> %fmod |
71 | 53 | float3 test_fmod_float3(float3 p0, float3 p1) { return fmod(p0, p1); }
|
72 | 54 |
|
73 | 55 | // CHECK: define [[FNATTRS]] <4 x float> @
|
74 |
| -// CHECK: call reassoc nnan ninf nsz arcp afn [[FNATTRS]] float @{{.*}}(<4 x float> noundef nofpclass(nan inf) %{{.*}}, <4 x float> noundef nofpclass(nan inf) %{{.*}}) #{{.*}} |
75 |
| -// CHECK: ret <4 x float> %splat.splat |
| 56 | +// CHECK: %fmod = frem reassoc nnan ninf nsz arcp afn <4 x float> |
| 57 | +// CHECK: ret <4 x float> %fmod |
76 | 58 | float4 test_fmod_float4(float4 p0, float4 p1) { return fmod(p0, p1); }
|
77 | 59 |
|
0 commit comments