cranelift: add i64.{ishl,ushr,ashr} libcalls.
These libcalls are useful for 32-bit platforms.
On x86_32 in particular, commit 4ec16fa0 added support for legalizing
64-bit shifts through SIMD operations. However, that legalization
requires SIMD to be enabled and SSE 4.1 to be supported, which is not
acceptable as a hard requirement.
This commit is contained in:
@@ -183,6 +183,9 @@ pub fn default_libcall_names() -> Box<dyn Fn(ir::LibCall) -> String> {
|
||||
ir::LibCall::SdivI64 => "__divdi3".to_owned(),
|
||||
ir::LibCall::UremI64 => "__umoddi3".to_owned(),
|
||||
ir::LibCall::SremI64 => "__moddi3".to_owned(),
|
||||
ir::LibCall::IshlI64 => "__ashldi3".to_owned(),
|
||||
ir::LibCall::UshrI64 => "__lshrdi3".to_owned(),
|
||||
ir::LibCall::SshrI64 => "__ashrdi3".to_owned(),
|
||||
ir::LibCall::CeilF32 => "ceilf".to_owned(),
|
||||
ir::LibCall::CeilF64 => "ceil".to_owned(),
|
||||
ir::LibCall::FloorF32 => "floorf".to_owned(),
|
||||
|
||||
Reference in New Issue
Block a user