Size: a a a

WebAssembly — русскоговорящее сообщество

2019 November 19

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Ну LLVM же использует libc. то есть цепочка такая

f32.cos() → intrinsics::f32() → llvm.cos.f32 intrinsic to libcall → cosf (compiler-builtins/libm) -> libm from libc cosf
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
то есть напрямую Rust не вызывет libc но делает это косвенно через llvm
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
не смотря на то что llvm заточен под использование с libc это не значит что он использует libc.

в таких то случаях compiler-builtins и выходит на сцену, насколько мне известно.
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
lil pep
не смотря на то что llvm заточен под использование с libc это не значит что он использует libc.

в таких то случаях compiler-builtins и выходит на сцену, насколько мне известно.
Да там target specific
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
зачем ему вызывать libc из libm для cosf если реализация compiler-builtins уже содержит libm и cosf?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
может musl на каком нибудь линуксе использовать
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
MaxGraey
Ну LLVM же использует libc. то есть цепочка такая

f32.cos() → intrinsics::f32() → llvm.cos.f32 intrinsic to libcall → cosf (compiler-builtins/libm) -> libm from libc cosf
я же уже вроде показал что cosf используется этот

https://github.com/rust-lang/libm/blob/a5e39d8f1ad2ad669e62565f98f1dc86ea5fed96/src/math/cosf.rs#L28
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Кстати у LLVM свой особый libc будет
https://llvm.org/docs/Proposals/LLVMLibC.html
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Увы, но нет) Легко проверить. Возьми вот эту целочисленную константу например:
https://github.com/rust-lang/libm/blob/a5e39d8f1ad2ad669e62565f98f1dc86ea5fed96/src/math/cosf.rs#L37

0x3f490fda или 1061752794 и найди ее здесь:
https://gist.github.com/pepyakin/90cb984e2dbf976ecfa0cf56e15f2e17
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
ну с константами сложно да, они могли быть зафолжены или еще чего-то
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
lil pep
ну с константами сложно да, они могли быть зафолжены или еще чего-то
Нет) Остальные то как раз находятся
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
кроме того минус этого подхода в том что этот код это порт с Си ) в таком случае константы могут быть тем же
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
ну остальные могут находится да, оптимизации они такие
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
нет, это wasm, там с константами ничего не происходит критичного)
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
как это связанно вообще?)
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
ну ладно, а тогда откуда по твоему береться этот код?
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
берется*
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Ок, нашет 1061752795
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
все таки есть)
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
ну да, я говорю, там сложно может быть
источник