mirror of
https://github.com/odin-lang/Odin.git
synced 2026-02-12 06:18:39 +00:00
Unify "mem*.inline" logic to only inline for <=8 bytes on all platforms
This commit is contained in:
@@ -619,7 +619,7 @@ gb_internal LLVMValueRef lb_mem_zero_ptr_internal(lbProcedure *p, LLVMValueRef p
|
||||
gb_internal LLVMValueRef lb_mem_zero_ptr_internal(lbProcedure *p, LLVMValueRef ptr, usize len, unsigned alignment, bool is_volatile);
|
||||
|
||||
gb_internal gb_inline i64 lb_max_zero_init_size(void) {
|
||||
return cast(i64)(4*build_context.int_size);
|
||||
return cast(i64)(8);
|
||||
}
|
||||
|
||||
gb_internal LLVMTypeRef OdinLLVMGetArrayElementType(LLVMTypeRef type);
|
||||
|
||||
@@ -12,9 +12,9 @@ gb_internal void lb_mem_copy_overlapping(lbProcedure *p, lbValue dst, lbValue sr
|
||||
len = lb_emit_conv(p, len, t_int);
|
||||
|
||||
char const *name = "llvm.memmove";
|
||||
if (LLVMIsConstant(len.value)) {
|
||||
if (!p->is_startup && LLVMIsConstant(len.value)) {
|
||||
i64 const_len = cast(i64)LLVMConstIntGetSExtValue(len.value);
|
||||
if (const_len <= 4*build_context.int_size) {
|
||||
if (const_len <= lb_max_zero_init_size()) {
|
||||
name = "llvm.memmove.inline";
|
||||
}
|
||||
}
|
||||
@@ -41,9 +41,9 @@ gb_internal void lb_mem_copy_non_overlapping(lbProcedure *p, lbValue dst, lbValu
|
||||
len = lb_emit_conv(p, len, t_int);
|
||||
|
||||
char const *name = "llvm.memcpy";
|
||||
if (LLVMIsConstant(len.value)) {
|
||||
if (!p->is_startup && LLVMIsConstant(len.value)) {
|
||||
i64 const_len = cast(i64)LLVMConstIntGetSExtValue(len.value);
|
||||
if (const_len <= 4*build_context.int_size) {
|
||||
if (const_len <= lb_max_zero_init_size()) {
|
||||
name = "llvm.memcpy.inline";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ gb_internal LLVMValueRef lb_mem_zero_ptr_internal(lbProcedure *p, LLVMValueRef p
|
||||
bool is_inlinable = false;
|
||||
|
||||
i64 const_len = 0;
|
||||
if (LLVMIsConstant(len)) {
|
||||
if (!p->is_startup && LLVMIsConstant(len)) {
|
||||
const_len = cast(i64)LLVMConstIntGetSExtValue(len);
|
||||
// TODO(bill): Determine when it is better to do the `*.inline` versions
|
||||
if (const_len <= lb_max_zero_init_size()) {
|
||||
|
||||
Reference in New Issue
Block a user