@@ -20,6 +20,34 @@ int16_t3 test_abs_int16_t3(int16_t3 p0) { return abs(p0); }
20
20
// NATIVE_HALF-LABEL: define noundef <4 x i16> @_Z17test_abs_int16_t4
21
21
// NATIVE_HALF: call <4 x i16> @llvm.abs.v4i16(
22
22
int16_t4 test_abs_int16_t4 (int16_t4 p0) { return abs (p0); }
23
+
24
+ // NATIVE_HALF-LABEL: define {{.*}}hlsl3abs{{.*}}(i16
25
+ // NATIVE_HALF: [[Alloca:%.*]] = alloca i16
26
+ // NATIVE_HALF-NEXT: store i16 {{%.*}}, ptr [[Alloca]]
27
+ // NATIVE_HALF-NEXT: [[Val:%.*]] = load i16, ptr [[Alloca]]
28
+ // NATIVE_HALF-NEXT: ret i16 [[Val]]
29
+ uint16_t test_abs_uint64_t (uint16_t p0) { return abs (p0); }
30
+
31
+ // NATIVE_HALF-LABEL: define {{.*}}hlsl3abs{{.*}}(<2 x i16
32
+ // NATIVE_HALF: [[Alloca:%.*]] = alloca <2 x i16>
33
+ // NATIVE_HALF-NEXT: store <2 x i16> {{%.*}}, ptr [[Alloca]]
34
+ // NATIVE_HALF-NEXT: [[Val:%.*]] = load <2 x i16>, ptr [[Alloca]]
35
+ // NATIVE_HALF-NEXT: ret <2 x i16> [[Val]]
36
+ uint16_t2 test_abs_uint64_t2 (uint16_t2 p0) { return abs (p0); }
37
+
38
+ // NATIVE_HALF-LABEL: define {{.*}}hlsl3abs{{.*}}(<3 x i16
39
+ // NATIVE_HALF: [[Alloca:%.*]] = alloca <3 x i16>
40
+ // NATIVE_HALF-NEXT: store <3 x i16> {{%.*}}, ptr [[Alloca]]
41
+ // NATIVE_HALF-NEXT: [[Val:%.*]] = load <3 x i16>, ptr [[Alloca]]
42
+ // NATIVE_HALF-NEXT: ret <3 x i16> [[Val]]
43
+ uint16_t3 test_abs_uint64_t3 (uint16_t3 p0) { return abs (p0); }
44
+
45
+ // NATIVE_HALF-LABEL: define {{.*}}hlsl3abs{{.*}}(<4 x i16
46
+ // NATIVE_HALF: [[Alloca:%.*]] = alloca <4 x i16>
47
+ // NATIVE_HALF-NEXT: store <4 x i16> {{%.*}}, ptr [[Alloca]]
48
+ // NATIVE_HALF-NEXT: [[Val:%.*]] = load <4 x i16>, ptr [[Alloca]]
49
+ // NATIVE_HALF-NEXT: ret <4 x i16> [[Val]]
50
+ uint16_t4 test_abs_uint64_t4 (uint16_t4 p0) { return abs (p0); }
23
51
#endif // __HLSL_ENABLE_16_BIT
24
52
25
53
// NATIVE_HALF-LABEL: define noundef nofpclass(nan inf) half @_Z13test_abs_half
@@ -94,3 +122,60 @@ double3 test_abs_double3(double3 p0) { return abs(p0); }
94
122
// CHECK-LABEL: define noundef nofpclass(nan inf) <4 x double> @_Z16test_abs_double4
95
123
// CHECK: call reassoc nnan ninf nsz arcp afn <4 x double> @llvm.fabs.v4f64(
96
124
double4 test_abs_double4 (double4 p0) { return abs (p0); }
125
+
126
+
127
+ // CHECK-LABEL: define {{.*}}hlsl3abs{{.*}}(i32
128
+ // CHECK: [[Alloca:%.*]] = alloca i32
129
+ // CHECK-NEXT: store i32 {{%.*}}, ptr [[Alloca]]
130
+ // CHECK-NEXT: [[Val:%.*]] = load i32, ptr [[Alloca]]
131
+ // CHECK-NEXT: ret i32 [[Val]]
132
+ uint test_abs_uint (uint p0) { return abs (p0); }
133
+
134
+ // CHECK-LABEL: define {{.*}}hlsl3abs{{.*}}(<2 x i32
135
+ // CHECK: [[Alloca:%.*]] = alloca <2 x i32>
136
+ // CHECK-NEXT: store <2 x i32> {{%.*}}, ptr [[Alloca]]
137
+ // CHECK-NEXT: [[Val:%.*]] = load <2 x i32>, ptr [[Alloca]]
138
+ // CHECK-NEXT: ret <2 x i32> [[Val]]
139
+ uint2 test_abs_uint2 (uint2 p0) { return abs (p0); }
140
+
141
+ // CHECK-LABEL: define {{.*}}hlsl3abs{{.*}}(<3 x i32
142
+ // CHECK: [[Alloca:%.*]] = alloca <3 x i32>
143
+ // CHECK-NEXT: store <3 x i32> {{%.*}}, ptr [[Alloca]]
144
+ // CHECK-NEXT: [[Val:%.*]] = load <3 x i32>, ptr [[Alloca]]
145
+ // CHECK-NEXT: ret <3 x i32> [[Val]]
146
+ uint3 test_abs_uint3 (uint3 p0) { return abs (p0); }
147
+
148
+ // CHECK-LABEL: define {{.*}}hlsl3abs{{.*}}(<4 x i32
149
+ // CHECK: [[Alloca:%.*]] = alloca <4 x i32>
150
+ // CHECK-NEXT: store <4 x i32> {{%.*}}, ptr [[Alloca]]
151
+ // CHECK-NEXT: [[Val:%.*]] = load <4 x i32>, ptr [[Alloca]]
152
+ // CHECK-NEXT: ret <4 x i32> [[Val]]
153
+ uint4 test_abs_uint4 (uint4 p0) { return abs (p0); }
154
+
155
+ // CHECK-LABEL: define {{.*}}hlsl3abs{{.*}}(i64
156
+ // CHECK: [[Alloca:%.*]] = alloca i64
157
+ // CHECK-NEXT: store i64 {{%.*}}, ptr [[Alloca]]
158
+ // CHECK-NEXT: [[Val:%.*]] = load i64, ptr [[Alloca]]
159
+ // CHECK-NEXT: ret i64 [[Val]]
160
+ uint64_t test_abs_uint64_t (uint64_t p0) { return abs (p0); }
161
+
162
+ // CHECK-LABEL: define {{.*}}hlsl3abs{{.*}}(<2 x i64
163
+ // CHECK: [[Alloca:%.*]] = alloca <2 x i64>
164
+ // CHECK-NEXT: store <2 x i64> {{%.*}}, ptr [[Alloca]]
165
+ // CHECK-NEXT: [[Val:%.*]] = load <2 x i64>, ptr [[Alloca]]
166
+ // CHECK-NEXT: ret <2 x i64> [[Val]]
167
+ uint64_t2 test_abs_uint64_t2 (uint64_t2 p0) { return abs (p0); }
168
+
169
+ // CHECK-LABEL: define {{.*}}hlsl3abs{{.*}}(<3 x i64
170
+ // CHECK: [[Alloca:%.*]] = alloca <3 x i64>
171
+ // CHECK-NEXT: store <3 x i64> {{%.*}}, ptr [[Alloca]]
172
+ // CHECK-NEXT: [[Val:%.*]] = load <3 x i64>, ptr [[Alloca]]
173
+ // CHECK-NEXT: ret <3 x i64> [[Val]]
174
+ uint64_t3 test_abs_uint64_t3 (uint64_t3 p0) { return abs (p0); }
175
+
176
+ // CHECK-LABEL: define {{.*}}hlsl3abs{{.*}}(<4 x i64
177
+ // CHECK: [[Alloca:%.*]] = alloca <4 x i64>
178
+ // CHECK-NEXT: store <4 x i64> {{%.*}}, ptr [[Alloca]]
179
+ // CHECK-NEXT: [[Val:%.*]] = load <4 x i64>, ptr [[Alloca]]
180
+ // CHECK-NEXT: ret <4 x i64> [[Val]]
181
+ uint64_t4 test_abs_uint64_t4 (uint64_t4 p0) { return abs (p0); }
0 commit comments