From d027a5f1a470233a0307bcf3c7c4fe0b6494cd87 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 3 May 2021 18:48:48 +0100 Subject: [PATCH] Add min_f16 and max_f16 dependencies --- src/check_builtin.cpp | 4 ++++ src/llvm_backend.cpp | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 898239234..6b299a68a 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -1509,6 +1509,10 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 { Type *bt = base_type(x.type); + if (are_types_identical(bt, t_f16)) { + add_package_dependency(c, "runtime", "min_f16"); + add_package_dependency(c, "runtime", "max_f16"); + } if (are_types_identical(bt, t_f32)) { add_package_dependency(c, "runtime", "min_f32"); add_package_dependency(c, "runtime", "max_f32"); diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index a7c149f06..9649af6c9 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -5458,6 +5458,7 @@ lbValue lb_emit_min(lbProcedure *p, Type *t, lbValue x, lbValue y) { args[0] = x; args[1] = y; switch (sz) { + case 16: return lb_emit_runtime_call(p, "min_f16", args); case 32: return lb_emit_runtime_call(p, "min_f32", args); case 64: return lb_emit_runtime_call(p, "min_f64", args); } @@ -5475,6 +5476,7 @@ lbValue lb_emit_max(lbProcedure *p, Type *t, lbValue x, lbValue y) { args[0] = x; args[1] = y; switch (sz) { + case 16: return lb_emit_runtime_call(p, "max_f16", args); case 32: return lb_emit_runtime_call(p, "max_f32", args); case 64: return lb_emit_runtime_call(p, "max_f64", args); }