From 09e1f7607fe4081a4dedf1222e6eef7576172105 Mon Sep 17 00:00:00 2001 From: varkor Date: Thu, 28 Dec 2017 10:26:35 +0000 Subject: [PATCH] Add llvm.minnum.f(32|64) and llvm.maxnum.f(32|64) intrinsics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The corresponding change to Emscripten is this PR: kripken/emscripten#5978, and relates to this issue: kripken/emscripten#5976. I’m using #143 as a model. --- lib/Target/JSBackend/CallHandlers.h | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/Target/JSBackend/CallHandlers.h b/lib/Target/JSBackend/CallHandlers.h index b711389e982..c4fe8897237 100644 --- a/lib/Target/JSBackend/CallHandlers.h +++ b/lib/Target/JSBackend/CallHandlers.h @@ -697,14 +697,6 @@ DEF_CALL_HANDLER(llvm_ctpop_i64, { return CH___default__(CI, "_llvm_ctpop_i64"); }) -DEF_CALL_HANDLER(llvm_maxnum_f32, { - return CH___default__(CI, "Math_max", 2); -}) - -DEF_CALL_HANDLER(llvm_maxnum_f64, { - return CH___default__(CI, "Math_max", 2); -}) - DEF_CALL_HANDLER(llvm_copysign_f32, { if (OnlyWebAssembly) { return CH___default__(CI, "f32_copysign", 2); @@ -975,6 +967,10 @@ DEF_MAYBE_BUILTIN_HANDLER(llvm_cos_f32, Math_cos); DEF_MAYBE_BUILTIN_HANDLER(llvm_cos_f64, Math_cos); DEF_MAYBE_BUILTIN_HANDLER(llvm_sin_f32, Math_sin); DEF_MAYBE_BUILTIN_HANDLER(llvm_sin_f64, Math_sin); +DEF_MAYBE_BUILTIN_HANDLER(llvm_minnum_f32, Math_min); +DEF_MAYBE_BUILTIN_HANDLER(llvm_minnum_f64, Math_min); +DEF_MAYBE_BUILTIN_HANDLER(llvm_maxnum_f32, Math_max); +DEF_MAYBE_BUILTIN_HANDLER(llvm_maxnum_f64, Math_max); DEF_CALL_HANDLER(llvm_powi_f32, { return getAssign(CI) + getParenCast("Math_pow(" + getValueAsCastStr(CI->getOperand(0)) + ", " + getCast(getValueAsCastStr(CI->getOperand(1)), CI->getOperand(0)->getType()) + ")", CI->getType()); @@ -1692,8 +1688,6 @@ void setupCallHandlers() { SETUP_CALL_HANDLER(llvm_cttz_i64); SETUP_CALL_HANDLER(llvm_ctpop_i32); SETUP_CALL_HANDLER(llvm_ctpop_i64); - SETUP_CALL_HANDLER(llvm_maxnum_f32); - SETUP_CALL_HANDLER(llvm_maxnum_f64); SETUP_CALL_HANDLER(llvm_copysign_f32); SETUP_CALL_HANDLER(llvm_copysign_f64); @@ -2237,6 +2231,10 @@ void setupCallHandlers() { SETUP_CALL_HANDLER(llvm_cos_f64); SETUP_CALL_HANDLER(llvm_sin_f32); SETUP_CALL_HANDLER(llvm_sin_f64); + SETUP_CALL_HANDLER(llvm_minnum_f32); + SETUP_CALL_HANDLER(llvm_minnum_f64); + SETUP_CALL_HANDLER(llvm_maxnum_f32); + SETUP_CALL_HANDLER(llvm_maxnum_f64); } std::string handleCall(const Instruction *CI) {