diff --git a/libs/symfpu b/libs/symfpu index 95b27d8f2..50cca8075 160000 --- a/libs/symfpu +++ b/libs/symfpu @@ -1 +1 @@ -Subproject commit 95b27d8f2f7cd965e13ca5ff33fd7b47c410b561 +Subproject commit 50cca80758d16bf72161d4d2eafb7b7c18ab44ba diff --git a/passes/cmds/symfpu.cc b/passes/cmds/symfpu.cc index b35270bd4..478bbd696 100644 --- a/passes/cmds/symfpu.cc +++ b/passes/cmds/symfpu.cc @@ -447,7 +447,8 @@ struct SymFpuPass : public Pass { } if (args[argidx] == "-op" && argidx+1 < args.size()) { op = args[++argidx]; - if (op.compare("sqrt") == 0) + if (op.compare("sqrt") == 0 + || op.compare("altsqrt") == 0) // currently undocumented inputs = 1; else if (op.compare("add") == 0 || op.compare("sub") == 0 @@ -534,6 +535,8 @@ struct SymFpuPass : public Pass { return symfpu::falseDivide_flagged(format, rounding_mode, a, b, prop(true)); else if (op.compare("alt2div") == 0) return symfpu::falseDivide_flagged(format, rounding_mode, a, b, prop(false)); + else if (op.compare("altsqrt") == 0) + return symfpu::falseSqrt_flagged(format, rounding_mode, a); else log_abort(); };