mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
Correct minimum dependency for complex32
This commit is contained in:
@@ -300,6 +300,9 @@ cstring_to_string :: proc "contextless" (s: cstring) -> string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
complex32_eq :: #force_inline proc "contextless" (a, b: complex32) -> bool { return real(a) == real(b) && imag(a) == imag(b); }
|
||||||
|
complex32_ne :: #force_inline proc "contextless" (a, b: complex32) -> bool { return real(a) != real(b) || imag(a) != imag(b); }
|
||||||
|
|
||||||
complex64_eq :: #force_inline proc "contextless" (a, b: complex64) -> bool { return real(a) == real(b) && imag(a) == imag(b); }
|
complex64_eq :: #force_inline proc "contextless" (a, b: complex64) -> bool { return real(a) == real(b) && imag(a) == imag(b); }
|
||||||
complex64_ne :: #force_inline proc "contextless" (a, b: complex64) -> bool { return real(a) != real(b) || imag(a) != imag(b); }
|
complex64_ne :: #force_inline proc "contextless" (a, b: complex64) -> bool { return real(a) != real(b) || imag(a) != imag(b); }
|
||||||
|
|
||||||
@@ -307,6 +310,9 @@ complex128_eq :: #force_inline proc "contextless" (a, b: complex128) -> bool { r
|
|||||||
complex128_ne :: #force_inline proc "contextless" (a, b: complex128) -> bool { return real(a) != real(b) || imag(a) != imag(b); }
|
complex128_ne :: #force_inline proc "contextless" (a, b: complex128) -> bool { return real(a) != real(b) || imag(a) != imag(b); }
|
||||||
|
|
||||||
|
|
||||||
|
quaternion64_eq :: #force_inline proc "contextless" (a, b: quaternion64) -> bool { return real(a) == real(b) && imag(a) == imag(b) && jmag(a) == jmag(b) && kmag(a) == kmag(b); }
|
||||||
|
quaternion64_ne :: #force_inline proc "contextless" (a, b: quaternion64) -> bool { return real(a) != real(b) || imag(a) != imag(b) || jmag(a) != jmag(b) || kmag(a) != kmag(b); }
|
||||||
|
|
||||||
quaternion128_eq :: #force_inline proc "contextless" (a, b: quaternion128) -> bool { return real(a) == real(b) && imag(a) == imag(b) && jmag(a) == jmag(b) && kmag(a) == kmag(b); }
|
quaternion128_eq :: #force_inline proc "contextless" (a, b: quaternion128) -> bool { return real(a) == real(b) && imag(a) == imag(b) && jmag(a) == jmag(b) && kmag(a) == kmag(b); }
|
||||||
quaternion128_ne :: #force_inline proc "contextless" (a, b: quaternion128) -> bool { return real(a) != real(b) || imag(a) != imag(b) || jmag(a) != jmag(b) || kmag(a) != kmag(b); }
|
quaternion128_ne :: #force_inline proc "contextless" (a, b: quaternion128) -> bool { return real(a) != real(b) || imag(a) != imag(b) || jmag(a) != jmag(b) || kmag(a) != kmag(b); }
|
||||||
|
|
||||||
|
|||||||
@@ -1904,6 +1904,10 @@ void add_comparison_procedures_for_fields(CheckerContext *c, Type *t) {
|
|||||||
switch (t->kind) {
|
switch (t->kind) {
|
||||||
case Type_Basic:
|
case Type_Basic:
|
||||||
switch (t->Basic.kind) {
|
switch (t->Basic.kind) {
|
||||||
|
case Basic_complex32:
|
||||||
|
add_package_dependency(c, "runtime", "complex32_eq");
|
||||||
|
add_package_dependency(c, "runtime", "complex32_ne");
|
||||||
|
break;
|
||||||
case Basic_complex64:
|
case Basic_complex64:
|
||||||
add_package_dependency(c, "runtime", "complex64_eq");
|
add_package_dependency(c, "runtime", "complex64_eq");
|
||||||
add_package_dependency(c, "runtime", "complex64_ne");
|
add_package_dependency(c, "runtime", "complex64_ne");
|
||||||
@@ -1912,6 +1916,10 @@ void add_comparison_procedures_for_fields(CheckerContext *c, Type *t) {
|
|||||||
add_package_dependency(c, "runtime", "complex128_eq");
|
add_package_dependency(c, "runtime", "complex128_eq");
|
||||||
add_package_dependency(c, "runtime", "complex128_ne");
|
add_package_dependency(c, "runtime", "complex128_ne");
|
||||||
break;
|
break;
|
||||||
|
case Basic_quaternion64:
|
||||||
|
add_package_dependency(c, "runtime", "quaternion64_eq");
|
||||||
|
add_package_dependency(c, "runtime", "quaternion64_ne");
|
||||||
|
break;
|
||||||
case Basic_quaternion128:
|
case Basic_quaternion128:
|
||||||
add_package_dependency(c, "runtime", "quaternion128_eq");
|
add_package_dependency(c, "runtime", "quaternion128_eq");
|
||||||
add_package_dependency(c, "runtime", "quaternion128_ne");
|
add_package_dependency(c, "runtime", "quaternion128_ne");
|
||||||
@@ -2854,6 +2862,7 @@ void check_binary_expr(CheckerContext *c, Operand *x, Ast *node, Type *type_hint
|
|||||||
if (op.kind == Token_Quo || op.kind == Token_QuoEq) {
|
if (op.kind == Token_Quo || op.kind == Token_QuoEq) {
|
||||||
Type *bt = base_type(x->type);
|
Type *bt = base_type(x->type);
|
||||||
if (bt->kind == Type_Basic) switch (bt->Basic.kind) {
|
if (bt->kind == Type_Basic) switch (bt->Basic.kind) {
|
||||||
|
case Basic_complex32: add_package_dependency(c, "runtime", "quo_complex32"); break;
|
||||||
case Basic_complex64: add_package_dependency(c, "runtime", "quo_complex64"); break;
|
case Basic_complex64: add_package_dependency(c, "runtime", "quo_complex64"); break;
|
||||||
case Basic_complex128: add_package_dependency(c, "runtime", "quo_complex128"); break;
|
case Basic_complex128: add_package_dependency(c, "runtime", "quo_complex128"); break;
|
||||||
case Basic_quaternion64: add_package_dependency(c, "runtime", "quo_quaternion64"); break;
|
case Basic_quaternion64: add_package_dependency(c, "runtime", "quo_quaternion64"); break;
|
||||||
|
|||||||
+22
-10
@@ -7040,11 +7040,11 @@ lbValue lb_emit_arith_array(lbProcedure *p, TokenKind op, lbValue lhs, lbValue r
|
|||||||
#if 1
|
#if 1
|
||||||
#if 1
|
#if 1
|
||||||
unsigned n = cast(unsigned)count;
|
unsigned n = cast(unsigned)count;
|
||||||
auto dst_ptrs = array_make<lbValue>(temporary_allocator(), count);
|
auto dst_ptrs = slice_make<lbValue>(temporary_allocator(), count);
|
||||||
|
|
||||||
auto a_loads = array_make<lbValue>(temporary_allocator(), count);
|
auto a_loads = slice_make<lbValue>(temporary_allocator(), count);
|
||||||
auto b_loads = array_make<lbValue>(temporary_allocator(), count);
|
auto b_loads = slice_make<lbValue>(temporary_allocator(), count);
|
||||||
auto c_ops = array_make<lbValue>(temporary_allocator(), count);
|
auto c_ops = slice_make<lbValue>(temporary_allocator(), count);
|
||||||
|
|
||||||
for (unsigned i = 0; i < n; i++) {
|
for (unsigned i = 0; i < n; i++) {
|
||||||
a_loads[i].value = LLVMBuildExtractValue(p->builder, lhs.value, i, "");
|
a_loads[i].value = LLVMBuildExtractValue(p->builder, lhs.value, i, "");
|
||||||
@@ -7069,13 +7069,13 @@ lbValue lb_emit_arith_array(lbProcedure *p, TokenKind op, lbValue lhs, lbValue r
|
|||||||
lbValue x = lb_address_from_load_or_generate_local(p, lhs);
|
lbValue x = lb_address_from_load_or_generate_local(p, lhs);
|
||||||
lbValue y = lb_address_from_load_or_generate_local(p, rhs);
|
lbValue y = lb_address_from_load_or_generate_local(p, rhs);
|
||||||
|
|
||||||
auto a_ptrs = array_make<lbValue>(temporary_allocator(), count);
|
auto a_ptrs = slice_make<lbValue>(temporary_allocator(), count);
|
||||||
auto b_ptrs = array_make<lbValue>(temporary_allocator(), count);
|
auto b_ptrs = slice_make<lbValue>(temporary_allocator(), count);
|
||||||
auto dst_ptrs = array_make<lbValue>(temporary_allocator(), count);
|
auto dst_ptrs = slice_make<lbValue>(temporary_allocator(), count);
|
||||||
|
|
||||||
auto a_loads = array_make<lbValue>(temporary_allocator(), count);
|
auto a_loads = slice_make<lbValue>(temporary_allocator(), count);
|
||||||
auto b_loads = array_make<lbValue>(temporary_allocator(), count);
|
auto b_loads = slice_make<lbValue>(temporary_allocator(), count);
|
||||||
auto c_ops = array_make<lbValue>(temporary_allocator(), count);
|
auto c_ops = slice_make<lbValue>(temporary_allocator(), count);
|
||||||
|
|
||||||
for (i64 i = 0; i < count; i++) {
|
for (i64 i = 0; i < count; i++) {
|
||||||
a_ptrs[i] = lb_emit_array_epi(p, x, i);
|
a_ptrs[i] = lb_emit_array_epi(p, x, i);
|
||||||
@@ -11439,6 +11439,12 @@ lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue ri
|
|||||||
char const *runtime_procedure = "";
|
char const *runtime_procedure = "";
|
||||||
i64 sz = 8*type_size_of(a);
|
i64 sz = 8*type_size_of(a);
|
||||||
switch (sz) {
|
switch (sz) {
|
||||||
|
case 32:
|
||||||
|
switch (op_kind) {
|
||||||
|
case Token_CmpEq: runtime_procedure = "complex32_eq"; break;
|
||||||
|
case Token_NotEq: runtime_procedure = "complex32_ne"; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 64:
|
case 64:
|
||||||
switch (op_kind) {
|
switch (op_kind) {
|
||||||
case Token_CmpEq: runtime_procedure = "complex64_eq"; break;
|
case Token_CmpEq: runtime_procedure = "complex64_eq"; break;
|
||||||
@@ -11464,6 +11470,12 @@ lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue ri
|
|||||||
char const *runtime_procedure = "";
|
char const *runtime_procedure = "";
|
||||||
i64 sz = 8*type_size_of(a);
|
i64 sz = 8*type_size_of(a);
|
||||||
switch (sz) {
|
switch (sz) {
|
||||||
|
case 64:
|
||||||
|
switch (op_kind) {
|
||||||
|
case Token_CmpEq: runtime_procedure = "quaternion64_eq"; break;
|
||||||
|
case Token_NotEq: runtime_procedure = "quaternion64_ne"; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 128:
|
case 128:
|
||||||
switch (op_kind) {
|
switch (op_kind) {
|
||||||
case Token_CmpEq: runtime_procedure = "quaternion128_eq"; break;
|
case Token_CmpEq: runtime_procedure = "quaternion128_eq"; break;
|
||||||
|
|||||||
Reference in New Issue
Block a user