@@ -12,6 +12,30 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
12
12
// NO__ERRNO: frem float
13
13
// NO__ERRNO: frem x86_fp80
14
14
// NO__ERRNO: frem fp128
15
+
16
+ // NO__ERRNO: [[FREXP_F64:%.+]] = call { double, i32 } @llvm.frexp.f64.i32(double %{{.+}})
17
+ // NO__ERRNO-NEXT: [[FREXP_F64_1:%.+]] = extractvalue { double, i32 } [[FREXP_F64]], 1
18
+ // NO__ERRNO-NEXT: store i32 [[FREXP_F64_1]], ptr %{{.+}}, align 4
19
+ // NO__ERRNO-NEXT: [[FREXP_F64_0:%.+]] = extractvalue { double, i32 } [[FREXP_F64]], 0
20
+
21
+ // NO__ERRNO: [[FREXP_F32:%.+]] = call { float, i32 } @llvm.frexp.f32.i32(float %{{.+}})
22
+ // NO__ERRNO-NEXT: [[FREXP_F32_1:%.+]] = extractvalue { float, i32 } [[FREXP_F32]], 1
23
+ // NO__ERRNO-NEXT: store i32 [[FREXP_F32_1]], ptr %{{.+}}, align 4
24
+ // NO__ERRNO-NEXT: [[FREXP_F32_0:%.+]] = extractvalue { float, i32 } [[FREXP_F32]], 0
25
+
26
+
27
+ // NO__ERRNO: [[FREXP_F80:%.+]] = call { x86_fp80, i32 } @llvm.frexp.f80.i32(x86_fp80 %{{.+}})
28
+ // NO__ERRNO-NEXT: [[FREXP_F80_1:%.+]] = extractvalue { x86_fp80, i32 } [[FREXP_F80]], 1
29
+ // NO__ERRNO-NEXT: store i32 [[FREXP_F80_1]], ptr %{{.+}}, align 4
30
+ // NO__ERRNO-NEXT: [[FREXP_F80_0:%.+]] = extractvalue { x86_fp80, i32 } [[FREXP_F80]], 0
31
+
32
+
33
+ // NO__ERRNO: [[FREXP_F128:%.+]] = call { fp128, i32 } @llvm.frexp.f128.i32(fp128 %{{.+}})
34
+ // NO__ERRNO-NEXT: [[FREXP_F128_1:%.+]] = extractvalue { fp128, i32 } [[FREXP_F128]], 1
35
+ // NO__ERRNO-NEXT: store i32 [[FREXP_F128_1]], ptr %{{.+}}, align 4
36
+ // NO__ERRNO-NEXT: [[FREXP_F128_0:%.+]] = extractvalue { fp128, i32 } [[FREXP_F128]], 0
37
+
38
+
15
39
// HAS_ERRNO: declare double @fmod(double noundef, double noundef) [[NOT_READNONE:#[0-9]+]]
16
40
// HAS_ERRNO: declare float @fmodf(float noundef, float noundef) [[NOT_READNONE]]
17
41
// HAS_ERRNO: declare x86_fp80 @fmodl(x86_fp80 noundef, x86_fp80 noundef) [[NOT_READNONE]]
@@ -52,14 +76,14 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
52
76
53
77
__builtin_frexp (f ,i ); __builtin_frexpf (f ,i ); __builtin_frexpl (f ,i ); __builtin_frexpf128 (f ,i );
54
78
55
- // NO__ERRNO: declare double @ frexp(double noundef, ptr noundef ) [[NOT_READNONE:#[0-9]+ ]]
56
- // NO__ERRNO: declare float @frexpf( float noundef, ptr noundef ) [[NOT_READNONE ]]
57
- // NO__ERRNO: declare x86_fp80 @frexpl( x86_fp80 noundef, ptr noundef ) [[NOT_READNONE ]]
58
- // NO__ERRNO: declare fp128 @frexpf128( fp128 noundef, ptr noundef ) [[NOT_READNONE ]]
59
- // HAS_ERRNO: declare double @ frexp(double noundef, ptr noundef ) [[NOT_READNONE ]]
60
- // HAS_ERRNO: declare float @frexpf( float noundef, ptr noundef ) [[NOT_READNONE ]]
61
- // HAS_ERRNO: declare x86_fp80 @frexpl( x86_fp80 noundef, ptr noundef ) [[NOT_READNONE ]]
62
- // HAS_ERRNO: declare fp128 @frexpf128( fp128 noundef, ptr noundef ) [[NOT_READNONE ]]
79
+ // NO__ERRNO: declare { double, i32 } @llvm. frexp.f64.i32 (double) [[READNONE_INTRINSIC ]]
80
+ // NO__ERRNO: declare { float, i32 } @llvm.frexp.f32.i32(float ) [[READNONE_INTRINSIC ]]
81
+ // NO__ERRNO: declare { x86_fp80, i32 } @llvm.frexp.f80.i32(x86_fp80 ) [[READNONE_INTRINSIC ]]
82
+ // NO__ERRNO: declare { fp128, i32 } @llvm.frexp.f128.i32(fp128 ) [[READNONE_INTRINSIC ]]
83
+ // HAS_ERRNO: declare { double, i32 } @llvm. frexp.f64.i32 (double) [[READNONE_INTRINSIC ]]
84
+ // HAS_ERRNO: declare { float, i32 } @llvm.frexp.f32.i32(float ) [[READNONE_INTRINSIC ]]
85
+ // HAS_ERRNO: declare { x86_fp80, i32 } @llvm.frexp.f80.i32(x86_fp80 ) [[READNONE_INTRINSIC ]]
86
+ // HAS_ERRNO: declare { fp128, i32 } @llvm.frexp.f128.i32(fp128 ) [[READNONE_INTRINSIC ]]
63
87
64
88
__builtin_huge_val (); __builtin_huge_valf (); __builtin_huge_vall (); __builtin_huge_valf128 ();
65
89
@@ -88,7 +112,7 @@ void foo(double *d, float f, float *fp, long double *l, int *i, const char *c) {
88
112
89
113
__builtin_modf (f ,d ); __builtin_modff (f ,fp ); __builtin_modfl (f ,l ); __builtin_modff128 (f ,l );
90
114
91
- // NO__ERRNO: declare double @modf(double noundef, ptr noundef) [[NOT_READNONE]]
115
+ // NO__ERRNO: declare double @modf(double noundef, ptr noundef) [[NOT_READNONE:#[0-9]+ ]]
92
116
// NO__ERRNO: declare float @modff(float noundef, ptr noundef) [[NOT_READNONE]]
93
117
// NO__ERRNO: declare x86_fp80 @modfl(x86_fp80 noundef, ptr noundef) [[NOT_READNONE]]
94
118
// NO__ERRNO: declare fp128 @modff128(fp128 noundef, ptr noundef) [[NOT_READNONE]]
0 commit comments