Tracking Issue for core
compilation to C
#10
Labels
bug
Something isn't working
external
This issue requires contribute to external tools
long term plan
It's a work that requires a lot of effort to implement
tracking-issue
A tracking issue for unstable or not implemented feature
I tried
core
compilation with llvm-cbe, but the following problem occurs.Missing intrinsics
freeze
Add support for the
freeze
instruction JuliaHubOSS/llvm-cbe#175llvm.fshl.i64
Code generator does not support intrinsic function
llvm.fshl.i32
JuliaHubOSS/llvm-cbe#111is.class.fpclass
Code generator does not support intrinsic function 'llvm.is.fpclass.f32' JuliaHubOSS/llvm-cbe#195
Support LLVM-19 JuliaHubOSS/llvm-cbe#211
Originally, when
no_fp_fmt_parse
cfg is used, the instruction associated with the floating point should not be appeared, but something seems to be wrong in rust versionnightly-2024-02-13
.Resolved with rust nightly with LLVM-19
llvm.uadd.sat.i32
,llvm.usub.sat.i16
Add support for the Saturation Arithmetic Intrinsics (
llvm.uadd.sat.*
and others) JuliaHubOSS/llvm-cbe#207Implement
llvm.*.sat.*
intrinsics JuliaHubOSS/llvm-cbe#210u128/i128 (in
core::{fmt, num, slice}
)llvm-cbe does not support data types that exceed 64 bits, and of course SDCC does, so it must be removed before compilation.
There is already a function to turn off floating point fmt as a cfg option (no_fp_fmt_parse
), so I'm going to make similar function and contribute to Rust. (likeno_128_fmt_parse
)I think It can be solved by removing the 128bits parts that don't used with llvm-link.
https://internals.rust-lang.org/t/core-add-cfg-no-128bits-fmt-parse/21701LLVM-CBE error 1
When hiding all the above issues by editing llvm-ir, I get an llvm-cbe error.
This error occured in CBackend.cpp#L4558
I think it's caused by an unsupported instruction, but I'm not sure exactly where it happened.
LLVM-CBE errror 2
After upgrading the version to LLVM-19, the following error occurs. It seems to be an error related to LegacyPassManager, and I think it will be resolved by migrating to ModulePassManager. (but not sure)
The text was updated successfully, but these errors were encountered: