Make one check $shift(x)? only; change testcase to be 8b
authorEddie Hung <eddie@fpgeh.com>
Sat, 7 Sep 2019 05:48:23 +0000 (22:48 -0700)
committerEddie Hung <eddie@fpgeh.com>
Sat, 7 Sep 2019 05:48:23 +0000 (22:48 -0700)
passes/pmgen/peepopt_shiftmul.pmg
tests/various/peepopt.ys

index d4748ae19e4fd9e9980cd3d777b64a094fd7bb65..e1da5218291d7d9666fc5fe6dc2dc6c8f95106c6 100644 (file)
@@ -50,8 +50,9 @@ code
        if (GetSize(const_factor_cnst) > 20)
                reject;
 
-       if (GetSize(port(shift, \Y)) > const_factor)
-               reject;
+       if (shift->type.in($shift, $shiftx))
+               if (GetSize(port(shift, \Y)) > const_factor)
+                       reject;
 
        int factor_bits = ceil_log2(const_factor);
        SigSpec mul_din = port(mul, const_factor_port == \A ? \B : \A);
index a476133a234bfcfdb620bd93039cf7a3d5b4b3ba..dcf3cacbdc4c508be16b588437c222ecd82fbc0e 100644 (file)
@@ -16,7 +16,7 @@ select -assert-count 0 t:$shiftx t:* %D
 design -reset
 read_verilog <<EOT
 module peepopt_shiftmul_1 (output [7:0] y, input [2:0] w);
-assign y = 1'b1 >> (w * (3'b110));
+assign y = 1'b1 >> (w * (8'b110));
 endmodule
 EOT
 
@@ -25,7 +25,7 @@ equiv_opt -assert peepopt
 design -load postopt
 clean
 select -assert-count 1 t:$shr
-select -assert-count 1 t:$mul
+select -assert-count 0 t:$mul
 select -assert-count 0 t:$shr t:$mul %% t:* %D
 
 ####################