Skip to content

Commit 0a95675

Browse files
authored
Merge pull request #224 from alexcrichton/fix-float-cmp
Fix some typos/bugs with float comparison intrinsics
2 parents 22f76e3 + 7d5fb94 commit 0a95675

File tree

2 files changed

+46
-5
lines changed

2 files changed

+46
-5
lines changed

build.rs

-2
Original file line numberDiff line numberDiff line change
@@ -5430,10 +5430,8 @@ mod c {
54305430
if target_arch == "arm" && target_os != "ios" {
54315431
sources.extend(
54325432
&[
5433-
"arm/aeabi_dcmp.S",
54345433
"arm/aeabi_div0.c",
54355434
"arm/aeabi_drsub.c",
5436-
"arm/aeabi_fcmp.S",
54375435
"arm/aeabi_frsub.c",
54385436
"arm/bswapdi2.S",
54395437
"arm/bswapsi2.S",

src/float/cmp.rs

+46-3
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ intrinsics! {
120120
cmp(a, b).to_ge_abi()
121121
}
122122

123-
#[arm_aeabi_alias = fcmpun]
123+
#[arm_aeabi_alias = __aeabi_fcmpun]
124124
pub extern "C" fn __unordsf2(a: f32, b: f32) -> i32 {
125125
unord(a, b) as i32
126126
}
@@ -149,7 +149,7 @@ intrinsics! {
149149
cmp(a, b).to_ge_abi()
150150
}
151151

152-
#[arm_aeabi_alias = dcmpun]
152+
#[arm_aeabi_alias = __aeabi_dcmpun]
153153
pub extern "C" fn __unorddf2(a: f64, b: f64) -> i32 {
154154
unord(a, b) as i32
155155
}
@@ -166,7 +166,50 @@ intrinsics! {
166166
cmp(a, b).to_le_abi()
167167
}
168168

169-
pub extern "C" fn __gtdf2(a: f32, b: f32) -> i32 {
169+
pub extern "C" fn __gtdf2(a: f64, b: f64) -> i32 {
170170
cmp(a, b).to_ge_abi()
171171
}
172172
}
173+
174+
#[cfg(target_arch = "arm")]
175+
intrinsics! {
176+
pub extern "aapcs" fn __aeabi_fcmple(a: f32, b: f32) -> i32 {
177+
(__lesf2(a, b) < 0) as i32
178+
}
179+
180+
pub extern "aapcs" fn __aeabi_fcmpge(a: f32, b: f32) -> i32 {
181+
(__gesf2(a, b) >= 0) as i32
182+
}
183+
184+
pub extern "aapcs" fn __aeabi_fcmpeq(a: f32, b: f32) -> i32 {
185+
(__eqsf2(a, b) == 0) as i32
186+
}
187+
188+
pub extern "aapcs" fn __aeabi_fcmplt(a: f32, b: f32) -> i32 {
189+
(__ltsf2(a, b) < 0) as i32
190+
}
191+
192+
pub extern "aapcs" fn __aeabi_fcmpgt(a: f32, b: f32) -> i32 {
193+
(__gtsf2(a, b) > 0) as i32
194+
}
195+
196+
pub extern "aapcs" fn __aeabi_dcmple(a: f64, b: f64) -> i32 {
197+
(__ledf2(a, b) <= 0) as i32
198+
}
199+
200+
pub extern "aapcs" fn __aeabi_dcmpge(a: f64, b: f64) -> i32 {
201+
(__gedf2(a, b) >= 0) as i32
202+
}
203+
204+
pub extern "aapcs" fn __aeabi_dcmpeq(a: f64, b: f64) -> i32 {
205+
(__eqdf2(a, b) == 0) as i32
206+
}
207+
208+
pub extern "aapcs" fn __aeabi_dcmplt(a: f64, b: f64) -> i32 {
209+
(__ltdf2(a, b) < 0) as i32
210+
}
211+
212+
pub extern "aapcs" fn __aeabi_dcmpgt(a: f64, b: f64) -> i32 {
213+
(__gtdf2(a, b) > 0) as i32
214+
}
215+
}

0 commit comments

Comments
 (0)