1
1
//@ compile-flags: --crate-type=lib -Zmerge-functions=disabled -O
2
2
3
3
#![ feature( core_intrinsics) ]
4
+ #![ feature( f16, f128) ]
4
5
5
6
use std:: intrinsics:: is_val_statically_known;
6
7
@@ -49,7 +50,7 @@ pub fn _bool_false(b: bool) -> i32 {
49
50
50
51
#[ inline]
51
52
pub fn _iref ( a : & u8 ) -> i32 {
52
- if unsafe { is_val_statically_known ( a) } { 5 } else { 4 }
53
+ if is_val_statically_known ( a) { 5 } else { 4 }
53
54
}
54
55
55
56
// CHECK-LABEL: @_iref_borrow(
@@ -68,7 +69,7 @@ pub fn _iref_arg(a: &u8) -> i32 {
68
69
69
70
#[ inline]
70
71
pub fn _slice_ref ( a : & [ u8 ] ) -> i32 {
71
- if unsafe { is_val_statically_known ( a) } { 7 } else { 6 }
72
+ if is_val_statically_known ( a) { 7 } else { 6 }
72
73
}
73
74
74
75
// CHECK-LABEL: @_slice_ref_borrow(
@@ -84,3 +85,79 @@ pub fn _slice_ref_arg(a: &[u8]) -> i32 {
84
85
// CHECK: ret i32 6
85
86
_slice_ref ( a)
86
87
}
88
+
89
+ #[ inline]
90
+ pub fn _f16 ( a : f16 ) -> i32 {
91
+ if is_val_statically_known ( a) { 1 } else { 0 }
92
+ }
93
+
94
+ // CHECK-LABEL: @_f16_true(
95
+ #[ no_mangle]
96
+ pub fn _f16_true ( ) -> i32 {
97
+ // CHECK: ret i32 1
98
+ _f16 ( 1.0 )
99
+ }
100
+
101
+ // CHECK-LABEL: @_f16_false(
102
+ #[ no_mangle]
103
+ pub fn _f16_false ( a : f16 ) -> i32 {
104
+ // CHECK: ret i32 0
105
+ _f16 ( a)
106
+ }
107
+
108
+ #[ inline]
109
+ pub fn _f32 ( a : f32 ) -> i32 {
110
+ if is_val_statically_known ( a) { 1 } else { 0 }
111
+ }
112
+
113
+ // CHECK-LABEL: @_f32_true(
114
+ #[ no_mangle]
115
+ pub fn _f32_true ( ) -> i32 {
116
+ // CHECK: ret i32 1
117
+ _f32 ( 1.0 )
118
+ }
119
+
120
+ // CHECK-LABEL: @_f32_false(
121
+ #[ no_mangle]
122
+ pub fn _f32_false ( a : f32 ) -> i32 {
123
+ // CHECK: ret i32 0
124
+ _f32 ( a)
125
+ }
126
+
127
+ #[ inline]
128
+ pub fn _f64 ( a : f64 ) -> i32 {
129
+ if is_val_statically_known ( a) { 1 } else { 0 }
130
+ }
131
+
132
+ // CHECK-LABEL: @_f64_true(
133
+ #[ no_mangle]
134
+ pub fn _f64_true ( ) -> i32 {
135
+ // CHECK: ret i32 1
136
+ _f64 ( 1.0 )
137
+ }
138
+
139
+ // CHECK-LABEL: @_f64_false(
140
+ #[ no_mangle]
141
+ pub fn _f64_false ( a : f64 ) -> i32 {
142
+ // CHECK: ret i32 0
143
+ _f64 ( a)
144
+ }
145
+
146
+ #[ inline]
147
+ pub fn _f128 ( a : f128 ) -> i32 {
148
+ if is_val_statically_known ( a) { 1 } else { 0 }
149
+ }
150
+
151
+ // CHECK-LABEL: @_f128_true(
152
+ #[ no_mangle]
153
+ pub fn _f128_true ( ) -> i32 {
154
+ // CHECK: ret i32 1
155
+ _f128 ( 1.0 )
156
+ }
157
+
158
+ // CHECK-LABEL: @_f128_false(
159
+ #[ no_mangle]
160
+ pub fn _f128_false ( a : f128 ) -> i32 {
161
+ // CHECK: ret i32 0
162
+ _f128 ( a)
163
+ }
0 commit comments