1 """ test of FPCVTMuxInOut
4 from ieee754
.fsgnj
.pipeline
import (FSGNJMuxInOut
)
5 from ieee754
.fpcommon
.test
.fpmux
import runfp
7 from sfpy
import Float16
, Float32
, Float64
10 def fsgnj_f32_mov(a
, b
):
11 return Float32
.from_bits((a
.bits
& 0x7fffffff) |
(b
.bits
& 0x80000000))
14 def fsgnj_f32_neg(a
, b
):
15 sign
= b
.bits
& 0x80000000
16 sign
= sign ^
0x80000000
17 return Float32
.from_bits((a
.bits
& 0x7fffffff) | sign
)
20 def fsgnj_f32_abs(a
, b
):
21 bsign
= b
.bits
& 0x80000000
22 asign
= a
.bits
& 0x80000000
24 return Float32
.from_bits((a
.bits
& 0x7fffffff) | sign
)
27 def fsgnj_f16_mov(a
, b
):
28 return Float16
.from_bits((a
.bits
& 0x7fff) |
(b
.bits
& 0x8000))
31 def fsgnj_f16_neg(a
, b
):
32 sign
= b
.bits
& 0x8000
34 return Float16
.from_bits((a
.bits
& 0x7fff) | sign
)
37 def fsgnj_f16_abs(a
, b
):
38 bsign
= b
.bits
& 0x8000
39 asign
= a
.bits
& 0x8000
41 return Float16
.from_bits((a
.bits
& 0x7fff) | sign
)
44 def fsgnj_f64_mov(a
, b
):
45 return Float64
.from_bits((a
.bits
& 0x7fffffffffffffff) |
46 (b
.bits
& 0x8000000000000000))
49 def fsgnj_f64_neg(a
, b
):
50 sign
= b
.bits
& 0x8000000000000000
51 sign
= sign ^
0x8000000000000000
52 return Float64
.from_bits((a
.bits
& 0x7fffffffffffffff) | sign
)
55 def fsgnj_f64_abs(a
, b
):
56 bsign
= b
.bits
& 0x8000000000000000
57 asign
= a
.bits
& 0x8000000000000000
59 return Float64
.from_bits((a
.bits
& 0x7fffffffffffffff) | sign
)
62 def test_fsgnj_f32_mov():
63 dut
= FSGNJMuxInOut(32, 4)
64 runfp(dut
, 32, "test_fsgnj_f32_mov", Float32
, fsgnj_f32_mov
,
65 n_vals
=100, opcode
=0x0)
68 def test_fsgnj_f32_neg():
69 dut
= FSGNJMuxInOut(32, 4)
70 runfp(dut
, 32, "test_fsgnj_f32_neg", Float32
, fsgnj_f32_neg
,
71 n_vals
=100, opcode
=0x1)
74 def test_fsgnj_f32_abs():
75 dut
= FSGNJMuxInOut(32, 4)
76 runfp(dut
, 32, "test_fsgnj_f32_abs", Float32
, fsgnj_f32_abs
,
77 n_vals
=100, opcode
=0x2)
80 def test_fsgnj_f16_mov():
81 dut
= FSGNJMuxInOut(16, 4)
82 runfp(dut
, 16, "test_fsgnj_f16_mov", Float16
, fsgnj_f16_mov
,
83 n_vals
=100, opcode
=0x0)
86 def test_fsgnj_f16_neg():
87 dut
= FSGNJMuxInOut(16, 4)
88 runfp(dut
, 16, "test_fsgnj_f16_neg", Float16
, fsgnj_f16_neg
,
89 n_vals
=100, opcode
=0x1)
92 def test_fsgnj_f16_abs():
93 dut
= FSGNJMuxInOut(16, 4)
94 runfp(dut
, 16, "test_fsgnj_f16_abs", Float16
, fsgnj_f16_abs
,
95 n_vals
=100, opcode
=0x2)
98 def test_fsgnj_f64_mov():
99 dut
= FSGNJMuxInOut(64, 4)
100 runfp(dut
, 64, "test_fsgnj_f64_mov", Float64
, fsgnj_f64_mov
,
101 n_vals
=100, opcode
=0x0)
104 def test_fsgnj_f64_neg():
105 dut
= FSGNJMuxInOut(64, 4)
106 runfp(dut
, 64, "test_fsgnj_f64_neg", Float64
, fsgnj_f64_neg
,
107 n_vals
=100, opcode
=0x1)
110 def test_fsgnj_f64_abs():
111 dut
= FSGNJMuxInOut(64, 4)
112 runfp(dut
, 64, "test_fsgnj_f64_abs", Float64
, fsgnj_f64_abs
,
113 n_vals
=100, opcode
=0x2)
116 if __name__
== '__main__':