diff --git a/libs/symfpu b/libs/symfpu index 7fce38f94..04da5d228 160000 --- a/libs/symfpu +++ b/libs/symfpu @@ -1 +1 @@ -Subproject commit 7fce38f94fa0730b3010443eb9a1390c91e5fba0 +Subproject commit 04da5d2283989b51fe0ab44472cc598c9c50c83f diff --git a/passes/cmds/symfpu.cc b/passes/cmds/symfpu.cc index 05ee59f2a..90b83ca25 100644 --- a/passes/cmds/symfpu.cc +++ b/passes/cmds/symfpu.cc @@ -452,6 +452,7 @@ struct SymFpuPass : public Pass { else if (op.compare("add") == 0 || op.compare("sub") == 0 || op.compare("mul") == 0 + || op.compare("altdiv") == 0 // currently undocumented || op.compare("div") == 0) inputs = 2; else if (op.compare("muladd") == 0) @@ -528,6 +529,8 @@ struct SymFpuPass : public Pass { return symfpu::sqrt_flagged(format, rounding_mode, a); else if (op.compare("muladd") == 0) return symfpu::fma_flagged(format, rounding_mode, a, b, c); + else if (op.compare("altdiv") == 0) + return symfpu::falseDivide_flagged(format, rounding_mode, a, b); else log_abort(); }; diff --git a/tests/symfpu/run-test.sh b/tests/symfpu/run-test.sh index b262c26af..512a0568e 100755 --- a/tests/symfpu/run-test.sh +++ b/tests/symfpu/run-test.sh @@ -41,5 +41,6 @@ prove_op sub "-DSUB -DADDSUB -DADDS" prove_op mul "-DMUL -DMULS" prove_op div "-DDIV" prove_op muladd "-DMULADD -DMULS -DADDS" +prove_op altdiv "-DDIV -DALTDIV" generate_mk --yosys-scripts