Skip to content

Commit 9938086

Browse files
committed
add constexpr evaluation and passes a int
1 parent 783b396 commit 9938086

File tree

1 file changed

+46
-5
lines changed

1 file changed

+46
-5
lines changed

clang/test/CodeGen/builtins.c

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ int main(void) {
6969
P(issignaling, (1.));
7070
P(isfpclass, (1., 1));
7171

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+
7279
// Bitwise & Numeric Functions
7380

7481
P(abs, (N));
@@ -305,7 +312,7 @@ void test_float_builtins(__fp16 *H, float F, double D, long double LD) {
305312
}
306313

307314
// 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) {
309316
volatile float resf;
310317
volatile double resd;
311318
volatile long double resld;
@@ -356,20 +363,54 @@ void test_float_builtin_ops(float F, double D, long double LD) {
356363
resf = __builtin_fminimum_numf(F, F);
357364
// CHECK: call float @llvm.minimumnum.f32
358365

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+
359374
resd = __builtin_fminimum_num(D, D);
360375
// CHECK: call double @llvm.minimumnum.f64
361376

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
364388

365389
resf = __builtin_fmaximum_numf(F, F);
366390
// CHECK: call float @llvm.maximumnum.f32
367391

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+
368400
resd = __builtin_fmaximum_num(D, D);
369401
// CHECK: call double @llvm.maximumnum.f64
370402

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
373414

374415
resf = __builtin_fabsf(F);
375416
// CHECK: call float @llvm.fabs.f32

0 commit comments

Comments
 (0)