aboutsummaryrefslogtreecommitdiffstats
path: root/passes/pmgen/split_shiftx.pmg
diff options
context:
space:
mode:
Diffstat (limited to 'passes/pmgen/split_shiftx.pmg')
-rw-r--r--passes/pmgen/split_shiftx.pmg59
1 files changed, 0 insertions, 59 deletions
diff --git a/passes/pmgen/split_shiftx.pmg b/passes/pmgen/split_shiftx.pmg
deleted file mode 100644
index 3aafe1975..000000000
--- a/passes/pmgen/split_shiftx.pmg
+++ /dev/null
@@ -1,59 +0,0 @@
-state <SigSpec> shiftxB
-
-match shiftx
- select shiftx->type == $shiftx
- select param(shiftx, \Y_WIDTH).as_int() > 1
-endmatch
-
-match macc
- select macc->type == $macc
- select param(macc, \B_WIDTH).as_int() == 0
- optional
-endmatch
-
-code shiftxB
- shiftxB = port(shiftx, \B);
-
- if (macc) {
- const int b_width = param(shiftx, \B_WIDTH).as_int();
- if (param(shiftx, \B_SIGNED) != 0 && shiftxB[b_width-1] == RTLIL::S0)
- shiftxB = shiftxB.extract(0, b_width-1);
-
- if (port(macc, \Y) != shiftxB) {
- blacklist(shiftx);
- reject;
- }
-
- Const config = param(macc, \CONFIG);
- const int config_width = param(macc, \CONFIG_WIDTH).as_int();
- const int num_bits = config.extract(0, 4).as_int();
- const int num_ports = (config_width - 4) / (2 + 2*num_bits);
- if (num_ports != 1) {
- blacklist(shiftx);
- reject;
- }
- // IS_SIGNED?
- if (config[4] == 1) {
- blacklist(shiftx);
- reject;
- }
- // DO_SUBTRACT?
- if (config[5] == 1) {
- blacklist(shiftx);
- reject;
- }
- const int port_size_A = config.extract(6, num_bits).as_int();
- const int port_size_B = config.extract(6 + num_bits, num_bits).as_int();
- const SigSpec port_B = port(macc, \A).extract(port_size_A, port_size_B);
- if (!port_B.is_fully_const()) {
- blacklist(shiftx);
- reject;
- }
- const int multiply_factor = port_B.as_int();
- if (multiply_factor != param(shiftx, \Y_WIDTH).as_int()) {
- blacklist(shiftx);
- reject;
- }
- shiftxB = port(macc, \A).extract(0, port_size_A);
- }
-endcode