struct KnownBits

Declaration

struct KnownBits { /* full declaration omitted */ };

Declared at: llvm/include/llvm/Support/KnownBits.h:23

Member Variables

public llvm::APInt Zero
public llvm::APInt One

Method Overview

  • public KnownBits()
  • public KnownBits(unsigned int BitWidth)
  • private KnownBits(llvm::APInt Zero, llvm::APInt One)
  • public llvm::KnownBits abs(bool IntMinIsPoison = false) const
  • public llvm::KnownBits anyext(unsigned int BitWidth) const
  • public llvm::KnownBits anyextOrTrunc(unsigned int BitWidth) const
  • public static llvm::KnownBits ashr(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public llvm::KnownBits byteSwap()
  • public static llvm::KnownBits commonBits(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static llvm::KnownBits computeForAddCarry(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS, const llvm::KnownBits & Carry)
  • public static llvm::KnownBits computeForAddSub(bool Add, bool NSW, const llvm::KnownBits & LHS, llvm::KnownBits RHS)
  • public unsigned int countMaxActiveBits() const
  • public unsigned int countMaxLeadingOnes() const
  • public unsigned int countMaxLeadingZeros() const
  • public unsigned int countMaxPopulation() const
  • public unsigned int countMaxSignificantBits() const
  • public unsigned int countMaxTrailingOnes() const
  • public unsigned int countMaxTrailingZeros() const
  • public unsigned int countMinLeadingOnes() const
  • public unsigned int countMinLeadingZeros() const
  • public unsigned int countMinPopulation() const
  • public unsigned int countMinSignBits() const
  • public unsigned int countMinTrailingOnes() const
  • public unsigned int countMinTrailingZeros() const
  • public void dump() const
  • public static Optional<bool> eq(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public llvm::KnownBits extractBits(unsigned int NumBits, unsigned int BitPosition) const
  • public unsigned int getBitWidth() const
  • public const llvm::APInt & getConstant() const
  • public llvm::APInt getMaxValue() const
  • public llvm::APInt getMinValue() const
  • public llvm::APInt getSignedMaxValue() const
  • public llvm::APInt getSignedMinValue() const
  • public bool hasConflict() const
  • public static bool haveNoCommonBitsSet(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public void insertBits(const llvm::KnownBits & SubBits, unsigned int BitPosition)
  • public bool isAllOnes() const
  • public bool isConstant() const
  • public bool isNegative() const
  • public bool isNonNegative() const
  • public bool isNonZero() const
  • public bool isStrictlyPositive() const
  • public bool isUnknown() const
  • public bool isZero() const
  • public static llvm::KnownBits lshr(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static llvm::KnownBits makeConstant(const llvm::APInt & C)
  • public llvm::KnownBits makeGE(const llvm::APInt & Val) const
  • public void makeNegative()
  • public void makeNonNegative()
  • public static llvm::KnownBits mul(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS, bool NoUndefSelfMultiply = false)
  • public static llvm::KnownBits mulhs(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static llvm::KnownBits mulhu(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static Optional<bool> ne(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public void print(llvm::raw_ostream & OS) const
  • public void resetAll()
  • public llvm::KnownBits reverseBits()
  • public void setAllOnes()
  • public void setAllZero()
  • public llvm::KnownBits sext(unsigned int BitWidth) const
  • public llvm::KnownBits sextInReg(unsigned int SrcBitWidth) const
  • public llvm::KnownBits sextOrTrunc(unsigned int BitWidth) const
  • public static Optional<bool> sge(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static Optional<bool> sgt(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static llvm::KnownBits shl(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static Optional<bool> sle(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static Optional<bool> slt(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static llvm::KnownBits smax(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static llvm::KnownBits smin(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static llvm::KnownBits srem(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public llvm::KnownBits trunc(unsigned int BitWidth) const
  • public static llvm::KnownBits udiv(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static Optional<bool> uge(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static Optional<bool> ugt(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static Optional<bool> ule(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static Optional<bool> ult(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static llvm::KnownBits umax(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static llvm::KnownBits umin(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public static llvm::KnownBits urem(const llvm::KnownBits & LHS, const llvm::KnownBits & RHS)
  • public llvm::KnownBits zext(unsigned int BitWidth) const
  • public llvm::KnownBits zextOrTrunc(unsigned int BitWidth) const

Methods

KnownBits()

Declared at: llvm/include/llvm/Support/KnownBits.h:34

KnownBits(unsigned int BitWidth)

Description

Create a known bits object of BitWidth bits initialized to unknown.

Declared at: llvm/include/llvm/Support/KnownBits.h:37

Parameters

unsigned int BitWidth

KnownBits(llvm::APInt Zero, llvm::APInt One)

Declared at: llvm/include/llvm/Support/KnownBits.h:29

Parameters

llvm::APInt Zero
llvm::APInt One

llvm::KnownBits abs(
    bool IntMinIsPoison = false) const

Description

Compute known bits for the absolute value.

Declared at: llvm/include/llvm/Support/KnownBits.h:408

Parameters

bool IntMinIsPoison = false

llvm::KnownBits anyext(
    unsigned int BitWidth) const

Description

Return known bits for an "any" extension of the value we're tracking, where we don't know anything about the extended bits.

Declared at: llvm/include/llvm/Support/KnownBits.h:158

Parameters

unsigned int BitWidth

llvm::KnownBits anyextOrTrunc(
    unsigned int BitWidth) const

Description

Return known bits for an "any" extension or truncation of the value we're tracking.

Declared at: llvm/include/llvm/Support/KnownBits.h:177

Parameters

unsigned int BitWidth

static llvm::KnownBits ashr(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits for ashr(LHS, RHS). NOTE: RHS (shift amount) bitwidth doesn't need to be the same as LHS.

Declared at: llvm/include/llvm/Support/KnownBits.h:366

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

llvm::KnownBits byteSwap()

Declared at: llvm/include/llvm/Support/KnownBits.h:410

static llvm::KnownBits commonBits(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits common to LHS and RHS.

Declared at: llvm/include/llvm/Support/KnownBits.h:308

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static llvm::KnownBits computeForAddCarry(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS,
    const llvm::KnownBits& Carry)

Description

Compute known bits resulting from adding LHS, RHS and a 1-bit Carry.

Declared at: llvm/include/llvm/Support/KnownBits.h:318

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS
const llvm::KnownBits& Carry

static llvm::KnownBits computeForAddSub(
    bool Add,
    bool NSW,
    const llvm::KnownBits& LHS,
    llvm::KnownBits RHS)

Description

Compute known bits resulting from adding LHS and RHS.

Declared at: llvm/include/llvm/Support/KnownBits.h:322

Parameters

bool Add
bool NSW
const llvm::KnownBits& LHS
llvm::KnownBits RHS

unsigned int countMaxActiveBits() const

Description

Returns the maximum number of bits needed to represent all possible unsigned values with these known bits. This is the inverse of the minimum number of leading zeros.

Declared at: llvm/include/llvm/Support/KnownBits.h:298

unsigned int countMaxLeadingOnes() const

Description

Returns the maximum number of leading one bits possible.

Declared at: llvm/include/llvm/Support/KnownBits.h:281

unsigned int countMaxLeadingZeros() const

Description

Returns the maximum number of leading zero bits possible.

Declared at: llvm/include/llvm/Support/KnownBits.h:276

unsigned int countMaxPopulation() const

Description

Returns the maximum number of bits that could be one.

Declared at: llvm/include/llvm/Support/KnownBits.h:291

unsigned int countMaxSignificantBits() const

Description

Returns the maximum number of bits needed to represent all possible signed values with these known bits. This is the inverse of the minimum number of known sign bits. Examples for bitwidth 5: 110?? --> 4 0000? --> 2

Declared at: llvm/include/llvm/Support/KnownBits.h:261

unsigned int countMaxTrailingOnes() const

Description

Returns the maximum number of trailing one bits possible.

Declared at: llvm/include/llvm/Support/KnownBits.h:271

unsigned int countMaxTrailingZeros() const

Description

Returns the maximum number of trailing zero bits possible.

Declared at: llvm/include/llvm/Support/KnownBits.h:266

unsigned int countMinLeadingOnes() const

Description

Returns the minimum number of leading one bits.

Declared at: llvm/include/llvm/Support/KnownBits.h:241

unsigned int countMinLeadingZeros() const

Description

Returns the minimum number of leading zero bits.

Declared at: llvm/include/llvm/Support/KnownBits.h:236

unsigned int countMinPopulation() const

Description

Returns the number of bits known to be one.

Declared at: llvm/include/llvm/Support/KnownBits.h:286

unsigned int countMinSignBits() const

Description

Returns the number of times the sign bit is replicated into the other bits.

Declared at: llvm/include/llvm/Support/KnownBits.h:247

unsigned int countMinTrailingOnes() const

Description

Returns the minimum number of trailing one bits.

Declared at: llvm/include/llvm/Support/KnownBits.h:231

unsigned int countMinTrailingZeros() const

Description

Returns the minimum number of trailing zero bits.

Declared at: llvm/include/llvm/Support/KnownBits.h:226

void dump() const

Declared at: llvm/include/llvm/Support/KnownBits.h:425

static Optional<bool> eq(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Determine if these known bits always give the same ICMP_EQ result.

Declared at: llvm/include/llvm/Support/KnownBits.h:369

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

llvm::KnownBits extractBits(
    unsigned int NumBits,
    unsigned int BitPosition) const

Description

Return a subset of the known bits from [bitPosition,bitPosition+numBits).

Declared at: llvm/include/llvm/Support/KnownBits.h:216

Parameters

unsigned int NumBits
unsigned int BitPosition

unsigned int getBitWidth() const

Description

Get the bit width of this value.

Declared at: llvm/include/llvm/Support/KnownBits.h:40

const llvm::APInt& getConstant() const

Description

Returns the value when all bits have a known value. This just returns One with a protective assertion.

Declared at: llvm/include/llvm/Support/KnownBits.h:57

llvm::APInt getMaxValue() const

Description

Return the maximal unsigned value possible given these KnownBits.

Declared at: llvm/include/llvm/Support/KnownBits.h:136

llvm::APInt getMinValue() const

Description

Return the minimal unsigned value possible given these KnownBits.

Declared at: llvm/include/llvm/Support/KnownBits.h:120

llvm::APInt getSignedMaxValue() const

Description

Return the maximal signed value possible given these KnownBits.

Declared at: llvm/include/llvm/Support/KnownBits.h:142

llvm::APInt getSignedMinValue() const

Description

Return the minimal signed value possible given these KnownBits.

Declared at: llvm/include/llvm/Support/KnownBits.h:126

bool hasConflict() const

Description

Returns true if there is conflicting information.

Declared at: llvm/include/llvm/Support/KnownBits.h:47

static bool haveNoCommonBitsSet(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Return true if LHS and RHS have no common bits set.

Declared at: llvm/include/llvm/Support/KnownBits.h:313

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

void insertBits(const llvm::KnownBits& SubBits,
                unsigned int BitPosition)

Description

Insert the bits from a smaller known bits starting at bitPosition.

Declared at: llvm/include/llvm/Support/KnownBits.h:210

Parameters

const llvm::KnownBits& SubBits
unsigned int BitPosition

bool isAllOnes() const

Description

Returns true if value is all one bits.

Declared at: llvm/include/llvm/Support/KnownBits.h:78

bool isConstant() const

Description

Returns true if we know the value of all bits.

Declared at: llvm/include/llvm/Support/KnownBits.h:50

bool isNegative() const

Description

Returns true if this value is known to be negative.

Declared at: llvm/include/llvm/Support/KnownBits.h:96

bool isNonNegative() const

Description

Returns true if this value is known to be non-negative.

Declared at: llvm/include/llvm/Support/KnownBits.h:99

bool isNonZero() const

Description

Returns true if this value is known to be non-zero.

Declared at: llvm/include/llvm/Support/KnownBits.h:102

bool isStrictlyPositive() const

Description

Returns true if this value is known to be positive.

Declared at: llvm/include/llvm/Support/KnownBits.h:105

bool isUnknown() const

Description

Returns true if we don't know any bits.

Declared at: llvm/include/llvm/Support/KnownBits.h:63

bool isZero() const

Description

Returns true if value is all zero.

Declared at: llvm/include/llvm/Support/KnownBits.h:72

static llvm::KnownBits lshr(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits for lshr(LHS, RHS). NOTE: RHS (shift amount) bitwidth doesn't need to be the same as LHS.

Declared at: llvm/include/llvm/Support/KnownBits.h:362

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static llvm::KnownBits makeConstant(
    const llvm::APInt& C)

Description

Create known bits from a known constant.

Declared at: llvm/include/llvm/Support/KnownBits.h:303

Parameters

const llvm::APInt& C

llvm::KnownBits makeGE(
    const llvm::APInt& Val) const

Description

Return KnownBits based on this, but updated given that the underlying value is known to be greater than or equal to Val.

Declared at: llvm/include/llvm/Support/KnownBits.h:223

Parameters

const llvm::APInt& Val

void makeNegative()

Description

Make this value negative.

Declared at: llvm/include/llvm/Support/KnownBits.h:110

void makeNonNegative()

Description

Make this value non-negative.

Declared at: llvm/include/llvm/Support/KnownBits.h:115

static llvm::KnownBits mul(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS,
    bool NoUndefSelfMultiply = false)

Description

Compute known bits resulting from multiplying LHS and RHS.

Declared at: llvm/include/llvm/Support/KnownBits.h:326

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS
bool NoUndefSelfMultiply = false

static llvm::KnownBits mulhs(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits from sign-extended multiply-hi.

Declared at: llvm/include/llvm/Support/KnownBits.h:330

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static llvm::KnownBits mulhu(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits from zero-extended multiply-hi.

Declared at: llvm/include/llvm/Support/KnownBits.h:333

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static Optional<bool> ne(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Determine if these known bits always give the same ICMP_NE result.

Declared at: llvm/include/llvm/Support/KnownBits.h:372

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

void print(llvm::raw_ostream& OS) const

Declared at: llvm/include/llvm/Support/KnownBits.h:424

Parameters

llvm::raw_ostream& OS

void resetAll()

Description

Resets the known state of all bits.

Declared at: llvm/include/llvm/Support/KnownBits.h:66

llvm::KnownBits reverseBits()

Declared at: llvm/include/llvm/Support/KnownBits.h:414

void setAllOnes()

Description

Make all bits known to be one and discard any previous information.

Declared at: llvm/include/llvm/Support/KnownBits.h:90

void setAllZero()

Description

Make all bits known to be zero and discard any previous information.

Declared at: llvm/include/llvm/Support/KnownBits.h:84

llvm::KnownBits sext(unsigned int BitWidth) const

Description

Return known bits for a sign extension of the value we're tracking.

Declared at: llvm/include/llvm/Support/KnownBits.h:171

Parameters

unsigned int BitWidth

llvm::KnownBits sextInReg(
    unsigned int SrcBitWidth) const

Description

Return known bits for a in-register sign extension of the value we're tracking.

Declared at: llvm/include/llvm/Support/KnownBits.h:207

Parameters

unsigned int SrcBitWidth

llvm::KnownBits sextOrTrunc(
    unsigned int BitWidth) const

Description

Return known bits for a sign extension or truncation of the value we're tracking.

Declared at: llvm/include/llvm/Support/KnownBits.h:197

Parameters

unsigned int BitWidth

static Optional<bool> sge(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Determine if these known bits always give the same ICMP_SGE result.

Declared at: llvm/include/llvm/Support/KnownBits.h:390

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static Optional<bool> sgt(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Determine if these known bits always give the same ICMP_SGT result.

Declared at: llvm/include/llvm/Support/KnownBits.h:387

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static llvm::KnownBits shl(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits for shl(LHS, RHS). NOTE: RHS (shift amount) bitwidth doesn't need to be the same as LHS.

Declared at: llvm/include/llvm/Support/KnownBits.h:358

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static Optional<bool> sle(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Determine if these known bits always give the same ICMP_SLE result.

Declared at: llvm/include/llvm/Support/KnownBits.h:396

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static Optional<bool> slt(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Determine if these known bits always give the same ICMP_SLT result.

Declared at: llvm/include/llvm/Support/KnownBits.h:393

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static llvm::KnownBits smax(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits for smax(LHS, RHS).

Declared at: llvm/include/llvm/Support/KnownBits.h:351

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static llvm::KnownBits smin(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits for smin(LHS, RHS).

Declared at: llvm/include/llvm/Support/KnownBits.h:354

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static llvm::KnownBits srem(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits for srem(LHS, RHS).

Declared at: llvm/include/llvm/Support/KnownBits.h:342

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

llvm::KnownBits trunc(unsigned int BitWidth) const

Description

Return known bits for a truncation of the value we're tracking.

Declared at: llvm/include/llvm/Support/KnownBits.h:152

Parameters

unsigned int BitWidth

static llvm::KnownBits udiv(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits for udiv(LHS, RHS).

Declared at: llvm/include/llvm/Support/KnownBits.h:336

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static Optional<bool> uge(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Determine if these known bits always give the same ICMP_UGE result.

Declared at: llvm/include/llvm/Support/KnownBits.h:378

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static Optional<bool> ugt(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Determine if these known bits always give the same ICMP_UGT result.

Declared at: llvm/include/llvm/Support/KnownBits.h:375

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static Optional<bool> ule(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Determine if these known bits always give the same ICMP_ULE result.

Declared at: llvm/include/llvm/Support/KnownBits.h:384

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static Optional<bool> ult(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Determine if these known bits always give the same ICMP_ULT result.

Declared at: llvm/include/llvm/Support/KnownBits.h:381

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static llvm::KnownBits umax(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits for umax(LHS, RHS).

Declared at: llvm/include/llvm/Support/KnownBits.h:345

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static llvm::KnownBits umin(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits for umin(LHS, RHS).

Declared at: llvm/include/llvm/Support/KnownBits.h:348

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

static llvm::KnownBits urem(
    const llvm::KnownBits& LHS,
    const llvm::KnownBits& RHS)

Description

Compute known bits for urem(LHS, RHS).

Declared at: llvm/include/llvm/Support/KnownBits.h:339

Parameters

const llvm::KnownBits& LHS
const llvm::KnownBits& RHS

llvm::KnownBits zext(unsigned int BitWidth) const

Description

Return known bits for a zero extension of the value we're tracking.

Declared at: llvm/include/llvm/Support/KnownBits.h:163

Parameters

unsigned int BitWidth

llvm::KnownBits zextOrTrunc(
    unsigned int BitWidth) const

Description

Return known bits for a zero extension or truncation of the value we're tracking.

Declared at: llvm/include/llvm/Support/KnownBits.h:187

Parameters

unsigned int BitWidth