Browse Source

Add min_f16 and max_f16 dependencies

gingerBill 4 years ago
parent
commit
d027a5f1a4
2 changed files with 6 additions and 0 deletions
  1. 4 0
      src/check_builtin.cpp
  2. 2 0
      src/llvm_backend.cpp

+ 4 - 0
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);
 				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)) {
 				if (are_types_identical(bt, t_f32)) {
 					add_package_dependency(c, "runtime", "min_f32");
 					add_package_dependency(c, "runtime", "min_f32");
 					add_package_dependency(c, "runtime", "max_f32");
 					add_package_dependency(c, "runtime", "max_f32");

+ 2 - 0
src/llvm_backend.cpp

@@ -5458,6 +5458,7 @@ lbValue lb_emit_min(lbProcedure *p, Type *t, lbValue x, lbValue y) {
 		args[0] = x;
 		args[0] = x;
 		args[1] = y;
 		args[1] = y;
 		switch (sz) {
 		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 32: return lb_emit_runtime_call(p, "min_f32", args);
 		case 64: return lb_emit_runtime_call(p, "min_f64", 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[0] = x;
 		args[1] = y;
 		args[1] = y;
 		switch (sz) {
 		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 32: return lb_emit_runtime_call(p, "max_f32", args);
 		case 64: return lb_emit_runtime_call(p, "max_f64", args);
 		case 64: return lb_emit_runtime_call(p, "max_f64", args);
 		}
 		}