From: Brendan Hansen Date: Mon, 26 Sep 2022 19:19:22 +0000 (-0500) Subject: bugfix with clz not being correct for u64 X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=526c95b2ea9f769c95c64904af7eec08c620f532;p=onyx.git bugfix with clz not being correct for u64 --- diff --git a/compiler/src/checker.c b/compiler/src/checker.c index 80014d8b..b81cbbe9 100644 --- a/compiler/src/checker.c +++ b/compiler/src/checker.c @@ -248,6 +248,10 @@ CheckStatus check_for(AstFor* fornode) { error_loc = fornode->token->pos; } + // @HACK This should be built elsewhere... + builtin_range_type_type = type_build_from_ast(context.ast_alloc, builtin_range_type); + if (builtin_range_type_type == NULL) YIELD(fornode->token->pos, "Waiting for 'range' structure to be built."); + fornode->loop_type = For_Loop_Invalid; if (types_are_compatible(iter_type, &basic_types[Basic_Kind_I32])) { if (fornode->by_pointer) { diff --git a/interpreter/src/vm/vm.c b/interpreter/src/vm/vm.c index 551c6caa..3a85c538 100644 --- a/interpreter/src/vm/vm.c +++ b/interpreter/src/vm/vm.c @@ -865,17 +865,17 @@ ovm_value_t ovm_run_code(ovm_engine_t *engine, ovm_state_t *state, ovm_program_t OVM_OP(OVMI_CLZ, OVM_TYPE_I8 , __builtin_clz, u8) OVM_OP(OVMI_CLZ, OVM_TYPE_I16, __builtin_clz, u16) OVM_OP(OVMI_CLZ, OVM_TYPE_I32, __builtin_clz, u32) - OVM_OP(OVMI_CLZ, OVM_TYPE_I64, __builtin_clz, u64) + OVM_OP(OVMI_CLZ, OVM_TYPE_I64, __builtin_clzll, u64) OVM_OP(OVMI_CTZ, OVM_TYPE_I8 , __builtin_ctz, u8) OVM_OP(OVMI_CTZ, OVM_TYPE_I16, __builtin_ctz, u16) OVM_OP(OVMI_CTZ, OVM_TYPE_I32, __builtin_ctz, u32) - OVM_OP(OVMI_CTZ, OVM_TYPE_I64, __builtin_ctz, u64) + OVM_OP(OVMI_CTZ, OVM_TYPE_I64, __builtin_ctzll, u64) OVM_OP(OVMI_POPCNT, OVM_TYPE_I8 , __builtin_popcount, u8) OVM_OP(OVMI_POPCNT, OVM_TYPE_I16, __builtin_popcount, u16) OVM_OP(OVMI_POPCNT, OVM_TYPE_I32, __builtin_popcount, u32) - OVM_OP(OVMI_POPCNT, OVM_TYPE_I64, __builtin_popcount, u64) + OVM_OP(OVMI_POPCNT, OVM_TYPE_I64, __builtin_popcountll, u64) OVM_OP(OVMI_ABS, OVM_TYPE_F32, __ovm_abs, f32); OVM_OP(OVMI_NEG, OVM_TYPE_F32, -, f32); diff --git a/shared/lib/linux_x86_64/lib/libovmwasm.so b/shared/lib/linux_x86_64/lib/libovmwasm.so index 9779da0d..bb90f89b 100755 Binary files a/shared/lib/linux_x86_64/lib/libovmwasm.so and b/shared/lib/linux_x86_64/lib/libovmwasm.so differ