mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-26 07:25:00 -07:00
intrinsics.vector type (Experimental)
This commit is contained in:
+13
@@ -7268,6 +7268,7 @@ irAddr ir_build_addr(irProcedure *proc, Ast *expr) {
|
||||
case Type_Array: et = bt->Array.elem; break;
|
||||
case Type_Slice: et = bt->Slice.elem; break;
|
||||
case Type_BitSet: et = bt->BitSet.elem; break;
|
||||
case Type_SimdVector: et = bt->SimdVector.elem; break;
|
||||
}
|
||||
|
||||
String proc_name = {};
|
||||
@@ -9995,6 +9996,18 @@ void ir_setup_type_info_data(irProcedure *proc) { // NOTE(bill): Setup type_info
|
||||
tag = ir_emit_conv(proc, variant_ptr, t_type_info_opaque_ptr);
|
||||
ir_emit_store(proc, ir_emit_struct_ep(proc, tag, 0), ir_get_type_info_ptr(proc, t->Opaque.elem));
|
||||
break;
|
||||
|
||||
case Type_SimdVector:
|
||||
ir_emit_comment(proc, str_lit("Type_SimdVector"));
|
||||
tag = ir_emit_conv(proc, variant_ptr, t_type_info_simd_vector_ptr);
|
||||
if (t->SimdVector.is_x86_mmx) {
|
||||
ir_emit_store(proc, ir_emit_struct_ep(proc, tag, 3), v_true);
|
||||
} else {
|
||||
ir_emit_store(proc, ir_emit_struct_ep(proc, tag, 0), ir_get_type_info_ptr(proc, t->SimdVector.elem));
|
||||
ir_emit_store(proc, ir_emit_struct_ep(proc, tag, 1), ir_const_int(type_size_of(t->SimdVector.elem)));
|
||||
ir_emit_store(proc, ir_emit_struct_ep(proc, tag, 2), ir_const_int(t->SimdVector.count));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user