Skip to content

Commit 683af61

Browse files
committed
Fix some typos/bugs with float comparison intrinsics
* I believe `__gtdf2` erroneously used `f32` instead of `f64` * Most of these needed `#[arm_aeabi_alias]` to ensure they're correctly called through the alias * Some existing aliases were corrected with the right names
1 parent 22f76e3 commit 683af61

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

build.rs

Lines changed: 0 additions & 2 deletions
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

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,61 +112,73 @@ fn unord<F: Float>(a: F, b: F) -> bool where
112112
}
113113

114114
intrinsics! {
115+
#[arm_aeabi_alias = __aeabi_fcmple]
115116
pub extern "C" fn __lesf2(a: f32, b: f32) -> i32 {
116117
cmp(a, b).to_le_abi()
117118
}
118119

120+
#[arm_aeabi_alias = __aeabi_fcmpge]
119121
pub extern "C" fn __gesf2(a: f32, b: f32) -> i32 {
120122
cmp(a, b).to_ge_abi()
121123
}
122124

123-
#[arm_aeabi_alias = fcmpun]
125+
#[arm_aeabi_alias = __aeabi_fcmpun]
124126
pub extern "C" fn __unordsf2(a: f32, b: f32) -> i32 {
125127
unord(a, b) as i32
126128
}
127129

130+
#[arm_aeabi_alias = __aeabi_fcmpeq]
128131
pub extern "C" fn __eqsf2(a: f32, b: f32) -> i32 {
129132
cmp(a, b).to_le_abi()
130133
}
131134

135+
#[arm_aeabi_alias = __aeabi_fcmplt]
132136
pub extern "C" fn __ltsf2(a: f32, b: f32) -> i32 {
133137
cmp(a, b).to_le_abi()
134138
}
135139

140+
#[arm_aeabi_alias = __aeabi_fcmpne]
136141
pub extern "C" fn __nesf2(a: f32, b: f32) -> i32 {
137142
cmp(a, b).to_le_abi()
138143
}
139144

145+
#[arm_aeabi_alias = __aeabi_fcmpgt]
140146
pub extern "C" fn __gtsf2(a: f32, b: f32) -> i32 {
141147
cmp(a, b).to_ge_abi()
142148
}
143149

150+
#[arm_aeabi_alias = __aeabi_dcmple]
144151
pub extern "C" fn __ledf2(a: f64, b: f64) -> i32 {
145152
cmp(a, b).to_le_abi()
146153
}
147154

155+
#[arm_aeabi_alias = __aeabi_dcmpge]
148156
pub extern "C" fn __gedf2(a: f64, b: f64) -> i32 {
149157
cmp(a, b).to_ge_abi()
150158
}
151159

152-
#[arm_aeabi_alias = dcmpun]
160+
#[arm_aeabi_alias = __aeabi_dcmpun]
153161
pub extern "C" fn __unorddf2(a: f64, b: f64) -> i32 {
154162
unord(a, b) as i32
155163
}
156164

165+
#[arm_aeabi_alias = __aeabi_dcmpeq]
157166
pub extern "C" fn __eqdf2(a: f64, b: f64) -> i32 {
158167
cmp(a, b).to_le_abi()
159168
}
160169

170+
#[arm_aeabi_alias = __aeabi_dcmplt]
161171
pub extern "C" fn __ltdf2(a: f64, b: f64) -> i32 {
162172
cmp(a, b).to_le_abi()
163173
}
164174

175+
#[arm_aeabi_alias = __aeabi_dcmpne]
165176
pub extern "C" fn __nedf2(a: f64, b: f64) -> i32 {
166177
cmp(a, b).to_le_abi()
167178
}
168179

169-
pub extern "C" fn __gtdf2(a: f32, b: f32) -> i32 {
180+
#[arm_aeabi_alias = __aeabi_dcmpgt]
181+
pub extern "C" fn __gtdf2(a: f64, b: f64) -> i32 {
170182
cmp(a, b).to_ge_abi()
171183
}
172184
}

0 commit comments

Comments
 (0)