8e497643f473af5765f4f89fd13fed05f3093dde
[ieee754fpu.git] / src / ieee754 / part_ass / passign.py
1 # SPDX-License-Identifier: LGPL-2.1-or-later
2 # See Notices.txt for copyright information
3
4 """
5 Copyright (C) 2021 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
6
7 dynamically-partitionable "assign" class, directly equivalent
8 to nmigen Assign
9
10 See:
11
12 * http://libre-riscv.org/3d_gpu/architecture/dynamic_simd/assign
13 * http://bugs.libre-riscv.org/show_bug.cgi?id=709
14
15 """
16
17
18
19 modcount = 0 # global for now
20 def PAssign(m, val, assign, mask):
21 from ieee754.part_ass.assign import PartitionedAssign # recursion issue
22 global modcount
23 modcount += 1
24 pc = PartitionedAssign(val.shape(), assign, mask)
25 setattr(m.submodules, "pass%d" % modcount, pc)
26 return val.lower().eq(pc.output.lower())
27
28