Skip to content

Commit 8fe94f3

Browse files
authored
Merge pull request #233 from paoloteti/arm-float
Add `ledf2vfp/leds2vfp`, add test cases for `__unordsf2/__unorddf2` and re-enable thumb* targets
2 parents cfecfa2 + 463a127 commit 8fe94f3

File tree

5 files changed

+36
-9
lines changed

5 files changed

+36
-9
lines changed

.travis.yml

-5
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,6 @@ matrix:
2828
- env: TARGET=x86_64-apple-darwin
2929
os: osx
3030
- env: TARGET=x86_64-unknown-linux-gnu
31-
allow_failures:
32-
- env: TARGET=thumbv6m-linux-eabi
33-
- env: TARGET=thumbv7em-linux-eabi
34-
- env: TARGET=thumbv7em-linux-eabihf
35-
- env: TARGET=thumbv7m-linux-eabi
3631

3732
install:
3833
- case $TARGET in

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@ features = ["c"]
115115
- [x] arm/gesf2vfp.S
116116
- [x] arm/gtdf2vfp.S
117117
- [x] arm/gtsf2vfp.S
118-
- [ ] arm/ledf2vfp.S
119-
- [ ] arm/lesf2vfp.S
118+
- [x] arm/ledf2vfp.S
119+
- [x] arm/lesf2vfp.S
120120
- [x] arm/ltdf2vfp.S
121121
- [x] arm/ltsf2vfp.S
122122
- [ ] arm/modsi3.S (generic version is done)

build.rs

-2
Original file line numberDiff line numberDiff line change
@@ -384,8 +384,6 @@ mod c {
384384
"arm/floatsisfvfp.S",
385385
"arm/floatunssidfvfp.S",
386386
"arm/floatunssisfvfp.S",
387-
"arm/ledf2vfp.S",
388-
"arm/lesf2vfp.S",
389387
"arm/restore_vfp_d8_d15_regs.S",
390388
"arm/save_vfp_d8_d15_regs.S",
391389
],

src/float/cmp.rs

+8
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,14 @@ intrinsics! {
240240
(a < b) as i32
241241
}
242242

243+
pub extern "C" fn __lesf2vfp(a: f32, b: f32) -> i32 {
244+
(a <= b) as i32
245+
}
246+
247+
pub extern "C" fn __ledf2vfp(a: f64, b: f64) -> i32 {
248+
(a <= b) as i32
249+
}
250+
243251
pub extern "C" fn __nesf2vfp(a: f32, b: f32) -> i32 {
244252
(a != b) as i32
245253
}

testcrate/build.rs

+26
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,18 @@ fn main() {
143143
},
144144
"compiler_builtins::float::cmp::__lesf2(a, b)");
145145

146+
gen(|(a, b): (MyF32, MyF32)| {
147+
let c = a.0.is_nan() || b.0.is_nan();
148+
Some(c as i32)
149+
},
150+
"compiler_builtins::float::cmp::__unordsf2(a, b)");
151+
152+
gen(|(a, b): (MyF64, MyF64)| {
153+
let c = a.0.is_nan() || b.0.is_nan();
154+
Some(c as i32)
155+
},
156+
"compiler_builtins::float::cmp::__unorddf2(a, b)");
157+
146158
if target_arch_arm {
147159
gen(|(a, b): (MyF32, MyF32)| {
148160
if a.0.is_nan() || b.0.is_nan() {
@@ -276,6 +288,20 @@ fn main() {
276288
Some((a.0 < b.0) as i32)
277289
},
278290
"compiler_builtins::float::cmp::__ltdf2vfp(a, b)");
291+
gen(|(a, b): (LargeF32, LargeF32)| {
292+
if a.0.is_nan() || b.0.is_nan() {
293+
return None;
294+
}
295+
Some((a.0 <= b.0) as i32)
296+
},
297+
"compiler_builtins::float::cmp::__lesf2vfp(a, b)");
298+
gen(|(a, b): (MyF64, MyF64)| {
299+
if a.0.is_nan() || b.0.is_nan() {
300+
return None;
301+
}
302+
Some((a.0 <= b.0) as i32)
303+
},
304+
"compiler_builtins::float::cmp::__ledf2vfp(a, b)");
279305
gen(|(a, b): (LargeF32, LargeF32)| {
280306
if a.0.is_nan() || b.0.is_nan() {
281307
return None;

0 commit comments

Comments
 (0)