aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-05-03 18:48:48 +0100
committergingerBill <bill@gingerbill.org>2021-05-03 18:48:48 +0100
commitd027a5f1a470233a0307bcf3c7c4fe0b6494cd87 (patch)
treea8409bbd5d40e66503b60061dbbf12f5ed0396a0 /src
parent746e880eb521e6cf5b6a452004da9bc5d2095076 (diff)
Add min_f16 and max_f16 dependencies
Diffstat (limited to 'src')
-rw-r--r--src/check_builtin.cpp4
-rw-r--r--src/llvm_backend.cpp2
2 files changed, 6 insertions, 0 deletions
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);
}