@@ -265,5 +265,143 @@ unsigned __int64 check__readx18qword(unsigned LONG offset) {
265
265
// CHECK-MSCOMPAT: %[[RETVAL:.*]] = load i64, ptr %[[PTR]], align 1
266
266
// CHECK-MSCOMPAT: ret i64 %[[RETVAL]]
267
267
268
+ double check__CopyDoubleFromInt64 (__int64 arg1 ) {
269
+ return _CopyDoubleFromInt64 (arg1 );
270
+ }
271
+
272
+ // CHECK-MSCOMPAT: %[[ARG:.*]].addr = alloca i64, align 8
273
+ // CHECK-MSCOMPAT: store i64 %[[ARG]], ptr %[[ARG]].addr, align 8
274
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load i64, ptr %[[ARG]].addr, align 8
275
+ // CHECK-MSCOMPAT: %[[VAR1:.*]] = bitcast i64 %[[VAR0]] to double
276
+ // CHECK-MSCOMPAT: ret double %[[VAR1]]
277
+ // CHECK-LINUX: error: call to undeclared function '_CopyDoubleFromInt64'
278
+
279
+ float check__CopyFloatFromInt32 (__int32 arg1 ) {
280
+ return _CopyFloatFromInt32 (arg1 );
281
+ }
282
+
283
+ // CHECK-MSCOMPAT: %[[ARG:.*]].addr = alloca i32, align 4
284
+ // CHECK-MSCOMPAT: store i32 %[[ARG]], ptr %[[ARG]].addr, align 4
285
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load i32, ptr %[[ARG]].addr, align 4
286
+ // CHECK-MSCOMPAT: %[[VAR1:.*]] = bitcast i32 %[[VAR0]] to float
287
+ // CHECK-MSCOMPAT: ret float %[[VAR1]]
288
+ // CHECK-LINUX: error: call to undeclared function '_CopyFloatFromInt32'
289
+
290
+ __int32 check__CopyInt32FromFloat (float arg1 ) {
291
+ return _CopyInt32FromFloat (arg1 );
292
+ }
293
+
294
+ // CHECK-MSCOMPAT: %[[ARG:.*]].addr = alloca float, align 4
295
+ // CHECK-MSCOMPAT: store float %[[ARG]], ptr %[[ARG]].addr, align 4
296
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load float, ptr %[[ARG]].addr, align 4
297
+ // CHECK-MSCOMPAT: %[[VAR1:.*]] = bitcast float %[[VAR0]] to i32
298
+ // CHECK-MSCOMPAT: ret i32 %[[VAR1]]
299
+ // CHECK-LINUX: error: call to undeclared function '_CopyInt32FromFloat'
300
+
301
+ __int64 check__CopyInt64FromDouble (double arg1 ) {
302
+ return _CopyInt64FromDouble (arg1 );
303
+ }
304
+
305
+ // CHECK-MSCOMPAT: %[[ARG:.*]].addr = alloca double, align 8
306
+ // CHECK-MSCOMPAT: store double %[[ARG]], ptr %[[ARG]].addr, align 8
307
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load double, ptr %[[ARG]].addr, align 8
308
+ // CHECK-MSCOMPAT: %[[VAR1:.*]] = bitcast double %[[VAR0]] to i64
309
+ // CHECK-MSCOMPAT: ret i64 %[[VAR1]]
310
+ // CHECK-LINUX: error: call to undeclared function '_CopyInt64FromDouble'
311
+
312
+ unsigned int check__CountLeadingOnes (unsigned LONG arg1 ) {
313
+ return _CountLeadingOnes (arg1 );
314
+ }
315
+
316
+ // CHECK-MSCOMPAT: %[[ARG1:.*]].addr = alloca i32, align 4
317
+ // CHECK-MSCOMPAT: store i32 %[[ARG1]], ptr %[[ARG1]].addr, align 4
318
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load i32, ptr %[[ARG1]].addr, align 4
319
+ // CHECK-MSCOMPAT: %[[VAR1:.*]] = xor i32 %[[VAR0]], -1
320
+ // CHECK-MSCOMPAT: %[[VAR2:.*]] = call i32 @llvm.ctlz.i32(i32 %1, i1 false)
321
+ // CHECK-MSCOMPAT: ret i32 %[[VAR2]]
322
+ // CHECK-LINUX: error: call to undeclared function '_CountLeadingOnes'
323
+
324
+ unsigned int check__CountLeadingOnes64 (unsigned __int64 arg1 ) {
325
+ return _CountLeadingOnes64 (arg1 );
326
+ }
327
+
328
+ // CHECK-MSCOMPAT: %[[ARG1:.*]].addr = alloca i64, align 8
329
+ // CHECK-MSCOMPAT: store i64 %[[ARG1]], ptr %[[ARG1]].addr, align 8
330
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load i64, ptr %[[ARG1]].addr, align 8
331
+ // CHECK-MSCOMPAT: %[[VAR1:.*]] = xor i64 %[[VAR0]], -1
332
+ // CHECK-MSCOMPAT: %[[VAR2:.*]] = call i64 @llvm.ctlz.i64(i64 %1, i1 false)
333
+ // CHECK-MSCOMPAT: %[[VAR3:.*]] = trunc i64 %2 to i32
334
+ // CHECK-MSCOMPAT: ret i32 %[[VAR3]]
335
+ // CHECK-LINUX: error: call to undeclared function '_CountLeadingOnes64'
336
+
337
+ unsigned int check__CountLeadingSigns (__int32 arg1 ) {
338
+ return _CountLeadingSigns (arg1 );
339
+ }
340
+
341
+ // CHECK-MSCOMPAT: %[[ARG1:.*]].addr = alloca i32, align 4
342
+ // CHECK-MSCOMPAT: store i32 %[[ARG1]], ptr %[[ARG1]].addr, align 4
343
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load i32, ptr %[[ARG1]].addr, align 4
344
+ // CHECK-MSCOMPAT: %[[CLS:.*]] = call i32 @llvm.aarch64.cls(i32 %[[VAR0]])
345
+ // CHECK-MSCOMPAT: ret i32 %[[CLS]]
346
+ // CHECK-LINUX: error: call to undeclared function '_CountLeadingSigns'
347
+
348
+ unsigned int check__CountLeadingSigns64 (__int64 arg1 ) {
349
+ return _CountLeadingSigns64 (arg1 );
350
+ }
351
+
352
+ // CHECK-MSCOMPAT: %[[ARG1:.*]].addr = alloca i64, align 8
353
+ // CHECK-MSCOMPAT: store i64 %[[ARG1]], ptr %[[ARG1]].addr, align 8
354
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load i64, ptr %[[ARG1]].addr, align 8
355
+ // CHECK-MSCOMPAT: %[[CLS:.*]] = call i32 @llvm.aarch64.cls64(i64 %[[VAR0]])
356
+ // CHECK-MSCOMPAT: ret i32 %[[CLS]]
357
+ // CHECK-LINUX: error: call to undeclared function '_CountLeadingSigns64'
358
+
359
+ unsigned int check__CountLeadingZeros (__int32 arg1 ) {
360
+ return _CountLeadingZeros (arg1 );
361
+ }
362
+
363
+ // CHECK-MSCOMPAT: %[[ARG1:.*]].addr = alloca i32, align 4
364
+ // CHECK-MSCOMPAT: store i32 %[[ARG1]], ptr %[[ARG1]].addr, align 4
365
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load i32, ptr %[[ARG1]].addr, align 4
366
+ // CHECK-MSCOMPAT: %[[VAR1:.*]] = call i32 @llvm.ctlz.i32(i32 %[[VAR0]], i1 false)
367
+ // CHECK-MSCOMPAT: ret i32 %[[VAR1]]
368
+ // CHECK-LINUX: error: call to undeclared function '_CountLeadingZeros'
369
+
370
+ unsigned int check__CountLeadingZeros64 (__int64 arg1 ) {
371
+ return _CountLeadingZeros64 (arg1 );
372
+ }
373
+
374
+ // CHECK-MSCOMPAT: %[[ARG1:.*]].addr = alloca i64, align 8
375
+ // CHECK-MSCOMPAT: store i64 %[[ARG1]], ptr %[[ARG1]].addr, align 8
376
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load i64, ptr %[[ARG1]].addr, align 8
377
+ // CHECK-MSCOMPAT: %[[VAR1:.*]] = call i64 @llvm.ctlz.i64(i64 %[[VAR0]], i1 false)
378
+ // CHECK-MSCOMPAT: %[[VAR2:.*]] = trunc i64 %[[VAR1]] to i32
379
+ // CHECK-MSCOMPAT: ret i32 %[[VAR2]]
380
+ // CHECK-LINUX: error: call to undeclared function '_CountLeadingZeros64'
381
+
382
+ unsigned int check_CountOneBits (unsigned LONG arg1 ) {
383
+ return _CountOneBits (arg1 );
384
+ }
385
+
386
+ // CHECK-MSCOMPAT: %[[ARG1:.*]].addr = alloca i32, align 4
387
+ // CHECK-MSCOMPAT: store i32 %[[ARG1]], ptr %[[ARG1]].addr, align 4
388
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load i32, ptr %[[ARG1]].addr, align 4
389
+ // CHECK-MSCOMPAT: %[[VAR1:.*]] = call i32 @llvm.ctpop.i32(i32 %0)
390
+ // CHECK-MSCOMPAT: ret i32 %[[VAR1]]
391
+ // CHECK-LINUX: error: call to undeclared function '_CountOneBits'
392
+
393
+ unsigned int check_CountOneBits64 (unsigned __int64 arg1 ) {
394
+ return _CountOneBits64 (arg1 );
395
+ }
396
+
397
+ // CHECK-MSCOMPAT: %[[ARG1:.*]].addr = alloca i64, align 8
398
+ // CHECK-MSCOMPAT: store i64 %[[ARG1]], ptr %[[ARG1]].addr, align 8
399
+ // CHECK-MSCOMPAT: %[[VAR0:.*]] = load i64, ptr %[[ARG1]].addr, align 8
400
+ // CHECK-MSCOMPAT: %[[VAR1:.*]] = call i64 @llvm.ctpop.i64(i64 %0)
401
+ // CHECK-MSCOMPAT: %[[VAR2:.*]] = trunc i64 %1 to i32
402
+ // CHECK-MSCOMPAT: ret i32 %[[VAR2]]
403
+ // CHECK-LINUX: error: call to undeclared function '_CountOneBits64'
404
+
405
+
268
406
// CHECK-MSCOMPAT: ![[MD2]] = !{!"x18"}
269
407
// CHECK-MSCOMPAT: ![[MD3]] = !{!"sp"}
0 commit comments