|
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