mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-05 10:14:05 +00:00
Remove print(ln) and fix swizzle
This commit is contained in:
@@ -1031,38 +1031,6 @@ for.done.-.8:
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @print_pointer(%.rawptr %p) alwaysinline {
|
||||
entry.-.0:
|
||||
%0 = alloca %.rawptr, align 8 ; p
|
||||
store %.rawptr zeroinitializer, %.rawptr* %0
|
||||
store %.rawptr %p, %.rawptr* %0
|
||||
%1 = load %.rawptr, %.rawptr* %0, align 8
|
||||
%2 = ptrtoint %.rawptr %1 to i64
|
||||
call void @print__uint(i64 %2, i64 16, i64 0, i8 32)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @print_f32(float %f) alwaysinline {
|
||||
entry.-.0:
|
||||
%0 = alloca float, align 4 ; f
|
||||
store float zeroinitializer, float* %0
|
||||
store float %f, float* %0
|
||||
%1 = load float, float* %0, align 4
|
||||
%2 = fpext float %1 to double
|
||||
call void @print__f64(double %2, i64 7)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @print_f64(double %f) alwaysinline {
|
||||
entry.-.0:
|
||||
%0 = alloca double, align 8 ; f
|
||||
store double zeroinitializer, double* %0
|
||||
store double %f, double* %0
|
||||
%1 = load double, double* %0, align 8
|
||||
call void @print__f64(double %1, i64 10)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @print_bool(i1 %b) {
|
||||
entry.-.0:
|
||||
%0 = alloca i1, align 1 ; b
|
||||
@@ -1099,6 +1067,38 @@ if.done.-.3:
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @print_pointer(%.rawptr %p) alwaysinline {
|
||||
entry.-.0:
|
||||
%0 = alloca %.rawptr, align 8 ; p
|
||||
store %.rawptr zeroinitializer, %.rawptr* %0
|
||||
store %.rawptr %p, %.rawptr* %0
|
||||
%1 = load %.rawptr, %.rawptr* %0, align 8
|
||||
%2 = ptrtoint %.rawptr %1 to i64
|
||||
call void @print__uint(i64 %2, i64 16, i64 0, i8 32)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @print_f32(float %f) alwaysinline {
|
||||
entry.-.0:
|
||||
%0 = alloca float, align 4 ; f
|
||||
store float zeroinitializer, float* %0
|
||||
store float %f, float* %0
|
||||
%1 = load float, float* %0, align 4
|
||||
%2 = fpext float %1 to double
|
||||
call void @print__f64(double %2, i64 7)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @print_f64(double %f) alwaysinline {
|
||||
entry.-.0:
|
||||
%0 = alloca double, align 8 ; f
|
||||
store double zeroinitializer, double* %0
|
||||
store double %f, double* %0
|
||||
%1 = load double, double* %0, align 8
|
||||
call void @print__f64(double %1, i64 10)
|
||||
ret void
|
||||
}
|
||||
|
||||
define void @print__f64(double %f, i64 %decimal_places) {
|
||||
entry.-.0:
|
||||
%0 = alloca double, align 8 ; f
|
||||
|
||||
@@ -124,8 +124,6 @@ enum BuiltinProcId {
|
||||
BuiltinProc_copy,
|
||||
BuiltinProc_append,
|
||||
BuiltinProc_swizzle,
|
||||
BuiltinProc_print,
|
||||
BuiltinProc_println,
|
||||
|
||||
BuiltinProc_Count,
|
||||
};
|
||||
@@ -152,10 +150,6 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_Count] = {
|
||||
{STR_LIT("append"), 2, false, Expression_Expression},
|
||||
|
||||
{STR_LIT("swizzle"), 1, true, Expression_Expression},
|
||||
|
||||
{STR_LIT("print"), 1, true, Expression_Statement},
|
||||
{STR_LIT("println"), 1, true, Expression_Statement},
|
||||
|
||||
};
|
||||
|
||||
struct CheckerContext {
|
||||
|
||||
@@ -1470,7 +1470,6 @@ b32 check_builtin_procedure(Checker *c, Operand *operand, AstNode *call, i32 id)
|
||||
|
||||
case BuiltinProc_static_assert:
|
||||
// static_assert :: proc(cond: bool)
|
||||
// TODO(bill): Should `static_assert` and `assert` be unified?
|
||||
|
||||
if (operand->mode != Addressing_Constant ||
|
||||
!is_type_boolean(operand->type)) {
|
||||
@@ -1663,17 +1662,6 @@ b32 check_builtin_procedure(Checker *c, Operand *operand, AstNode *call, i32 id)
|
||||
Type *elem_type = vector_type->vector.elem;
|
||||
operand->type = make_type_vector(c->allocator, elem_type, arg_count);
|
||||
operand->mode = Addressing_Value;
|
||||
}
|
||||
|
||||
case BuiltinProc_print:
|
||||
case BuiltinProc_println: {
|
||||
for (AstNode *arg = ce->arg_list; arg != NULL; arg = arg->next) {
|
||||
// TOOD(bill): `check_assignment` doesn't allow tuples at the moment, should it?
|
||||
// Or should we destruct the tuple and use each elem?
|
||||
check_assignment(c, operand, NULL, make_string("argument"));
|
||||
if (operand->mode == Addressing_Invalid)
|
||||
return false;
|
||||
}
|
||||
} break;
|
||||
}
|
||||
|
||||
|
||||
@@ -641,10 +641,13 @@ void ssa_print_instr(gbFile *f, ssaModule *m, ssaValue *value) {
|
||||
ssa_fprintf(f, " ");
|
||||
ssa_print_value(f, m, sv->vector, vt);
|
||||
ssa_fprintf(f, ", ");
|
||||
ssa_print_type(f, m->sizes, vt);
|
||||
ssa_fprintf(f, " undef,");
|
||||
|
||||
ssa_fprintf(f, " <%td x i32> <", sv->index_count);
|
||||
ssa_print_type(f, m->sizes, vt);
|
||||
ssa_fprintf(f, " ");
|
||||
ssa_print_value(f, m, sv->vector, vt);
|
||||
ssa_fprintf(f, ", ");
|
||||
|
||||
ssa_fprintf(f, "<%td x i32> <", sv->index_count);
|
||||
for (isize i = 0; i < sv->index_count; i++) {
|
||||
if (i > 0) {
|
||||
ssa_fprintf(f, ", ");
|
||||
|
||||
@@ -1818,15 +1818,6 @@ ssaValue *ssa_build_single_expr(ssaProcedure *proc, AstNode *expr, TypeAndValue
|
||||
return ssa_emit(proc, ssa_make_instr_shuffle_vector(proc, vector, indices, index_count));
|
||||
|
||||
} break;
|
||||
|
||||
case BuiltinProc_print: {
|
||||
// print :: proc(...)
|
||||
GB_PANIC("TODO(bill): BuiltinProc_print");
|
||||
} break;
|
||||
case BuiltinProc_println: {
|
||||
// println :: proc(...)
|
||||
GB_PANIC("TODO(bill): BuiltinProc_println");
|
||||
} break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user