@@ -16,13 +16,13 @@ you can use this crate to get those intrinsics and solve the linker errors. To
16
16
do that, add this crate somewhere in the dependency graph of the crate you are
17
17
building:
18
18
19
- ``` toml
19
+ ``` toml
20
20
# Cargo.toml
21
21
[dependencies ]
22
22
compiler_builtins = { git = " https://github.com/rust-lang/compiler-builtins" }
23
23
```
24
24
25
- ``` rust
25
+ ``` rust
26
26
extern crate compiler_builtins;
27
27
28
28
// ...
@@ -91,7 +91,7 @@ obtained with the following:
91
91
``` sh
92
92
curl -L -o rustc-llvm-18.0.tar.gz https://github.com/rust-lang/llvm-project/archive/rustc/18.0-2024-02-13.tar.gz
93
93
tar xzf rustc-llvm-18.0.tar.gz --strip-components 1 llvm-project-rustc-18.0-2024-02-13/compiler-rt
94
- ````
94
+ ```
95
95
96
96
Local targets may also be tested with ` ./ci/run.sh [target] ` .
97
97
@@ -100,9 +100,11 @@ rely on CI.
100
100
101
101
## Progress
102
102
103
+ - [x] aarch64/chkstk.S
103
104
- [x] adddf3.c
104
105
- [x] addsf3.c
105
106
- [x] arm/adddf3vfp.S
107
+ - [x] arm/addsf3.S
106
108
- [x] arm/addsf3vfp.S
107
109
- [x] arm/aeabi_dcmp.S
108
110
- [x] arm/aeabi_fcmp.S
@@ -113,6 +115,7 @@ rely on CI.
113
115
- [x] arm/aeabi_memset.S
114
116
- [x] arm/aeabi_uidivmod.S
115
117
- [x] arm/aeabi_uldivmod.S
118
+ - [ ] arm/chkstk.S
116
119
- [x] arm/divdf3vfp.S
117
120
- [ ] arm/divmodsi4.S (generic version is done)
118
121
- [x] arm/divsf3vfp.S
@@ -154,6 +157,12 @@ rely on CI.
154
157
- [ ] arm/unordsf2vfp.S
155
158
- [x] ashldi3.c
156
159
- [x] ashrdi3.c
160
+ - [ ] avr/divmodhi4.S
161
+ - [ ] avr/divmodqi4.S
162
+ - [ ] avr/mulhi3.S
163
+ - [ ] avr/mulqi3.S
164
+ - [ ] avr/udivmodhi4.S
165
+ - [ ] avr/udivmodqi4.S
157
166
- [x] bswapdi2.c
158
167
- [x] bswapsi2.c
159
168
- [x] bswapti2.c
@@ -163,6 +172,7 @@ rely on CI.
163
172
- [x] divdi3.c
164
173
- [x] divmoddi4.c
165
174
- [x] divmodsi4.c
175
+ - [x] divmodti4.c
166
176
- [x] divsf3.c
167
177
- [x] divsi3.c
168
178
- [x] extendsfdf2.c
@@ -201,6 +211,8 @@ rely on CI.
201
211
- [x] mulsf3.c
202
212
- [x] powidf2.c
203
213
- [x] powisf2.c
214
+ - [ ] riscv/muldi3.S
215
+ - [ ] riscv/mulsi3.S
204
216
- [x] subdf3.c
205
217
- [x] subsf3.c
206
218
- [x] truncdfsf2.c
@@ -233,7 +245,8 @@ These builtins are needed to support 128-bit integers.
233
245
- [x] udivti3.c
234
246
- [x] umodti3.c
235
247
236
- These builtins are needed to support ` f16` and ` f128` , which are in the process of being added to Rust.
248
+ These builtins are needed to support ` f16 ` and ` f128 ` , which are in the process
249
+ of being added to Rust.
237
250
238
251
- [x] addtf3.c
239
252
- [x] comparetf2.c
@@ -250,8 +263,10 @@ These builtins are needed to support `f16` and `f128`, which are in the process
250
263
- [x] fixunstfti.c
251
264
- [ ] floatditf.c
252
265
- [ ] floatsitf.c
266
+ - [ ] floattitf.c
253
267
- [ ] floatunditf.c
254
268
- [ ] floatunsitf.c
269
+ - [ ] floatuntitf.c
255
270
- [x] multf3.c
256
271
- [ ] powitf2.c
257
272
- [x] subtf3.c
@@ -261,11 +276,42 @@ These builtins are needed to support `f16` and `f128`, which are in the process
261
276
- [x] trunctfhf2.c
262
277
- [x] trunctfsf2.c
263
278
279
+
280
+ These builtins are used by the Hexagon DSP
281
+
282
+ - [ ] hexagon/common_entry_exit_abi1.S
283
+ - [ ] hexagon/common_entry_exit_abi2.S
284
+ - [ ] hexagon/common_entry_exit_legacy.S
285
+ - [x] hexagon/dfaddsub.S~~
286
+ - [x] hexagon/dfdiv.S~~
287
+ - [x] hexagon/dffma.S~~
288
+ - [x] hexagon/dfminmax.S~~
289
+ - [x] hexagon/dfmul.S~~
290
+ - [x] hexagon/dfsqrt.S~~
291
+ - [x] hexagon/divdi3.S~~
292
+ - [x] hexagon/divsi3.S~~
293
+ - [x] hexagon/fastmath2_dlib_asm.S~~
294
+ - [x] hexagon/fastmath2_ldlib_asm.S~~
295
+ - [x] hexagon/fastmath_dlib_asm.S~~
296
+ - [x] hexagon/memcpy_forward_vp4cp4n2.S~~
297
+ - [x] hexagon/memcpy_likely_aligned.S~~
298
+ - [x] hexagon/moddi3.S~~
299
+ - [x] hexagon/modsi3.S~~
300
+ - [x] hexagon/sfdiv_opt.S~~
301
+ - [x] hexagon/sfsqrt_opt.S~~
302
+ - [x] hexagon/udivdi3.S~~
303
+ - [x] hexagon/udivmoddi4.S~~
304
+ - [x] hexagon/udivmodsi4.S~~
305
+ - [x] hexagon/udivsi3.S~~
306
+ - [x] hexagon/umoddi3.S~~
307
+ - [x] hexagon/umodsi3.S~~
308
+
264
309
## Unimplemented functions
265
310
266
311
These builtins are for x87 ` f80 ` floating-point numbers that are not supported
267
312
by Rust.
268
313
314
+ - ~~ extendxftf2.c~~
269
315
- ~~ fixunsxfdi.c~~
270
316
- ~~ fixunsxfsi.c~~
271
317
- ~~ fixunsxfti.c~~
@@ -285,15 +331,25 @@ numbers.
285
331
286
332
- ~~ ppc/divtc3.c~~
287
333
- ~~ ppc/fixtfdi.c~~
334
+ - ~~ ppc/fixtfti.c~~
288
335
- ~~ ppc/fixunstfdi.c~~
336
+ - ~~ ppc/fixunstfti.c~~
289
337
- ~~ ppc/floatditf.c~~
338
+ - ~~ ppc/floattitf.c~~
290
339
- ~~ ppc/floatunditf.c~~
291
340
- ~~ ppc/gcc_qadd.c~~
292
341
- ~~ ppc/gcc_qdiv.c~~
293
342
- ~~ ppc/gcc_qmul.c~~
294
343
- ~~ ppc/gcc_qsub.c~~
295
344
- ~~ ppc/multc3.c~~
296
345
346
+ These builtins are for 16-bit brain floating-point numbers that are not
347
+ supported by Rust.
348
+
349
+ - ~~ truncdfbf2.c~~
350
+ - ~~ truncsfbf2.c~~
351
+ - ~~ trunctfxf2.c~~
352
+
297
353
These builtins involve complex floating-point types that are not supported by
298
354
Rust.
299
355
@@ -342,6 +398,7 @@ These builtins are never called by LLVM.
342
398
- ~~ ctzdi2.c~~
343
399
- ~~ ctzsi2.c~~
344
400
- ~~ ctzti2.c~~
401
+ - ~~ ffssi2.c~~
345
402
- ~~ ffsdi2.c~~ - this is [ called by gcc] [ jemalloc-fail ] though!
346
403
- ~~ ffsti2.c~~
347
404
- ~~ mulvdi3.c~~
@@ -404,13 +461,34 @@ Rust only exposes atomic types on platforms that support them, and therefore doe
404
461
405
462
Miscellaneous functionality that is not used by Rust.
406
463
464
+ - ~~ aarch64/fp_mode.c~~
465
+ - ~~ aarch64/lse.S~~ (LSE atomics)
466
+ - ~~ aarch64/sme-abi-init.c~~ (matrix extension)
467
+ - ~~ aarch64/sme-abi.S~~ (matrix extension)
468
+ - ~~ aarch64/sme-libc-routines.c~~ (matrix extension)
407
469
- ~~ apple_versioning.c~~
470
+ - ~~ arm/fp_mode.c~~
471
+ - ~~ avr/exit.S~~
408
472
- ~~ clear_cache.c~~
473
+ - ~~ cpu_model/aarch64.c~~
474
+ - ~~ cpu_model/x86.c~~
475
+ - ~~ crtbegin.c~~
476
+ - ~~ crtend.c~~
409
477
- ~~ emutls.c~~
410
478
- ~~ enable_execute_stack.c~~
411
479
- ~~ eprintf.c~~
480
+ - ~~ fp_mode.c~~ (float exception handling)
412
481
- ~~ gcc_personality_v0.c~~
482
+ - ~~ i386/fp_mode.c~~
483
+ - ~~ int_util.c~~
484
+ - ~~ loongarch/fp_mode.c~~
485
+ - ~~ os_version_check.c~~
486
+ - ~~ riscv/fp_mode.c~~
487
+ - ~~ riscv/restore.S~~ (callee-saved registers)
488
+ - ~~ riscv/save.S~~ (callee-saved registers)
413
489
- ~~ trampoline_setup.c~~
490
+ - ~~ ve/grow_stack.S~~
491
+ - ~~ ve/grow_stack_align.S~~
414
492
415
493
Floating-point implementations of builtins that are only called from soft-float code. It would be better to simply use the generic soft-float versions in this case.
416
494
0 commit comments