From ddb15e73c0f378b5d65675ba242e505fb1a3b2f2 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 19 Aug 2016 09:54:01 +0100 Subject: [PATCH] Remove print(ln) and fix swizzle --- examples/main.ll | 64 +++++++++++++++++++------------------- src/checker/checker.cpp | 6 ---- src/checker/expr.cpp | 12 ------- src/codegen/print_llvm.cpp | 9 ++++-- src/codegen/ssa.cpp | 9 ------ 5 files changed, 38 insertions(+), 62 deletions(-) diff --git a/examples/main.ll b/examples/main.ll index ad83d4b5d..72c4ce0a7 100644 --- a/examples/main.ll +++ b/examples/main.ll @@ -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 diff --git a/src/checker/checker.cpp b/src/checker/checker.cpp index 100b480bd..e0cacf455 100644 --- a/src/checker/checker.cpp +++ b/src/checker/checker.cpp @@ -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 { diff --git a/src/checker/expr.cpp b/src/checker/expr.cpp index 602035803..8844ce542 100644 --- a/src/checker/expr.cpp +++ b/src/checker/expr.cpp @@ -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; } diff --git a/src/codegen/print_llvm.cpp b/src/codegen/print_llvm.cpp index f7c6d2651..f584bbe06 100644 --- a/src/codegen/print_llvm.cpp +++ b/src/codegen/print_llvm.cpp @@ -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, ", "); diff --git a/src/codegen/ssa.cpp b/src/codegen/ssa.cpp index be38b2c1b..8e83a7e09 100644 --- a/src/codegen/ssa.cpp +++ b/src/codegen/ssa.cpp @@ -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; } } }