mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 23:28:48 +00:00
Allow basic arithmetic operations for vectors
This commit is contained in:
+1
-1
@@ -1700,7 +1700,7 @@ void ir_print_instr(irFileBuffer *f, irModule *m, irValue *value) {
|
|||||||
case irInstr_BinaryOp: {
|
case irInstr_BinaryOp: {
|
||||||
irInstrBinaryOp *bo = &value->Instr.BinaryOp;
|
irInstrBinaryOp *bo = &value->Instr.BinaryOp;
|
||||||
Type *type = base_type(ir_type(bo->left));
|
Type *type = base_type(ir_type(bo->left));
|
||||||
Type *elem_type = type;
|
Type *elem_type = base_array_type(type);
|
||||||
|
|
||||||
ir_fprintf(f, "%%%d = ", value->index);
|
ir_fprintf(f, "%%%d = ", value->index);
|
||||||
|
|
||||||
|
|||||||
+9
-4
@@ -974,11 +974,20 @@ bool is_type_poly_proc(Type *t) {
|
|||||||
t = base_type(t);
|
t = base_type(t);
|
||||||
return t->kind == Type_Proc && t->Proc.is_polymorphic;
|
return t->kind == Type_Proc && t->Proc.is_polymorphic;
|
||||||
}
|
}
|
||||||
|
bool is_type_simd_vector(Type *t) {
|
||||||
|
t = base_type(t);
|
||||||
|
return t->kind == Type_SimdVector;
|
||||||
|
}
|
||||||
|
|
||||||
Type *base_array_type(Type *t) {
|
Type *base_array_type(Type *t) {
|
||||||
if (is_type_array(t)) {
|
if (is_type_array(t)) {
|
||||||
t = base_type(t);
|
t = base_type(t);
|
||||||
return t->Array.elem;
|
return t->Array.elem;
|
||||||
}
|
}
|
||||||
|
if (is_type_simd_vector(t)) {
|
||||||
|
t = base_type(t);
|
||||||
|
return t->SimdVector.elem;
|
||||||
|
}
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -987,10 +996,6 @@ bool is_type_generic(Type *t) {
|
|||||||
return t->kind == Type_Generic;
|
return t->kind == Type_Generic;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_type_simd_vector(Type *t) {
|
|
||||||
t = base_type(t);
|
|
||||||
return t->kind == Type_SimdVector;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Type *core_array_type(Type *t) {
|
Type *core_array_type(Type *t) {
|
||||||
|
|||||||
Reference in New Issue
Block a user