|
1 | 1 | // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \
|
2 | 2 | // RUN: dxil-pc-shadermodel6.3-library %s -fnative-half-type \
|
3 |
| -// RUN: -emit-llvm -disable-llvm-passes -O3 -o - | FileCheck %s |
| 3 | +// RUN: -emit-llvm -disable-llvm-passes -o - | FileCheck %s \ |
| 4 | +// RUN: --check-prefixes=CHECK,NATIVE_HALF |
4 | 5 | // RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \
|
5 | 6 | // RUN: dxil-pc-shadermodel6.3-library %s -emit-llvm -disable-llvm-passes \
|
6 |
| -// RUN: -o - | FileCheck %s --check-prefix=NO_HALF |
| 7 | +// RUN: -o - | FileCheck %s --check-prefixes=CHECK,NO_HALF |
7 | 8 |
|
8 | 9 | using hlsl::abs;
|
9 | 10 |
|
10 | 11 | #ifdef __HLSL_ENABLE_16_BIT
|
11 |
| -// CHECK: define noundef i16 @ |
12 |
| -// CHECK: call i16 @llvm.abs.i16( |
13 |
| -int16_t test_abs_int16_t ( int16_t p0 ) { |
14 |
| - return abs ( p0 ); |
15 |
| -} |
16 |
| -// CHECK: define noundef <2 x i16> @ |
17 |
| -// CHECK: call <2 x i16> @llvm.abs.v2i16( |
18 |
| -int16_t2 test_abs_int16_t2 ( int16_t2 p0 ) { |
19 |
| - return abs ( p0 ); |
20 |
| -} |
21 |
| -// CHECK: define noundef <3 x i16> @ |
22 |
| -// CHECK: call <3 x i16> @llvm.abs.v3i16( |
23 |
| -int16_t3 test_abs_int16_t3 ( int16_t3 p0 ) { |
24 |
| - return abs ( p0 ); |
25 |
| -} |
26 |
| -// CHECK: define noundef <4 x i16> @ |
27 |
| -// CHECK: call <4 x i16> @llvm.abs.v4i16( |
28 |
| -int16_t4 test_abs_int16_t4 ( int16_t4 p0 ) { |
29 |
| - return abs ( p0 ); |
30 |
| -} |
| 12 | +// NATIVE_HALF: define noundef i16 @ |
| 13 | +// NATIVE_HALF: call i16 @llvm.abs.i16( |
| 14 | +int16_t test_abs_int16_t(int16_t p0) { return abs(p0); } |
| 15 | +// NATIVE_HALF: define noundef <2 x i16> @ |
| 16 | +// NATIVE_HALF: call <2 x i16> @llvm.abs.v2i16( |
| 17 | +int16_t2 test_abs_int16_t2(int16_t2 p0) { return abs(p0); } |
| 18 | +// NATIVE_HALF: define noundef <3 x i16> @ |
| 19 | +// NATIVE_HALF: call <3 x i16> @llvm.abs.v3i16( |
| 20 | +int16_t3 test_abs_int16_t3(int16_t3 p0) { return abs(p0); } |
| 21 | +// NATIVE_HALF: define noundef <4 x i16> @ |
| 22 | +// NATIVE_HALF: call <4 x i16> @llvm.abs.v4i16( |
| 23 | +int16_t4 test_abs_int16_t4(int16_t4 p0) { return abs(p0); } |
31 | 24 | #endif // __HLSL_ENABLE_16_BIT
|
32 | 25 |
|
33 |
| -// CHECK: define noundef half @ |
34 |
| -// CHECK: call half @llvm.fabs.f16( |
| 26 | +// NATIVE_HALF: define noundef half @ |
| 27 | +// NATIVE_HALF: call half @llvm.fabs.f16( |
35 | 28 | // NO_HALF: define noundef float @"?test_abs_half@@YA$halff@$halff@@Z"(
|
36 | 29 | // NO_HALF: call float @llvm.fabs.f32(float %0)
|
37 |
| -half test_abs_half ( half p0 ) { |
38 |
| - return abs ( p0 ); |
39 |
| -} |
40 |
| -// CHECK: define noundef <2 x half> @ |
41 |
| -// CHECK: call <2 x half> @llvm.fabs.v2f16( |
| 30 | +half test_abs_half(half p0) { return abs(p0); } |
| 31 | +// NATIVE_HALF: define noundef <2 x half> @ |
| 32 | +// NATIVE_HALF: call <2 x half> @llvm.fabs.v2f16( |
42 | 33 | // NO_HALF: define noundef <2 x float> @"?test_abs_half2@@YAT?$__vector@$halff@$01@__clang@@T12@@Z"(
|
43 | 34 | // NO_HALF: call <2 x float> @llvm.fabs.v2f32(
|
44 |
| -half2 test_abs_half2 ( half2 p0 ) { |
45 |
| - return abs ( p0 ); |
46 |
| -} |
47 |
| -// CHECK: define noundef <3 x half> @ |
48 |
| -// CHECK: call <3 x half> @llvm.fabs.v3f16( |
| 35 | +half2 test_abs_half2(half2 p0) { return abs(p0); } |
| 36 | +// NATIVE_HALF: define noundef <3 x half> @ |
| 37 | +// NATIVE_HALF: call <3 x half> @llvm.fabs.v3f16( |
49 | 38 | // NO_HALF: define noundef <3 x float> @"?test_abs_half3@@YAT?$__vector@$halff@$02@__clang@@T12@@Z"(
|
50 | 39 | // NO_HALF: call <3 x float> @llvm.fabs.v3f32(
|
51 |
| -half3 test_abs_half3 ( half3 p0 ) { |
52 |
| - return abs ( p0 ); |
53 |
| -} |
54 |
| -// CHECK: define noundef <4 x half> @ |
55 |
| -// CHECK: call <4 x half> @llvm.fabs.v4f16( |
| 40 | +half3 test_abs_half3(half3 p0) { return abs(p0); } |
| 41 | +// NATIVE_HALF: define noundef <4 x half> @ |
| 42 | +// NATIVE_HALF: call <4 x half> @llvm.fabs.v4f16( |
56 | 43 | // NO_HALF: define noundef <4 x float> @"?test_abs_half4@@YAT?$__vector@$halff@$03@__clang@@T12@@Z"(
|
57 | 44 | // NO_HALF: call <4 x float> @llvm.fabs.v4f32(
|
58 |
| -half4 test_abs_half4 ( half4 p0 ) { |
59 |
| - return abs ( p0 ); |
60 |
| -} |
| 45 | +half4 test_abs_half4(half4 p0) { return abs(p0); } |
61 | 46 | // CHECK: define noundef i32 @
|
62 | 47 | // CHECK: call i32 @llvm.abs.i32(
|
63 |
| -// NO_HALF: define noundef i32 @"?test_abs_int@@YAHH@Z" |
64 |
| -int test_abs_int ( int p0 ) { |
65 |
| - return abs ( p0 ); |
66 |
| -} |
| 48 | +int test_abs_int(int p0) { return abs(p0); } |
67 | 49 | // CHECK: define noundef <2 x i32> @
|
68 | 50 | // CHECK: call <2 x i32> @llvm.abs.v2i32(
|
69 |
| -int2 test_abs_int2 ( int2 p0 ) { |
70 |
| - return abs ( p0 ); |
71 |
| -} |
| 51 | +int2 test_abs_int2(int2 p0) { return abs(p0); } |
72 | 52 | // CHECK: define noundef <3 x i32> @
|
73 | 53 | // CHECK: call <3 x i32> @llvm.abs.v3i32(
|
74 |
| -int3 test_abs_int3 ( int3 p0 ) { |
75 |
| - return abs ( p0 ); |
76 |
| -} |
| 54 | +int3 test_abs_int3(int3 p0) { return abs(p0); } |
77 | 55 | // CHECK: define noundef <4 x i32> @
|
78 | 56 | // CHECK: call <4 x i32> @llvm.abs.v4i32(
|
79 |
| -int4 test_abs_int4 ( int4 p0 ) { |
80 |
| - return abs ( p0 ); |
81 |
| -} |
| 57 | +int4 test_abs_int4(int4 p0) { return abs(p0); } |
82 | 58 | // CHECK: define noundef float @
|
83 | 59 | // CHECK: call float @llvm.fabs.f32(
|
84 |
| -float test_abs_float ( float p0 ) { |
85 |
| - return abs ( p0 ); |
86 |
| -} |
| 60 | +float test_abs_float(float p0) { return abs(p0); } |
87 | 61 | // CHECK: define noundef <2 x float> @
|
88 | 62 | // CHECK: call <2 x float> @llvm.fabs.v2f32(
|
89 |
| -float2 test_abs_float2 ( float2 p0 ) { |
90 |
| - return abs ( p0 ); |
91 |
| -} |
| 63 | +float2 test_abs_float2(float2 p0) { return abs(p0); } |
92 | 64 | // CHECK: define noundef <3 x float> @
|
93 | 65 | // CHECK: call <3 x float> @llvm.fabs.v3f32(
|
94 |
| -float3 test_abs_float3 ( float3 p0 ) { |
95 |
| - return abs ( p0 ); |
96 |
| -} |
| 66 | +float3 test_abs_float3(float3 p0) { return abs(p0); } |
97 | 67 | // CHECK: define noundef <4 x float> @
|
98 | 68 | // CHECK: call <4 x float> @llvm.fabs.v4f32(
|
99 |
| -float4 test_abs_float4 ( float4 p0 ) { |
100 |
| - return abs ( p0 ); |
101 |
| -} |
| 69 | +float4 test_abs_float4(float4 p0) { return abs(p0); } |
102 | 70 | // CHECK: define noundef i64 @
|
103 | 71 | // CHECK: call i64 @llvm.abs.i64(
|
104 |
| -int64_t test_abs_int64_t ( int64_t p0 ) { |
105 |
| - return abs ( p0 ); |
106 |
| -} |
| 72 | +int64_t test_abs_int64_t(int64_t p0) { return abs(p0); } |
107 | 73 | // CHECK: define noundef <2 x i64> @
|
108 | 74 | // CHECK: call <2 x i64> @llvm.abs.v2i64(
|
109 |
| -int64_t2 test_abs_int64_t2 ( int64_t2 p0 ) { |
110 |
| - return abs ( p0 ); |
111 |
| -} |
| 75 | +int64_t2 test_abs_int64_t2(int64_t2 p0) { return abs(p0); } |
112 | 76 | // CHECK: define noundef <3 x i64> @
|
113 | 77 | // CHECK: call <3 x i64> @llvm.abs.v3i64(
|
114 |
| -int64_t3 test_abs_int64_t3 ( int64_t3 p0 ) { |
115 |
| - return abs ( p0 ); |
116 |
| -} |
| 78 | +int64_t3 test_abs_int64_t3(int64_t3 p0) { return abs(p0); } |
117 | 79 | // CHECK: define noundef <4 x i64> @
|
118 | 80 | // CHECK: call <4 x i64> @llvm.abs.v4i64(
|
119 |
| -int64_t4 test_abs_int64_t4 ( int64_t4 p0 ) { |
120 |
| - return abs ( p0 ); |
121 |
| -} |
| 81 | +int64_t4 test_abs_int64_t4(int64_t4 p0) { return abs(p0); } |
122 | 82 | // CHECK: define noundef double @
|
123 | 83 | // CHECK: call double @llvm.fabs.f64(
|
124 |
| -double test_abs_double ( double p0 ) { |
125 |
| - return abs ( p0 ); |
126 |
| -} |
| 84 | +double test_abs_double(double p0) { return abs(p0); } |
127 | 85 | // CHECK: define noundef <2 x double> @
|
128 | 86 | // CHECK: call <2 x double> @llvm.fabs.v2f64(
|
129 |
| -double2 test_abs_double2 ( double2 p0 ) { |
130 |
| - return abs ( p0 ); |
131 |
| -} |
| 87 | +double2 test_abs_double2(double2 p0) { return abs(p0); } |
132 | 88 | // CHECK: define noundef <3 x double> @
|
133 | 89 | // CHECK: call <3 x double> @llvm.fabs.v3f64(
|
134 |
| -double3 test_abs_double3 ( double3 p0 ) { |
135 |
| - return abs ( p0 ); |
136 |
| -} |
| 90 | +double3 test_abs_double3(double3 p0) { return abs(p0); } |
137 | 91 | // CHECK: define noundef <4 x double> @
|
138 | 92 | // CHECK: call <4 x double> @llvm.fabs.v4f64(
|
139 |
| -double4 test_abs_double4 ( double4 p0 ) { |
140 |
| - return abs ( p0 ); |
141 |
| -} |
| 93 | +double4 test_abs_double4(double4 p0) { return abs(p0); } |
0 commit comments