anchor.diff:  	    //if (shift > 0) begin
   	    if (subnormal) begin
   	       // subnormal
  -	       Bit#(1) sfdlsb = |(sfdres << (fromInteger(valueOf(TAdd#(TAdd#(m,1),TAdd#(m,1)))) - shift));
  -
  -	       //$display("sfdlsb = |'h%x = 'b%b", (sfdres << (fromInteger(valueOf(TAdd#(TAdd#(m,1),TAdd#(m,1)))) - shift)), sfdlsb);
  -
  -               sfdres = sfdres >> shift;
  -               sfdres[0] = sfdres[0] | sfdlsb;
  +	       if (implementSubnormal) begin
  +		  Bit#(1) sfdlsb = |(sfdres << (fromInteger(valueOf(TAdd#(TAdd#(m,1),TAdd#(m,1)))) - shift));
  +
  +		  //$display("sfdlsb = |'h%x = 'b%b", (sfdres << (fromInteger(valueOf(TAdd#(TAdd#(m,1),TAdd#(m,1)))) - shift)), sfdlsb);
  +
  +		  sfdres = sfdres >> shift;
  +		  sfdres[0] = sfdres[0] | sfdlsb;
  +	       end
  +	       else begin
  +		  sfdres = 0;
  +	       end
   
   	       result.exp = 0;
   	    end
  
positive.code: 	       inbounds = True;
  	    end
  	 end
  	 rCond_S3 <= tuple4(sresInvalid, subnormal, inbounds, shift);
        end
     //endrule
  
  
negative.code:    endinterface
  endmodule
  
  
  ////////////////////////////////////////////////////////////////////////////////
  /// Pipelined Floating Point Multiplier
  ////////////////////////////////////////////////////////////////////////////////
  