projects
/
ieee754fpu.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3783793
)
use opcode rather than magic constants (will need a class, later)
author
Luke Kenneth Casson Leighton
<lkcl@lkcl.net>
Sun, 28 Jul 2019 12:15:34 +0000
(13:15 +0100)
committer
Luke Kenneth Casson Leighton
<lkcl@lkcl.net>
Sun, 28 Jul 2019 12:15:34 +0000
(13:15 +0100)
src/ieee754/fpdiv/test/test_fpdiv_pipe.py
patch
|
blob
|
history
src/ieee754/fpdiv/test/test_fpdiv_pipe_16.py
patch
|
blob
|
history
src/ieee754/fpdiv/test/test_fpdiv_pipe_32.py
patch
|
blob
|
history
src/ieee754/fpdiv/test/test_fprsqrt_pipe.py
patch
|
blob
|
history
src/ieee754/fpdiv/test/test_fpsqrt_pipe.py
patch
|
blob
|
history
diff --git
a/src/ieee754/fpdiv/test/test_fpdiv_pipe.py
b/src/ieee754/fpdiv/test/test_fpdiv_pipe.py
index 451d979dac7bd48338f8f9ed14ee2c21ff914239..a1ed5787a1383ef950965f719c4f4951bcd736e2 100644
(file)
--- a/
src/ieee754/fpdiv/test/test_fpdiv_pipe.py
+++ b/
src/ieee754/fpdiv/test/test_fpdiv_pipe.py
@@
-3,6
+3,7
@@
from ieee754.fpdiv.pipeline import (FPDIVMuxInOut,)
from ieee754.fpcommon.test.fpmux import runfp
from ieee754.fpdiv.pipeline import (FPDIVMuxInOut,)
from ieee754.fpcommon.test.fpmux import runfp
+from ieee754.div_rem_sqrt_rsqrt.core import DivPipeCoreOperation
import unittest
from sfpy import Float64, Float32, Float16
import unittest
from sfpy import Float64, Float32, Float16
@@
-12,15
+13,24
@@
from operator import truediv as div
class TestDivPipe(unittest.TestCase):
def test_pipe_div_fp16(self):
dut = FPDIVMuxInOut(16, 4)
class TestDivPipe(unittest.TestCase):
def test_pipe_div_fp16(self):
dut = FPDIVMuxInOut(16, 4)
- runfp(dut, 16, "test_fpdiv_pipe_fp16", Float16, div)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.UDivRem)
+ runfp(dut, 16, "test_fpdiv_pipe_fp16", Float16, div,
+ opcode=opcode)
def test_pipe_div_fp32(self):
dut = FPDIVMuxInOut(32, 4)
def test_pipe_div_fp32(self):
dut = FPDIVMuxInOut(32, 4)
- runfp(dut, 32, "test_fpdiv_pipe_fp32", Float32, div)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.UDivRem)
+ runfp(dut, 32, "test_fpdiv_pipe_fp32", Float32, div,
+ opcode=opcode)
def test_pipe_div_fp64(self):
dut = FPDIVMuxInOut(64, 4)
def test_pipe_div_fp64(self):
dut = FPDIVMuxInOut(64, 4)
- runfp(dut, 64, "test_fpdiv_pipe_fp64", Float64, div)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.UDivRem)
+ runfp(dut, 64, "test_fpdiv_pipe_fp64", Float64, div,
+ opcode=opcode)
if __name__ == '__main__':
if __name__ == '__main__':
diff --git
a/src/ieee754/fpdiv/test/test_fpdiv_pipe_16.py
b/src/ieee754/fpdiv/test/test_fpdiv_pipe_16.py
index da617e9ea396f1ff4a690479809322ed172de024..c520e09524778ce1793258e6e20310827b8c6ae2 100644
(file)
--- a/
src/ieee754/fpdiv/test/test_fpdiv_pipe_16.py
+++ b/
src/ieee754/fpdiv/test/test_fpdiv_pipe_16.py
@@
-5,6
+5,7
@@
from ieee754.fpdiv.pipeline import (FPDIVMuxInOut,)
from ieee754.fpcommon.test.case_gen import run_pipe_fp
from ieee754.fpcommon.test import unit_test_half
from ieee754.fpdiv.test.div_data16 import regressions
from ieee754.fpcommon.test.case_gen import run_pipe_fp
from ieee754.fpcommon.test import unit_test_half
from ieee754.fpdiv.test.div_data16 import regressions
+from ieee754.div_rem_sqrt_rsqrt.core import DivPipeCoreOperation
import unittest
from sfpy import Float16
import unittest
from sfpy import Float16
@@
-14,8
+15,10
@@
from operator import truediv as div
class TestDivPipe(unittest.TestCase):
def test_pipe_fp16(self):
dut = FPDIVMuxInOut(16, 4)
class TestDivPipe(unittest.TestCase):
def test_pipe_fp16(self):
dut = FPDIVMuxInOut(16, 4)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.UDivRem)
run_pipe_fp(dut, 16, "div16", unit_test_half, Float16,
run_pipe_fp(dut, 16, "div16", unit_test_half, Float16,
- regressions, div, 10)
+ regressions, div, 10
, opcode=opcode
)
if __name__ == '__main__':
if __name__ == '__main__':
diff --git
a/src/ieee754/fpdiv/test/test_fpdiv_pipe_32.py
b/src/ieee754/fpdiv/test/test_fpdiv_pipe_32.py
index d79eddce880b602e04837ea4b1b7a612fd12a9f8..91f3677fc9ef2f7c2cb0027fb2bd769af28d52e0 100644
(file)
--- a/
src/ieee754/fpdiv/test/test_fpdiv_pipe_32.py
+++ b/
src/ieee754/fpdiv/test/test_fpdiv_pipe_32.py
@@
-5,6
+5,7
@@
from ieee754.fpdiv.pipeline import (FPDIVMuxInOut,)
from ieee754.fpcommon.test.case_gen import run_pipe_fp
from ieee754.fpcommon.test import unit_test_single
from ieee754.fpdiv.test.div_data32 import regressions
from ieee754.fpcommon.test.case_gen import run_pipe_fp
from ieee754.fpcommon.test import unit_test_single
from ieee754.fpdiv.test.div_data32 import regressions
+from ieee754.div_rem_sqrt_rsqrt.core import DivPipeCoreOperation
import unittest
from sfpy import Float32
import unittest
from sfpy import Float32
@@
-14,8
+15,10
@@
from operator import truediv as div
class TestDivPipe(unittest.TestCase):
def test_pipe_fp32(self):
dut = FPDIVMuxInOut(32, 4)
class TestDivPipe(unittest.TestCase):
def test_pipe_fp32(self):
dut = FPDIVMuxInOut(32, 4)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.UDivRem)
run_pipe_fp(dut, 32, "div32", unit_test_single, Float32,
run_pipe_fp(dut, 32, "div32", unit_test_single, Float32,
- regressions, div, 10)
+ regressions, div, 10
, opcode=opcode
)
if __name__ == '__main__':
if __name__ == '__main__':
diff --git
a/src/ieee754/fpdiv/test/test_fprsqrt_pipe.py
b/src/ieee754/fpdiv/test/test_fprsqrt_pipe.py
index d8e47235f3ed68c7a851173a046a4422077dccdc..0457c52402e5cfa1c6159e8e3ae4b83920a43275 100644
(file)
--- a/
src/ieee754/fpdiv/test/test_fprsqrt_pipe.py
+++ b/
src/ieee754/fpdiv/test/test_fprsqrt_pipe.py
@@
-3,31
+3,40
@@
from ieee754.fpdiv.pipeline import (FPDIVMuxInOut,)
from ieee754.fpcommon.test.fpmux import runfp
from ieee754.fpdiv.pipeline import (FPDIVMuxInOut,)
from ieee754.fpcommon.test.fpmux import runfp
+from ieee754.div_rem_sqrt_rsqrt.core import DivPipeCoreOperation
import unittest
from sfpy import Float64, Float32, Float16
def rsqrt(x):
import unittest
from sfpy import Float64, Float32, Float16
def rsqrt(x):
- # FIXME: switch to correct implementation (rounding once)
- return x.__class__(1.0) / x.sqrt()
+ # FIXME: switch to correct implementation
+ # needs to use exact arithmetic and rounding only once at the end
+ return x.__class__(float(Float64(1.0) / x.to_f64().sqrt()))
class TestDivPipe(unittest.TestCase):
def test_pipe_rsqrt_fp16(self):
dut = FPDIVMuxInOut(16, 4)
class TestDivPipe(unittest.TestCase):
def test_pipe_rsqrt_fp16(self):
dut = FPDIVMuxInOut(16, 4)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.RSqrtRem)
runfp(dut, 16, "test_fprsqrt_pipe_fp16", Float16, rsqrt,
runfp(dut, 16, "test_fprsqrt_pipe_fp16", Float16, rsqrt,
- single_op=True, opcode=
2
, n_vals=100)
+ single_op=True, opcode=
opcode
, n_vals=100)
def test_pipe_rsqrt_fp32(self):
dut = FPDIVMuxInOut(32, 4)
def test_pipe_rsqrt_fp32(self):
dut = FPDIVMuxInOut(32, 4)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.RSqrtRem)
runfp(dut, 32, "test_fprsqrt_pipe_fp32", Float32, rsqrt,
runfp(dut, 32, "test_fprsqrt_pipe_fp32", Float32, rsqrt,
- single_op=True, opcode=
2
, n_vals=100)
+ single_op=True, opcode=
opcode
, n_vals=100)
+ @unittest.skip("rsqrt not implemented for fp64")
def test_pipe_rsqrt_fp64(self):
dut = FPDIVMuxInOut(64, 4)
def test_pipe_rsqrt_fp64(self):
dut = FPDIVMuxInOut(64, 4)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.RSqrtRem)
runfp(dut, 64, "test_fprsqrt_pipe_fp64", Float64, rsqrt,
runfp(dut, 64, "test_fprsqrt_pipe_fp64", Float64, rsqrt,
- single_op=True, opcode=
2
, n_vals=100)
+ single_op=True, opcode=
opcode
, n_vals=100)
if __name__ == '__main__':
if __name__ == '__main__':
diff --git
a/src/ieee754/fpdiv/test/test_fpsqrt_pipe.py
b/src/ieee754/fpdiv/test/test_fpsqrt_pipe.py
index e474ba86d913f37452364b8971eab491bfef874e..7f46d8f45e53b74abc0c4d93cbd152dab01def3d 100644
(file)
--- a/
src/ieee754/fpdiv/test/test_fpsqrt_pipe.py
+++ b/
src/ieee754/fpdiv/test/test_fpsqrt_pipe.py
@@
-3,6
+3,7
@@
from ieee754.fpdiv.pipeline import (FPDIVMuxInOut,)
from ieee754.fpcommon.test.fpmux import runfp
from ieee754.fpdiv.pipeline import (FPDIVMuxInOut,)
from ieee754.fpcommon.test.fpmux import runfp
+from ieee754.div_rem_sqrt_rsqrt.core import DivPipeCoreOperation
import unittest
from sfpy import Float64, Float32, Float16
import unittest
from sfpy import Float64, Float32, Float16
@@
-15,18
+16,24
@@
def sqrt(x):
class TestDivPipe(unittest.TestCase):
def test_pipe_sqrt_fp16(self):
dut = FPDIVMuxInOut(16, 4)
class TestDivPipe(unittest.TestCase):
def test_pipe_sqrt_fp16(self):
dut = FPDIVMuxInOut(16, 4)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.SqrtRem)
runfp(dut, 16, "test_fpsqrt_pipe_fp16", Float16, sqrt,
runfp(dut, 16, "test_fpsqrt_pipe_fp16", Float16, sqrt,
- single_op=True, opcode=
1
, n_vals=100)
+ single_op=True, opcode=
opcode
, n_vals=100)
def test_pipe_sqrt_fp32(self):
dut = FPDIVMuxInOut(32, 4)
def test_pipe_sqrt_fp32(self):
dut = FPDIVMuxInOut(32, 4)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.SqrtRem)
runfp(dut, 32, "test_fpsqrt_pipe_fp32", Float32, sqrt,
runfp(dut, 32, "test_fpsqrt_pipe_fp32", Float32, sqrt,
- single_op=True, opcode=
1
, n_vals=100)
+ single_op=True, opcode=
opcode
, n_vals=100)
def test_pipe_sqrt_fp64(self):
dut = FPDIVMuxInOut(64, 4)
def test_pipe_sqrt_fp64(self):
dut = FPDIVMuxInOut(64, 4)
+ # don't forget to initialize opcode; don't use magic numbers
+ opcode = int(DivPipeCoreOperation.SqrtRem)
runfp(dut, 64, "test_fpsqrt_pipe_fp64", Float64, sqrt,
runfp(dut, 64, "test_fpsqrt_pipe_fp64", Float64, sqrt,
- single_op=True, opcode=
1
, n_vals=100)
+ single_op=True, opcode=
opcode
, n_vals=100)
if __name__ == '__main__':
if __name__ == '__main__':