@@ -69,6 +69,13 @@ int main(void) {
69
69
P (issignaling , (1. ));
70
70
P (isfpclass , (1. , 1 ));
71
71
72
+ Q (fmaximum_num , (1.0 , 2.0 ));
73
+ Q (fmaximum_numf , (1.0 , 2.0 ));
74
+ Q (fmaximum_numl , (1.0 , 2.0 ));
75
+ Q (fminimum_num , (1.0 , 2.0 ));
76
+ Q (fminimum_numf , (1.0 , 2.0 ));
77
+ Q (fminimum_numl , (1.0 , 2.0 ));
78
+
72
79
// Bitwise & Numeric Functions
73
80
74
81
P (abs , (N ));
@@ -305,7 +312,7 @@ void test_float_builtins(__fp16 *H, float F, double D, long double LD) {
305
312
}
306
313
307
314
// CHECK-LABEL: define{{.*}} void @test_float_builtin_ops
308
- void test_float_builtin_ops (float F , double D , long double LD ) {
315
+ void test_float_builtin_ops (float F , double D , long double LD , int I ) {
309
316
volatile float resf ;
310
317
volatile double resd ;
311
318
volatile long double resld ;
@@ -356,20 +363,54 @@ void test_float_builtin_ops(float F, double D, long double LD) {
356
363
resf = __builtin_fminimum_numf (F , F );
357
364
// CHECK: call float @llvm.minimumnum.f32
358
365
366
+ resf = __builtin_fminimum_numf (I , I );
367
+ // CHECK: sitofp i32 {{%[0-9]+}} to float
368
+ // CHECK: sitofp i32 {{%[0-9]+}} to float
369
+ // CHECK: call float @llvm.minimumnum.f32
370
+
371
+ resf = __builtin_fminimum_numf (1.0 , 2.0 );
372
+ // CHECK: store volatile float 1.000000e+00, ptr %resf
373
+
359
374
resd = __builtin_fminimum_num (D , D );
360
375
// CHECK: call double @llvm.minimumnum.f64
361
376
362
- resld = __builtin_fminimum_numl (LD , LD );
363
- // CHECK: call x86_fp80 @llvm.minimumnum.f80
377
+ resd = __builtin_fminimum_num (I , I );
378
+ // CHECK: sitofp i32 {{%[0-9]+}} to double
379
+ // CHECK: sitofp i32 {{%[0-9]+}} to double
380
+ // CHECK: call double @llvm.minimumnum.f64
381
+
382
+ resd = __builtin_fminimum_num (1.0 , 2.0 );
383
+ // CHECK: store volatile double 1.000000e+00, ptr %resd
384
+
385
+ //FIXME: __builtin_fminimum_numl is not supported well yet.
386
+ resld = __builtin_fminimum_numl (1.0 , 2.0 );
387
+ // CHECK: store volatile x86_fp80 0xK3FFF8000000000000000, ptr %resld, align 16
364
388
365
389
resf = __builtin_fmaximum_numf (F , F );
366
390
// CHECK: call float @llvm.maximumnum.f32
367
391
392
+ resf = __builtin_fmaximum_numf (I , I );
393
+ // CHECK: sitofp i32 {{%[0-9]+}} to float
394
+ // CHECK: sitofp i32 {{%[0-9]+}} to float
395
+ // CHECK: call float @llvm.maximumnum.f32
396
+
397
+ resf = __builtin_fmaximum_numf (1.0 , 2.0 );
398
+ // CHECK: store volatile float 2.000000e+00, ptr %resf
399
+
368
400
resd = __builtin_fmaximum_num (D , D );
369
401
// CHECK: call double @llvm.maximumnum.f64
370
402
371
- resld = __builtin_fmaximum_numl (LD , LD );
372
- // CHECK: call x86_fp80 @llvm.maximumnum.f80
403
+ resd = __builtin_fmaximum_num (I , I );
404
+ // CHECK: sitofp i32 {{%[0-9]+}} to double
405
+ // CHECK: sitofp i32 {{%[0-9]+}} to double
406
+ // CHECK: call double @llvm.maximumnum.f64
407
+
408
+ resd = __builtin_fmaximum_num (1.0 , 2.0 );
409
+ // CHECK: store volatile double 2.000000e+00, ptr %resd
410
+
411
+ //FIXME: __builtin_fmaximum_numl is not supported well yet.
412
+ resld = __builtin_fmaximum_numl (1.0 , 2.0 );
413
+ // CHECK: store volatile x86_fp80 0xK40008000000000000000, ptr %resld, align 16
373
414
374
415
resf = __builtin_fabsf (F );
375
416
// CHECK: call float @llvm.fabs.f32
0 commit comments