@@ -112,6 +112,27 @@ int3 test_sign_int16_t3(int16_t3 p0) { return sign(p0); }
112
112
// NATIVE_HALF: %hlsl.sign = call <4 x i32> @llvm.[[TARGET]].sign.v4i16(
113
113
// NATIVE_HALF: ret <4 x i32> %hlsl.sign
114
114
int4 test_sign_int16_t4 (int16_t4 p0) { return sign (p0); }
115
+
116
+
117
+ // NATIVE_HALF: define [[FNATTRS]] i32 @
118
+ // NATIVE_HALF: [[CMP:%.*]] = icmp eq i16 [[ARG:%.*]], 0
119
+ // NATIVE_HALF: %hlsl.sign = select i1 [[CMP]], i32 0, i32 1
120
+ int test_sign_uint16_t (uint16_t p0) { return sign (p0); }
121
+
122
+ // NATIVE_HALF: define [[FNATTRS]] <2 x i32> @
123
+ // NATIVE_HALF: [[CMP:%.*]] = icmp eq <2 x i16> [[ARG:%.*]], zeroinitializer
124
+ // NATIVE_HALF: %hlsl.sign = select <2 x i1> [[CMP]], <2 x i32> zeroinitializer, <2 x i32> <i32 1, i32 1>
125
+ int2 test_sign_uint16_t2 (uint16_t2 p0) { return sign (p0); }
126
+
127
+ // NATIVE_HALF: define [[FNATTRS]] <3 x i32> @
128
+ // NATIVE_HALF: [[CMP:%.*]] = icmp eq <3 x i16> [[ARG:%.*]], zeroinitializer
129
+ // NATIVE_HALF: %hlsl.sign = select <3 x i1> [[CMP]], <3 x i32> zeroinitializer, <3 x i32> <i32 1, i32 1, i32 1>
130
+ int3 test_sign_uint16_t3 (uint16_t3 p0) { return sign (p0); }
131
+
132
+ // NATIVE_HALF: define [[FNATTRS]] <4 x i32> @
133
+ // NATIVE_HALF: [[CMP:%.*]] = icmp eq <4 x i16> [[ARG:%.*]], zeroinitializer
134
+ // NATIVE_HALF: %hlsl.sign = select <4 x i1> [[CMP]], <4 x i32> zeroinitializer, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
135
+ int4 test_sign_uint16_t4 (uint16_t4 p0) { return sign (p0); }
115
136
#endif // __HLSL_ENABLE_16_BIT
116
137
117
138
@@ -136,6 +157,27 @@ int3 test_sign_int3(int3 p0) { return sign(p0); }
136
157
int4 test_sign_int4 (int4 p0) { return sign (p0); }
137
158
138
159
160
+ // CHECK: define [[FNATTRS]] i32 @
161
+ // CHECK: [[CMP:%.*]] = icmp eq i32 [[ARG:%.*]], 0
162
+ // CHECK: %hlsl.sign = select i1 [[CMP]], i32 0, i32 1
163
+ int test_sign_uint (uint p0) { return sign (p0); }
164
+
165
+ // CHECK: define [[FNATTRS]] <2 x i32> @
166
+ // CHECK: [[CMP:%.*]] = icmp eq <2 x i32> [[ARG:%.*]], zeroinitializer
167
+ // CHECK: %hlsl.sign = select <2 x i1> [[CMP]], <2 x i32> zeroinitializer, <2 x i32> <i32 1, i32 1>
168
+ int2 test_sign_uint2 (uint2 p0) { return sign (p0); }
169
+
170
+ // CHECK: define [[FNATTRS]] <3 x i32> @
171
+ // CHECK: [[CMP:%.*]] = icmp eq <3 x i32> [[ARG:%.*]], zeroinitializer
172
+ // CHECK: %hlsl.sign = select <3 x i1> [[CMP]], <3 x i32> zeroinitializer, <3 x i32> <i32 1, i32 1, i32 1>
173
+ int3 test_sign_uint3 (uint3 p0) { return sign (p0); }
174
+
175
+ // CHECK: define [[FNATTRS]] <4 x i32> @
176
+ // CHECK: [[CMP:%.*]] = icmp eq <4 x i32> [[ARG:%.*]], zeroinitializer
177
+ // CHECK: %hlsl.sign = select <4 x i1> [[CMP]], <4 x i32> zeroinitializer, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
178
+ int4 test_sign_uint4 (uint4 p0) { return sign (p0); }
179
+
180
+
139
181
// CHECK: define [[FNATTRS]] i32 @
140
182
// CHECK: %hlsl.sign = call i32 @llvm.[[TARGET]].sign.i64(
141
183
// CHECK: ret i32 %hlsl.sign
@@ -155,3 +197,24 @@ int3 test_sign_int64_t3(int64_t3 p0) { return sign(p0); }
155
197
// CHECK: %hlsl.sign = call <4 x i32> @llvm.[[TARGET]].sign.v4i64(
156
198
// CHECK: ret <4 x i32> %hlsl.sign
157
199
int4 test_sign_int64_t4 (int64_t4 p0) { return sign (p0); }
200
+
201
+
202
+ // CHECK: define [[FNATTRS]] i32 @
203
+ // CHECK: [[CMP:%.*]] = icmp eq i64 [[ARG:%.*]], 0
204
+ // CHECK: %hlsl.sign = select i1 [[CMP]], i32 0, i32 1
205
+ int test_sign_int64_t (uint64_t p0) { return sign (p0); }
206
+
207
+ // CHECK: define [[FNATTRS]] <2 x i32> @
208
+ // CHECK: [[CMP:%.*]] = icmp eq <2 x i64> [[ARG:%.*]], zeroinitializer
209
+ // CHECK: %hlsl.sign = select <2 x i1> [[CMP]], <2 x i32> zeroinitializer, <2 x i32> <i32 1, i32 1>
210
+ int2 test_sign_int64_t2 (uint64_t2 p0) { return sign (p0); }
211
+
212
+ // CHECK: define [[FNATTRS]] <3 x i32> @
213
+ // CHECK: [[CMP:%.*]] = icmp eq <3 x i64> [[ARG:%.*]], zeroinitializer
214
+ // CHECK: %hlsl.sign = select <3 x i1> [[CMP]], <3 x i32> zeroinitializer, <3 x i32> <i32 1, i32 1, i32 1>
215
+ int3 test_sign_int64_t3 (uint64_t3 p0) { return sign (p0); }
216
+
217
+ // CHECK: define [[FNATTRS]] <4 x i32> @
218
+ // CHECK: [[CMP:%.*]] = icmp eq <4 x i64> [[ARG:%.*]], zeroinitializer
219
+ // CHECK: %hlsl.sign = select <4 x i1> [[CMP]], <4 x i32> zeroinitializer, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
220
+ int4 test_sign_int64_t4 (uint64_t4 p0) { return sign (p0); }
0 commit comments