Merge pull request #7015 from BlackGoku36/master

Fix arm64 ABI: '#simd' vectors and vector aggregates not passed in registers (fixes #7010)
This commit is contained in:
gingerBill
2026-07-13 14:45:42 +01:00
committed by GitHub
4 changed files with 232 additions and 0 deletions

View File

@@ -1147,6 +1147,10 @@ namespace lbAbiArm64 {
case LLVMDoubleTypeKind:
case LLVMPointerTypeKind:
return true;
case LLVMVectorTypeKind:{
i64 sz = lb_sizeof(type);
return sz == 8 || sz == 16;
}
}
return false;
}
@@ -1228,6 +1232,15 @@ namespace lbAbiArm64 {
if (base_type_) *base_type_ = type;
if (member_count_) *member_count_ = 1;
return true;
case LLVMVectorTypeKind:{
i64 sz = lb_sizeof(type);
if (sz == 8 || sz == 16){
if (base_type_) *base_type_ = type;
if (member_count_) *member_count_ = 1;
return true;
}
return false;
}
case LLVMArrayTypeKind:
return is_homogenous_array(c, type, base_type_, member_count_);
case LLVMStructTypeKind: