`SELECT bitShiftLeft(toInt256(-2), number)`

`shift left for negative lhsbers is underfined!`

See https://clickhouse-test-reports.s3.yandex.net/14525/44726c37c3003ec8112dbf32efa350bd595163b3/fuzzer/report.html#fail1
lhs.m_arr[little(i)] = std::numeric_limits<base_type>::max();
            }
        }
        return lhs;
    }
    template <typename T>
    constexpr static wide_integer<Bits, Signed>
    operator_plus_T(const wide_integer<Bits, Signed> & lhs, T rhs) noexcept(is_same<Signed, unsigned>::value)
    {
        if (rhs < 0)
            return _operator_minus_T(lhs, -rhs);
        else
            return _operator_plus_T(lhs, rhs);
    }
private:
    template <typename T>
    constexpr static wide_integer<Bits, Signed>
    _operator_minus_T(const wide_integer<Bits, Signed> & lhs, T rhs) noexcept(is_same<Signed, unsigned>::value)
    {
        wide_integer<Bits, Signed> res = lhs;
        bool is_underflow = false;
        int r_idx = 0;
        for (; static_cast<size_t>(r_idx) < sizeof(T) && r_idx < arr_size; ++r_idx)
        {
            base_type & res_i = res.m_arr[little(r_idx)];
            base_type curr_rhs = (rhs >> (r_idx * CHAR_BIT)) & std::numeric_limits<base_type>::max();
            if (is_underflow)
            {
                --res_i;
                is_underflow = res_i == std::numeric_limits<base_type>::max();