Skip to content

Commit f1b9055

Browse files
Patryk27tgross35
authored andcommitted
avr: Skip No More!
1 parent 4df7a8d commit f1b9055

File tree

14 files changed

+91
-125
lines changed

14 files changed

+91
-125
lines changed

compiler-builtins/src/float/add.rs

-2
Original file line numberDiff line numberDiff line change
@@ -189,14 +189,12 @@ where
189189
}
190190

191191
intrinsics! {
192-
#[avr_skip]
193192
#[aapcs_on_arm]
194193
#[arm_aeabi_alias = __aeabi_fadd]
195194
pub extern "C" fn __addsf3(a: f32, b: f32) -> f32 {
196195
add(a, b)
197196
}
198197

199-
#[avr_skip]
200198
#[aapcs_on_arm]
201199
#[arm_aeabi_alias = __aeabi_dadd]
202200
pub extern "C" fn __adddf3(a: f64, b: f64) -> f64 {

compiler-builtins/src/float/cmp.rs

+34-47
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,14 @@
33
use crate::float::Float;
44
use crate::int::MinInt;
55

6+
// https://github.com/llvm/llvm-project/blob/1e6ba3cd2fe96be00b6ed6ba28b3d9f9271d784d/compiler-rt/lib/builtins/fp_compare_impl.inc#L22
7+
#[cfg(target_arch = "avr")]
8+
pub type CmpResult = i8;
9+
10+
// https://github.com/llvm/llvm-project/blob/1e6ba3cd2fe96be00b6ed6ba28b3d9f9271d784d/compiler-rt/lib/builtins/fp_compare_impl.inc#L25
11+
#[cfg(not(target_arch = "avr"))]
12+
pub type CmpResult = i32;
13+
614
#[derive(Clone, Copy)]
715
enum Result {
816
Less,
@@ -12,7 +20,7 @@ enum Result {
1220
}
1321

1422
impl Result {
15-
fn to_le_abi(self) -> i32 {
23+
fn to_le_abi(self) -> CmpResult {
1624
match self {
1725
Result::Less => -1,
1826
Result::Equal => 0,
@@ -21,7 +29,7 @@ impl Result {
2129
}
2230
}
2331

24-
fn to_ge_abi(self) -> i32 {
32+
fn to_ge_abi(self) -> CmpResult {
2533
match self {
2634
Result::Less => -1,
2735
Result::Equal => 0,
@@ -99,120 +107,99 @@ fn unord<F: Float>(a: F, b: F) -> bool {
99107
}
100108

101109
intrinsics! {
102-
#[avr_skip]
103-
pub extern "C" fn __lesf2(a: f32, b: f32) -> i32 {
110+
pub extern "C" fn __lesf2(a: f32, b: f32) -> crate::float::cmp::CmpResult {
104111
cmp(a, b).to_le_abi()
105112
}
106113

107-
#[avr_skip]
108-
pub extern "C" fn __gesf2(a: f32, b: f32) -> i32 {
114+
pub extern "C" fn __gesf2(a: f32, b: f32) -> crate::float::cmp::CmpResult {
109115
cmp(a, b).to_ge_abi()
110116
}
111117

112-
#[avr_skip]
113118
#[arm_aeabi_alias = __aeabi_fcmpun]
114-
pub extern "C" fn __unordsf2(a: f32, b: f32) -> i32 {
115-
unord(a, b) as i32
119+
pub extern "C" fn __unordsf2(a: f32, b: f32) -> crate::float::cmp::CmpResult {
120+
unord(a, b) as crate::float::cmp::CmpResult
116121
}
117122

118-
#[avr_skip]
119-
pub extern "C" fn __eqsf2(a: f32, b: f32) -> i32 {
123+
pub extern "C" fn __eqsf2(a: f32, b: f32) -> crate::float::cmp::CmpResult {
120124
cmp(a, b).to_le_abi()
121125
}
122126

123-
#[avr_skip]
124-
pub extern "C" fn __ltsf2(a: f32, b: f32) -> i32 {
127+
pub extern "C" fn __ltsf2(a: f32, b: f32) -> crate::float::cmp::CmpResult {
125128
cmp(a, b).to_le_abi()
126129
}
127130

128-
#[avr_skip]
129-
pub extern "C" fn __nesf2(a: f32, b: f32) -> i32 {
131+
pub extern "C" fn __nesf2(a: f32, b: f32) -> crate::float::cmp::CmpResult {
130132
cmp(a, b).to_le_abi()
131133
}
132134

133-
#[avr_skip]
134-
pub extern "C" fn __gtsf2(a: f32, b: f32) -> i32 {
135+
pub extern "C" fn __gtsf2(a: f32, b: f32) -> crate::float::cmp::CmpResult {
135136
cmp(a, b).to_ge_abi()
136137
}
137138

138-
#[avr_skip]
139-
pub extern "C" fn __ledf2(a: f64, b: f64) -> i32 {
139+
pub extern "C" fn __ledf2(a: f64, b: f64) -> crate::float::cmp::CmpResult {
140140
cmp(a, b).to_le_abi()
141141
}
142142

143-
#[avr_skip]
144-
pub extern "C" fn __gedf2(a: f64, b: f64) -> i32 {
143+
pub extern "C" fn __gedf2(a: f64, b: f64) -> crate::float::cmp::CmpResult {
145144
cmp(a, b).to_ge_abi()
146145
}
147146

148-
#[avr_skip]
149147
#[arm_aeabi_alias = __aeabi_dcmpun]
150-
pub extern "C" fn __unorddf2(a: f64, b: f64) -> i32 {
151-
unord(a, b) as i32
148+
pub extern "C" fn __unorddf2(a: f64, b: f64) -> crate::float::cmp::CmpResult {
149+
unord(a, b) as crate::float::cmp::CmpResult
152150
}
153151

154-
#[avr_skip]
155-
pub extern "C" fn __eqdf2(a: f64, b: f64) -> i32 {
152+
pub extern "C" fn __eqdf2(a: f64, b: f64) -> crate::float::cmp::CmpResult {
156153
cmp(a, b).to_le_abi()
157154
}
158155

159-
#[avr_skip]
160-
pub extern "C" fn __ltdf2(a: f64, b: f64) -> i32 {
156+
pub extern "C" fn __ltdf2(a: f64, b: f64) -> crate::float::cmp::CmpResult {
161157
cmp(a, b).to_le_abi()
162158
}
163159

164-
#[avr_skip]
165-
pub extern "C" fn __nedf2(a: f64, b: f64) -> i32 {
160+
pub extern "C" fn __nedf2(a: f64, b: f64) -> crate::float::cmp::CmpResult {
166161
cmp(a, b).to_le_abi()
167162
}
168163

169-
#[avr_skip]
170-
pub extern "C" fn __gtdf2(a: f64, b: f64) -> i32 {
164+
pub extern "C" fn __gtdf2(a: f64, b: f64) -> crate::float::cmp::CmpResult {
171165
cmp(a, b).to_ge_abi()
172166
}
173167
}
174168

175169
#[cfg(f128_enabled)]
176170
intrinsics! {
177-
#[avr_skip]
178171
#[ppc_alias = __lekf2]
179-
pub extern "C" fn __letf2(a: f128, b: f128) -> i32 {
172+
pub extern "C" fn __letf2(a: f128, b: f128) -> crate::float::cmp::CmpResult {
180173
cmp(a, b).to_le_abi()
181174
}
182175

183-
#[avr_skip]
184176
#[ppc_alias = __gekf2]
185-
pub extern "C" fn __getf2(a: f128, b: f128) -> i32 {
177+
pub extern "C" fn __getf2(a: f128, b: f128) -> crate::float::cmp::CmpResult {
186178
cmp(a, b).to_ge_abi()
187179
}
188180

189-
#[avr_skip]
190181
#[ppc_alias = __unordkf2]
191-
pub extern "C" fn __unordtf2(a: f128, b: f128) -> i32 {
192-
unord(a, b) as i32
182+
pub extern "C" fn __unordtf2(a: f128, b: f128) -> crate::float::cmp::CmpResult {
183+
unord(a, b) as crate::float::cmp::CmpResult
193184
}
194185

195-
#[avr_skip]
196186
#[ppc_alias = __eqkf2]
197-
pub extern "C" fn __eqtf2(a: f128, b: f128) -> i32 {
187+
pub extern "C" fn __eqtf2(a: f128, b: f128) -> crate::float::cmp::CmpResult {
198188
cmp(a, b).to_le_abi()
199189
}
200190

201-
#[avr_skip]
202191
#[ppc_alias = __ltkf2]
203-
pub extern "C" fn __lttf2(a: f128, b: f128) -> i32 {
192+
pub extern "C" fn __lttf2(a: f128, b: f128) -> crate::float::cmp::CmpResult {
204193
cmp(a, b).to_le_abi()
205194
}
206195

207-
#[avr_skip]
208196
#[ppc_alias = __nekf2]
209-
pub extern "C" fn __netf2(a: f128, b: f128) -> i32 {
197+
pub extern "C" fn __netf2(a: f128, b: f128) -> crate::float::cmp::CmpResult {
210198
cmp(a, b).to_le_abi()
211199
}
212200

213-
#[avr_skip]
214201
#[ppc_alias = __gtkf2]
215-
pub extern "C" fn __gttf2(a: f128, b: f128) -> i32 {
202+
pub extern "C" fn __gttf2(a: f128, b: f128) -> crate::float::cmp::CmpResult {
216203
cmp(a, b).to_ge_abi()
217204
}
218205
}

compiler-builtins/src/float/div.rs

-3
Original file line numberDiff line numberDiff line change
@@ -606,19 +606,16 @@ where
606606
}
607607

608608
intrinsics! {
609-
#[avr_skip]
610609
#[arm_aeabi_alias = __aeabi_fdiv]
611610
pub extern "C" fn __divsf3(a: f32, b: f32) -> f32 {
612611
div(a, b)
613612
}
614613

615-
#[avr_skip]
616614
#[arm_aeabi_alias = __aeabi_ddiv]
617615
pub extern "C" fn __divdf3(a: f64, b: f64) -> f64 {
618616
div(a, b)
619617
}
620618

621-
#[avr_skip]
622619
#[ppc_alias = __divkf3]
623620
#[cfg(f128_enabled)]
624621
pub extern "C" fn __divtf3(a: f128, b: f128) -> f128 {

compiler-builtins/src/float/extend.rs

-7
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ where
7070
}
7171

7272
intrinsics! {
73-
#[avr_skip]
7473
#[aapcs_on_arm]
7574
#[arm_aeabi_alias = __aeabi_f2d]
7675
pub extern "C" fn __extendsfdf2(a: f32) -> f64 {
@@ -79,7 +78,6 @@ intrinsics! {
7978
}
8079

8180
intrinsics! {
82-
#[avr_skip]
8381
#[aapcs_on_arm]
8482
#[apple_f16_arg_abi]
8583
#[arm_aeabi_alias = __aeabi_h2f]
@@ -88,39 +86,34 @@ intrinsics! {
8886
extend(a)
8987
}
9088

91-
#[avr_skip]
9289
#[aapcs_on_arm]
9390
#[apple_f16_arg_abi]
9491
#[cfg(f16_enabled)]
9592
pub extern "C" fn __gnu_h2f_ieee(a: f16) -> f32 {
9693
extend(a)
9794
}
9895

99-
#[avr_skip]
10096
#[aapcs_on_arm]
10197
#[apple_f16_arg_abi]
10298
#[cfg(f16_enabled)]
10399
pub extern "C" fn __extendhfdf2(a: f16) -> f64 {
104100
extend(a)
105101
}
106102

107-
#[avr_skip]
108103
#[aapcs_on_arm]
109104
#[ppc_alias = __extendhfkf2]
110105
#[cfg(all(f16_enabled, f128_enabled))]
111106
pub extern "C" fn __extendhftf2(a: f16) -> f128 {
112107
extend(a)
113108
}
114109

115-
#[avr_skip]
116110
#[aapcs_on_arm]
117111
#[ppc_alias = __extendsfkf2]
118112
#[cfg(f128_enabled)]
119113
pub extern "C" fn __extendsftf2(a: f32) -> f128 {
120114
extend(a)
121115
}
122116

123-
#[avr_skip]
124117
#[aapcs_on_arm]
125118
#[ppc_alias = __extenddfkf2]
126119
#[cfg(f128_enabled)]

compiler-builtins/src/float/mul.rs

-2
Original file line numberDiff line numberDiff line change
@@ -180,14 +180,12 @@ where
180180
}
181181

182182
intrinsics! {
183-
#[avr_skip]
184183
#[aapcs_on_arm]
185184
#[arm_aeabi_alias = __aeabi_fmul]
186185
pub extern "C" fn __mulsf3(a: f32, b: f32) -> f32 {
187186
mul(a, b)
188187
}
189188

190-
#[avr_skip]
191189
#[aapcs_on_arm]
192190
#[arm_aeabi_alias = __aeabi_dmul]
193191
pub extern "C" fn __muldf3(a: f64, b: f64) -> f64 {

compiler-builtins/src/float/pow.rs

-3
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,14 @@ fn pow<F: Float>(a: F, b: i32) -> F {
2626
}
2727

2828
intrinsics! {
29-
#[avr_skip]
3029
pub extern "C" fn __powisf2(a: f32, b: i32) -> f32 {
3130
pow(a, b)
3231
}
3332

34-
#[avr_skip]
3533
pub extern "C" fn __powidf2(a: f64, b: i32) -> f64 {
3634
pow(a, b)
3735
}
3836

39-
#[avr_skip]
4037
#[ppc_alias = __powikf2]
4138
#[cfg(f128_enabled)]
4239
// FIXME(f16_f128): MSVC cannot build these until `__divtf3` is available in nightly.

compiler-builtins/src/float/sub.rs

-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
use crate::float::Float;
22

33
intrinsics! {
4-
#[avr_skip]
54
#[arm_aeabi_alias = __aeabi_fsub]
65
pub extern "C" fn __subsf3(a: f32, b: f32) -> f32 {
76
crate::float::add::__addsf3(a, f32::from_bits(b.to_bits() ^ f32::SIGN_MASK))
87
}
98

10-
#[avr_skip]
119
#[arm_aeabi_alias = __aeabi_dsub]
1210
pub extern "C" fn __subdf3(a: f64, b: f64) -> f64 {
1311
crate::float::add::__adddf3(a, f64::from_bits(b.to_bits() ^ f64::SIGN_MASK))

compiler-builtins/src/float/trunc.rs

-7
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ where
115115
}
116116

117117
intrinsics! {
118-
#[avr_skip]
119118
#[aapcs_on_arm]
120119
#[arm_aeabi_alias = __aeabi_d2f]
121120
pub extern "C" fn __truncdfsf2(a: f64) -> f32 {
@@ -124,7 +123,6 @@ intrinsics! {
124123
}
125124

126125
intrinsics! {
127-
#[avr_skip]
128126
#[aapcs_on_arm]
129127
#[apple_f16_ret_abi]
130128
#[arm_aeabi_alias = __aeabi_f2h]
@@ -133,15 +131,13 @@ intrinsics! {
133131
trunc(a)
134132
}
135133

136-
#[avr_skip]
137134
#[aapcs_on_arm]
138135
#[apple_f16_ret_abi]
139136
#[cfg(f16_enabled)]
140137
pub extern "C" fn __gnu_f2h_ieee(a: f32) -> f16 {
141138
trunc(a)
142139
}
143140

144-
#[avr_skip]
145141
#[aapcs_on_arm]
146142
#[apple_f16_ret_abi]
147143
#[arm_aeabi_alias = __aeabi_d2h]
@@ -150,23 +146,20 @@ intrinsics! {
150146
trunc(a)
151147
}
152148

153-
#[avr_skip]
154149
#[aapcs_on_arm]
155150
#[ppc_alias = __trunckfhf2]
156151
#[cfg(all(f16_enabled, f128_enabled))]
157152
pub extern "C" fn __trunctfhf2(a: f128) -> f16 {
158153
trunc(a)
159154
}
160155

161-
#[avr_skip]
162156
#[aapcs_on_arm]
163157
#[ppc_alias = __trunckfsf2]
164158
#[cfg(f128_enabled)]
165159
pub extern "C" fn __trunctfsf2(a: f128) -> f32 {
166160
trunc(a)
167161
}
168162

169-
#[avr_skip]
170163
#[aapcs_on_arm]
171164
#[ppc_alias = __trunckfdf2]
172165
#[cfg(f128_enabled)]

compiler-builtins/src/int/bswap.rs

-3
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
11
intrinsics! {
22
#[maybe_use_optimized_c_shim]
3-
#[avr_skip]
43
/// Swaps bytes in 32-bit number
54
pub extern "C" fn __bswapsi2(x: u32) -> u32 {
65
x.swap_bytes()
76
}
87

98
#[maybe_use_optimized_c_shim]
10-
#[avr_skip]
119
/// Swaps bytes in 64-bit number
1210
pub extern "C" fn __bswapdi2(x: u64) -> u64 {
1311
x.swap_bytes()
1412
}
1513

1614
#[maybe_use_optimized_c_shim]
17-
#[avr_skip]
1815
/// Swaps bytes in 128-bit number
1916
pub extern "C" fn __bswapti2(x: u128) -> u128 {
2017
x.swap_bytes()

0 commit comments

Comments
 (0)